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:
authorJustin Velluppillai <justin@innocraft.com>2022-03-14 03:58:33 +0300
committerJustin Velluppillai <justin@innocraft.com>2022-03-14 03:58:33 +0300
commit185996d2bade0301d8fbf59c3783b6dd6d8ad4ea (patch)
tree96dffa9052c327ec5468bd37391fa655f32003f2
parent685944e58b2521a7548504a26bd41ab2228077d3 (diff)
parentb183ce903f3e24c97ad929c77aff99e1ef93ab11 (diff)
Merge branch '4.x-dev' into j-17892j-17892
-rw-r--r--.eslintignore3
-rw-r--r--.github/scripts/build-package.sh255
-rw-r--r--.github/scripts/clean-build.sh230
-rw-r--r--.github/workflows/release.yml158
-rw-r--r--composer.json2
-rw-r--r--composer.lock187
-rw-r--r--core/Archive.php10
-rw-r--r--core/Archive/ArchiveInvalidator.php1
-rw-r--r--core/Archive/DataTableFactory.php1
-rw-r--r--core/ArchiveProcessor/ArchivingStatus.php2
-rw-r--r--core/ArchiveProcessor/Parameters.php3
-rw-r--r--core/ArchiveProcessor/Rules.php3
-rw-r--r--core/AssetManager.php46
-rw-r--r--core/AssetManager/UIAsset.php1
-rw-r--r--core/AssetManager/UIAssetFetcher/Chunk.php69
-rw-r--r--core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php64
-rw-r--r--core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php272
-rw-r--r--core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php1
-rw-r--r--core/Changes/Model.php1
-rw-r--r--core/CliMulti/Output.php1
-rw-r--r--core/CliMulti/OutputInterface.php3
-rw-r--r--core/CliMulti/StaticOutput.php2
-rw-r--r--core/Columns/Dimension.php1
-rw-r--r--core/Columns/Discriminator.php1
-rw-r--r--core/Common.php1
-rw-r--r--core/Cookie.php5
-rw-r--r--core/CronArchive.php2
-rw-r--r--core/CronArchive/QueueConsumer.php4
-rw-r--r--core/CronArchive/SegmentArchiving.php1
-rw-r--r--core/DataAccess/ArchiveSelector.php1
-rw-r--r--core/DataAccess/LogAggregator.php21
-rw-r--r--core/DataTable.php1
-rw-r--r--core/DataTable/Map.php1
-rw-r--r--core/DataTable/Row.php1
-rw-r--r--core/Db.php3
-rw-r--r--core/Db/Adapter/Mysqli.php4
-rw-r--r--core/Db/Adapter/Pdo/Mysql.php4
-rw-r--r--core/Db/TransactionLevel.php18
-rw-r--r--core/DeviceDetector/DeviceDetectorFactory.php1
-rw-r--r--core/Exception/NotYetInstalledException.php2
-rw-r--r--core/Filesystem.php23
-rw-r--r--core/Http/ControllerResolver.php1
-rw-r--r--core/Mail/Transport.php1
-rw-r--r--core/Metrics.php1
-rw-r--r--core/Piwik.php30
-rw-r--r--core/Plugin/Controller.php25
-rw-r--r--core/Plugin/Manager.php1
-rw-r--r--core/Plugin/MetadataLoader.php1
-rw-r--r--core/Plugin/Visualization.php36
-rw-r--r--core/ProfessionalServices/Advertising.php1
-rw-r--r--core/ReportRenderer/Html.php1
-rw-r--r--core/ReportRenderer/Pdf.php1
-rw-r--r--core/Session.php6
-rw-r--r--core/Session/SessionAuth.php2
-rw-r--r--core/Session/SessionFingerprint.php1
-rw-r--r--core/SupportedBrowser.php1
-rw-r--r--core/Tracker/Cache.php1
-rw-r--r--core/Tracker/Db.php3
-rw-r--r--core/Tracker/Db/Pdo/Mysql.php1
-rw-r--r--core/Tracker/FingerprintSalt.php6
-rw-r--r--core/Tracker/GoalManager.php5
-rw-r--r--core/Tracker/Request.php2
-rw-r--r--core/Updater/Migration/Custom.php2
-rw-r--r--core/Updater/Migration/Db/DropColumns.php1
-rw-r--r--core/Updates/4.0.0-b1.php1
-rw-r--r--core/Updates/4.0.0-rc3.php1
-rw-r--r--core/Updates/4.0.0-rc4.php1
-rw-r--r--core/Updates/4.0.1-b1.php6
-rw-r--r--core/Updates/4.1.2-b2.php6
-rw-r--r--core/Updates/4.3.0-b3.php3
-rw-r--r--core/Updates/4.3.0-b4.php1
-rw-r--r--core/Updates/4.3.0-rc2.php3
-rw-r--r--core/Updates/4.5.0-b1.php1
-rw-r--r--core/Updates/4.6.0-b1.php1
-rw-r--r--core/Url.php4
-rw-r--r--core/UrlHelper.php2
-rw-r--r--core/Validators/CharacterLength.php1
-rw-r--r--core/Version.php2
-rw-r--r--core/View.php4
-rw-r--r--core/View/HtmlReportEmailHeaderView.php1
-rw-r--r--js/piwik.js8
-rw-r--r--js/piwik.min.js4
-rw-r--r--lang/ca.json226
-rw-r--r--lang/da.json7
-rw-r--r--lang/de.json1
-rw-r--r--lang/fa.json12
-rw-r--r--lang/fi.json2
-rw-r--r--lang/fr.json230
-rw-r--r--lang/id.json63
-rw-r--r--lang/it.json1
-rw-r--r--lang/ja.json1
-rw-r--r--lang/nb.json1
-rw-r--r--lang/pt-br.json1
-rw-r--r--lang/ru.json35
-rw-r--r--lang/sq.json197
-rw-r--r--lang/sv.json17
-rw-r--r--lang/zh-cn.json1
-rw-r--r--matomo.js4
-rw-r--r--phpcs.xml12
-rw-r--r--piwik.js4
-rw-r--r--piwik.min.js72
-rw-r--r--plugins/API/API.php4
-rw-r--r--plugins/API/Controller.php1
-rw-r--r--plugins/API/Filter/DataComparisonFilter.php39
-rw-r--r--plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php1
-rw-r--r--plugins/API/ProcessedReport.php1
-rw-r--r--plugins/API/lang/ar.json7
-rw-r--r--plugins/API/lang/be.json3
-rw-r--r--plugins/API/lang/bg.json3
-rw-r--r--plugins/API/lang/bs.json3
-rw-r--r--plugins/API/lang/ca.json20
-rw-r--r--plugins/API/lang/cs.json13
-rw-r--r--plugins/API/lang/da.json11
-rw-r--r--plugins/API/lang/es-ar.json13
-rw-r--r--plugins/API/lang/es.json11
-rw-r--r--plugins/API/lang/fi.json9
-rw-r--r--plugins/API/lang/he.json3
-rw-r--r--plugins/API/lang/hi.json3
-rw-r--r--plugins/API/lang/hr.json3
-rw-r--r--plugins/API/lang/hu.json3
-rw-r--r--plugins/API/lang/id.json18
-rw-r--r--plugins/API/lang/is.json3
-rw-r--r--plugins/API/lang/it.json13
-rw-r--r--plugins/API/lang/ka.json3
-rw-r--r--plugins/API/lang/ko.json9
-rw-r--r--plugins/API/lang/lt.json3
-rw-r--r--plugins/API/lang/nl.json1
-rw-r--r--plugins/API/lang/pl.json11
-rw-r--r--plugins/API/lang/pt-br.json16
-rw-r--r--plugins/API/lang/pt.json1
-rw-r--r--plugins/API/lang/ro.json7
-rw-r--r--plugins/API/lang/ru.json11
-rw-r--r--plugins/API/lang/sl.json3
-rw-r--r--plugins/API/lang/sq.json24
-rw-r--r--plugins/API/lang/sr.json7
-rw-r--r--plugins/API/lang/sv.json13
-rw-r--r--plugins/API/lang/th.json3
-rw-r--r--plugins/API/lang/tl.json4
-rw-r--r--plugins/API/lang/uk.json1
-rw-r--r--plugins/API/lang/vi.json7
-rw-r--r--plugins/API/lang/zh-cn.json1
-rw-r--r--plugins/API/lang/zh-tw.json13
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml2
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml4
-rw-r--r--plugins/API/tests/Unit/WidgetMetadataTest.php3
-rw-r--r--plugins/Actions/Archiver.php1
-rw-r--r--plugins/Actions/Categories/SiteSearchSubcategory.php2
-rw-r--r--plugins/Actions/Columns/DestinationPage.php1
-rw-r--r--plugins/Actions/Columns/ExitPageUrl.php1
-rw-r--r--plugins/Actions/Columns/IdPageview.php1
-rw-r--r--plugins/Actions/Columns/Keyword.php1
-rw-r--r--plugins/Actions/Columns/KeywordwithNoSearchResult.php1
-rw-r--r--plugins/Actions/Columns/PageUrl.php1
-rw-r--r--plugins/Actions/Columns/PageViewPosition.php2
-rw-r--r--plugins/Actions/Columns/SearchDestinationPage.php1
-rw-r--r--plugins/Actions/Columns/SearchNoResultKeyword.php1
-rw-r--r--plugins/Actions/Columns/VisitTotalInteractions.php1
-rw-r--r--plugins/Actions/DataTable/Filter/Actions.php1
-rw-r--r--plugins/Actions/Reports/GetEntryPageUrls.php2
-rw-r--r--plugins/Actions/Reports/GetExitPageUrls.php2
-rw-r--r--plugins/Actions/VisitorDetails.php5
-rw-r--r--plugins/Actions/javascripts/actionsDataTable.js4
-rw-r--r--plugins/Actions/lang/ca.json87
-rw-r--r--plugins/Actions/lang/id.json66
-rw-r--r--plugins/Actions/lang/sq.json92
-rw-r--r--plugins/Annotations/API.php3
-rw-r--r--plugins/Annotations/lang/ca.json10
-rw-r--r--plugins/Annotations/lang/fa.json14
-rw-r--r--plugins/Annotations/lang/sq.json6
m---------plugins/Bandwidth0
-rw-r--r--plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php1
-rw-r--r--plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php2
-rw-r--r--plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php1
-rw-r--r--plugins/BulkTracking/tests/Integration/BulkTrackingTest.php1
-rw-r--r--plugins/BulkTracking/tests/Integration/RequestsTest.php2
-rw-r--r--plugins/BulkTracking/tests/Integration/TrackerTest.php1
-rw-r--r--plugins/Contents/API.php2
-rw-r--r--plugins/Contents/Actions/ActionContent.php1
-rw-r--r--plugins/Contents/Archiver.php1
-rw-r--r--plugins/Contents/Categories/ContentsSubcategory.php2
-rw-r--r--plugins/Contents/lang/ca.json22
-rw-r--r--plugins/Contents/lang/nb.json2
-rw-r--r--plugins/Contents/lang/sq.json24
-rw-r--r--plugins/Contents/lang/tl.json9
-rw-r--r--plugins/CoreAdminHome/API.php1
-rw-r--r--plugins/CoreAdminHome/Commands/InvalidateReportData.php3
-rw-r--r--plugins/CoreAdminHome/Commands/MigrateTokenAuths.php4
-rw-r--r--plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php1
-rw-r--r--plugins/CoreAdminHome/CoreAdminHome.php3
-rw-r--r--plugins/CoreAdminHome/Tasks.php3
-rw-r--r--plugins/CoreAdminHome/lang/ca.json141
-rw-r--r--plugins/CoreAdminHome/lang/cs.json122
-rw-r--r--plugins/CoreAdminHome/lang/da.json118
-rw-r--r--plugins/CoreAdminHome/lang/el.json1
-rw-r--r--plugins/CoreAdminHome/lang/en.json1
-rw-r--r--plugins/CoreAdminHome/lang/es-ar.json158
-rw-r--r--plugins/CoreAdminHome/lang/es.json148
-rw-r--r--plugins/CoreAdminHome/lang/fi.json6
-rw-r--r--plugins/CoreAdminHome/lang/fr.json144
-rw-r--r--plugins/CoreAdminHome/lang/hi.json18
-rw-r--r--plugins/CoreAdminHome/lang/hu.json44
-rw-r--r--plugins/CoreAdminHome/lang/it.json2
-rw-r--r--plugins/CoreAdminHome/lang/nb.json8
-rw-r--r--plugins/CoreAdminHome/lang/nl.json122
-rw-r--r--plugins/CoreAdminHome/lang/pl.json2
-rw-r--r--plugins/CoreAdminHome/lang/pt-br.json19
-rw-r--r--plugins/CoreAdminHome/lang/ru.json142
-rw-r--r--plugins/CoreAdminHome/lang/sk.json28
-rw-r--r--plugins/CoreAdminHome/lang/sl.json10
-rw-r--r--plugins/CoreAdminHome/lang/sq.json195
-rw-r--r--plugins/CoreAdminHome/lang/sr.json46
-rw-r--r--plugins/CoreAdminHome/lang/sv.json2
-rw-r--r--plugins/CoreAdminHome/lang/tl.json19
-rw-r--r--plugins/CoreAdminHome/lang/uk.json2
-rw-r--r--plugins/CoreAdminHome/lang/zh-tw.json2
-rw-r--r--plugins/CoreAdminHome/templates/trackingCodeGenerator.twig6
-rw-r--r--plugins/CoreAdminHome/tests/Framework/Mock/API.php1
-rw-r--r--plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php2
-rw-r--r--plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php1
-rw-r--r--plugins/CoreAdminHome/tests/Integration/TasksTest.php3
-rw-r--r--plugins/CoreConsole/Commands/ComputeJsAssetSize.php65
-rw-r--r--plugins/CoreConsole/Commands/DevelopmentEnable.php1
-rw-r--r--plugins/CoreConsole/Commands/GenerateDimension.php1
-rw-r--r--plugins/CoreHome/Categories/VisitorsCategory.php1
-rw-r--r--plugins/CoreHome/Columns/Metrics/ConversionRate.php1
-rw-r--r--plugins/CoreHome/Columns/Metrics/VisitsPercent.php1
-rw-r--r--plugins/CoreHome/Columns/UserId.php2
-rw-r--r--plugins/CoreHome/Columns/VisitGoalBuyer.php1
-rw-r--r--plugins/CoreHome/Columns/VisitTotalTime.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorId.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php1
-rw-r--r--plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php1
-rw-r--r--plugins/CoreHome/Controller.php1
-rw-r--r--plugins/CoreHome/Menu.php2
-rw-r--r--plugins/CoreHome/Tracker/VisitRequestProcessor.php1
-rw-r--r--plugins/CoreHome/Widgets/GetDonateForm.php1
-rw-r--r--plugins/CoreHome/Widgets/GetSystemSummary.php1
-rw-r--r--plugins/CoreHome/javascripts/dataTable.js10
-rw-r--r--plugins/CoreHome/javascripts/sparkline.js38
-rw-r--r--plugins/CoreHome/lang/ca.json111
-rw-r--r--plugins/CoreHome/lang/fi.json111
-rw-r--r--plugins/CoreHome/lang/it.json10
-rw-r--r--plugins/CoreHome/lang/pt-br.json3
-rw-r--r--plugins/CoreHome/lang/sq.json180
-rw-r--r--plugins/CoreHome/lang/ta.json8
-rw-r--r--plugins/CoreHome/lang/zh-cn.json3
-rw-r--r--plugins/CoreHome/templates/_dataTable.twig2
-rw-r--r--plugins/CoreHome/tests/Integration/Column/UserIdTest.php2
-rw-r--r--plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php9
-rw-r--r--plugins/CoreHome/tests/UI/SingleMetricView_spec.js6
-rw-r--r--plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_formatted_metric.png4
-rw-r--r--plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_goal_metric.png4
-rw-r--r--plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_loaded.png4
-rw-r--r--plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_range.png4
-rw-r--r--plugins/CoreHome/tests/Unit/EvolutionMetricTest.php1
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js347
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js154
-rw-r--r--plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts26
-rw-r--r--plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts1
-rw-r--r--plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue3
-rw-r--r--plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts8
-rw-r--r--plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.ts2
-rw-r--r--plugins/CoreHome/vue/src/FieldArray/FieldArray.vue2
-rw-r--r--plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts2
-rw-r--r--plugins/CoreHome/vue/src/FocusIf/FocusIf.ts1
-rw-r--r--plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts12
-rw-r--r--plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue8
-rw-r--r--plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue2
-rw-r--r--plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts4
-rw-r--r--plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue27
-rw-r--r--plugins/CoreHome/vue/src/ReportingPages/ReportingPages.store.ts2
-rw-r--r--plugins/CoreHome/vue/src/SelectOnFocus/SelectOnFocus.ts2
-rw-r--r--plugins/CoreHome/vue/src/Tooltips/Tooltips.ts15
-rw-r--r--plugins/CoreHome/vue/src/Widget/Widget.vue6
-rw-r--r--plugins/CoreHome/vue/src/Widget/Widgets.store.ts31
-rw-r--r--plugins/CoreHome/vue/src/Widget/types.ts37
-rw-r--r--plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts2
-rw-r--r--plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue4
-rw-r--r--plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue2
-rw-r--r--plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue1
-rw-r--r--plugins/CoreHome/vue/src/index.ts9
-rw-r--r--plugins/CorePluginsAdmin/API.php1
-rw-r--r--plugins/CorePluginsAdmin/Controller.php2
-rw-r--r--plugins/CorePluginsAdmin/Menu.php1
-rw-r--r--plugins/CorePluginsAdmin/lang/ca.json91
-rw-r--r--plugins/CorePluginsAdmin/lang/nb.json1
-rw-r--r--plugins/CorePluginsAdmin/lang/sq.json82
-rw-r--r--plugins/CorePluginsAdmin/tests/Integration/ApiTest.php1
-rw-r--r--plugins/CorePluginsAdmin/tests/UI/expected-screenshots/TagManagerTeaser_admin_page_disable.png4
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js261
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js12
-rw-r--r--plugins/CorePluginsAdmin/vue/src/Field/Field.vue6
-rw-r--r--plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue2
-rw-r--r--plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue33
-rw-r--r--plugins/CoreUpdater/Commands/Update.php1
-rw-r--r--plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php1
-rw-r--r--plugins/CoreUpdater/Updater.php4
-rw-r--r--plugins/CoreUpdater/lang/ca.json124
-rw-r--r--plugins/CoreUpdater/lang/de.json1
-rw-r--r--plugins/CoreUpdater/lang/fr.json6
-rw-r--r--plugins/CoreUpdater/lang/it.json4
-rw-r--r--plugins/CoreUpdater/lang/nb.json3
-rw-r--r--plugins/CoreUpdater/lang/pt-br.json1
-rw-r--r--plugins/CoreUpdater/lang/sq.json103
-rw-r--r--plugins/CoreUpdater/lang/tl.json13
-rw-r--r--plugins/CoreUpdater/lang/ur.json15
-rw-r--r--plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php1
-rw-r--r--plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php2
-rw-r--r--plugins/CoreVisualizations/CoreVisualizations.php6
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator.php3
-rw-r--r--plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/Cloud.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/Graph.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/JqplotGraph.php2
-rw-r--r--plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparkline.php1
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines.php17
-rw-r--r--plugins/CoreVisualizations/Visualizations/Sparklines/Config.php1
-rw-r--r--plugins/CoreVisualizations/Widgets/SingleMetricView.php1
-rw-r--r--plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.html53
-rw-r--r--plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.js142
-rw-r--r--plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.less28
-rw-r--r--plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.html20
-rw-r--r--plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.js279
-rw-r--r--plugins/CoreVisualizations/javascripts/seriesPicker.js73
-rw-r--r--plugins/CoreVisualizations/stylesheets/jqplot.css1
-rw-r--r--plugins/CoreVisualizations/templates/macros.twig6
-rw-r--r--plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.js790
-rw-r--r--plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.min.js14
-rw-r--r--plugins/CoreVisualizations/vue/dist/umd.metadata.json5
-rw-r--r--plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.adapter.ts36
-rw-r--r--plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.less30
-rw-r--r--plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue192
-rw-r--r--plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.adapter.ts42
-rw-r--r--plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.less (renamed from plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.less)5
-rw-r--r--plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue410
-rw-r--r--plugins/CoreVisualizations/vue/src/index.ts12
-rw-r--r--plugins/CoreVue/Commands/Build.php7
-rw-r--r--plugins/CoreVue/Commands/BuildPolyfill.php3
-rw-r--r--plugins/CoreVue/Commands/GenerateVueComponent.php1
-rw-r--r--plugins/CoreVue/polyfills/dist/MatomoPolyfills.js71
-rw-r--r--plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js8
-rw-r--r--plugins/CoreVue/polyfills/src/index.ts18
-rw-r--r--plugins/CoreVue/types/index.d.ts6
m---------plugins/CustomAlerts0
-rw-r--r--plugins/CustomDimensions/API.php2
-rw-r--r--plugins/CustomDimensions/Archiver.php4
-rw-r--r--plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php2
-rw-r--r--plugins/CustomDimensions/Commands/AddCustomDimension.php1
-rw-r--r--plugins/CustomDimensions/Commands/Info.php2
-rw-r--r--plugins/CustomDimensions/Commands/RemoveCustomDimension.php1
-rw-r--r--plugins/CustomDimensions/Controller.php2
-rw-r--r--plugins/CustomDimensions/Dao/AutoSuggest.php2
-rw-r--r--plugins/CustomDimensions/Dao/Configuration.php1
-rw-r--r--plugins/CustomDimensions/Dao/LogTable.php1
-rw-r--r--plugins/CustomDimensions/DataArray.php1
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php1
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php2
-rw-r--r--plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php1
-rw-r--r--plugins/CustomDimensions/Dimension/Extraction.php2
-rw-r--r--plugins/CustomDimensions/Dimension/Scope.php1
-rw-r--r--plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php1
-rw-r--r--plugins/CustomDimensions/Updates/0.1.2.php1
-rw-r--r--plugins/CustomDimensions/VisitorDetails.php1
-rw-r--r--plugins/CustomDimensions/lang/ca.json45
-rw-r--r--plugins/CustomDimensions/lang/id.json3
-rw-r--r--plugins/CustomDimensions/lang/nb.json1
-rw-r--r--plugins/CustomDimensions/lang/sq.json18
-rw-r--r--plugins/CustomDimensions/lang/zh-cn.json54
-rw-r--r--plugins/CustomDimensions/lang/zh-tw.json54
-rw-r--r--plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php1
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml12
-rw-r--r--plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_action_subtable_segmented_visitor_log.png4
-rw-r--r--plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_actions_segmented_visitorlog.png4
-rw-r--r--plugins/CustomJsTracker/Commands/UpdateTracker.php1
-rw-r--r--plugins/CustomJsTracker/lang/ca.json9
-rw-r--r--plugins/CustomJsTracker/lang/id.json2
-rw-r--r--plugins/CustomJsTracker/lang/sq.json8
m---------plugins/CustomVariables0
-rw-r--r--plugins/DBStats/DBStats.php2
-rw-r--r--plugins/DBStats/MySQLMetadataProvider.php1
-rw-r--r--plugins/DBStats/Reports/GetAdminDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetIndividualMetricsSummary.php2
-rw-r--r--plugins/DBStats/Reports/GetIndividualReportsSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetMetricDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetMetricDataSummaryByYear.php1
-rw-r--r--plugins/DBStats/Reports/GetReportDataSummary.php1
-rw-r--r--plugins/DBStats/Reports/GetReportDataSummaryByYear.php1
-rw-r--r--plugins/DBStats/Reports/GetTrackerDataSummary.php1
-rw-r--r--plugins/DBStats/lang/ca.json9
-rw-r--r--plugins/DBStats/lang/id.json8
-rw-r--r--plugins/DBStats/lang/sq.json16
-rw-r--r--plugins/Dashboard/API.php14
-rw-r--r--plugins/Dashboard/Controller.php1
-rw-r--r--plugins/Dashboard/Dashboard.php2
-rw-r--r--plugins/Dashboard/Menu.php1
-rw-r--r--plugins/Dashboard/angularjs/common/services/dashboards-model.js70
-rw-r--r--plugins/Dashboard/angularjs/dashboard/dashboard.directive.js113
-rw-r--r--plugins/Dashboard/javascripts/dashboard.js8
-rw-r--r--plugins/Dashboard/javascripts/dashboardObject.js4
-rw-r--r--plugins/Dashboard/javascripts/widgetMenu.js54
-rw-r--r--plugins/Dashboard/lang/ca.json10
-rw-r--r--plugins/Dashboard/lang/id.json5
-rw-r--r--plugins/Dashboard/lang/sq.json20
-rw-r--r--plugins/Dashboard/tests/Integration/APITest.php86
-rw-r--r--plugins/Dashboard/tests/UI/DashboardManager_spec.js3
-rw-r--r--plugins/Dashboard/tests/UI/Dashboard_spec.js8
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png4
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png4
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png4
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_reset.png4
-rw-r--r--plugins/Dashboard/vue/dist/Dashboard.umd.js431
-rw-r--r--plugins/Dashboard/vue/dist/Dashboard.umd.min.js27
-rw-r--r--plugins/Dashboard/vue/dist/umd.metadata.json5
-rw-r--r--plugins/Dashboard/vue/src/Dashboard/Dashboard.adapter.ts44
-rw-r--r--plugins/Dashboard/vue/src/Dashboard/Dashboard.store.adapter.ts10
-rw-r--r--plugins/Dashboard/vue/src/Dashboard/Dashboard.store.ts76
-rw-r--r--plugins/Dashboard/vue/src/Dashboard/Dashboard.ts137
-rw-r--r--plugins/Dashboard/vue/src/index.ts12
-rw-r--r--plugins/Dashboard/vue/src/types.ts28
m---------plugins/DeviceDetectorCache0
-rw-r--r--plugins/DevicePlugins/Columns/Plugin.php1
-rw-r--r--plugins/DevicePlugins/lang/ca.json5
-rw-r--r--plugins/DevicePlugins/lang/id.json4
-rw-r--r--plugins/DevicePlugins/lang/sq.json4
-rw-r--r--plugins/DevicesDetection/Columns/BrowserName.php1
-rw-r--r--plugins/DevicesDetection/Columns/DeviceModel.php1
-rw-r--r--plugins/DevicesDetection/Columns/DeviceType.php1
-rw-r--r--plugins/DevicesDetection/Columns/Os.php1
-rw-r--r--plugins/DevicesDetection/Controller.php2
-rw-r--r--plugins/DevicesDetection/Reports/Base.php1
-rw-r--r--plugins/DevicesDetection/Reports/GetType.php1
-rw-r--r--plugins/DevicesDetection/Updates/1.14.php1
-rw-r--r--plugins/DevicesDetection/lang/ca.json53
-rw-r--r--plugins/DevicesDetection/lang/nb.json8
-rw-r--r--plugins/DevicesDetection/lang/ro.json28
-rw-r--r--plugins/DevicesDetection/lang/sq.json69
-rw-r--r--plugins/DevicesDetection/lang/tl.json23
-rw-r--r--plugins/Diagnostics/ConfigReader.php1
-rw-r--r--plugins/Diagnostics/Controller.php3
-rw-r--r--plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/CronArchivingCheck.php4
-rw-r--r--plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/DbReaderCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/GdExtensionCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/HttpClientCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/PageSpeedCheck.php1
-rw-r--r--plugins/Diagnostics/Diagnostic/ReportInformational.php4
-rw-r--r--plugins/Diagnostics/Diagnostic/TimezoneCheck.php1
-rw-r--r--plugins/Diagnostics/lang/ca.json39
-rw-r--r--plugins/Diagnostics/lang/it.json2
-rw-r--r--plugins/Diagnostics/lang/pt-br.json44
-rw-r--r--plugins/Diagnostics/lang/sq.json51
-rw-r--r--plugins/Diagnostics/tests/Integration/ConfigReaderTest.php1
-rw-r--r--plugins/Ecommerce/Columns/ProductCategory.php1
-rw-r--r--plugins/Ecommerce/Columns/ProductViewCategory.php3
-rw-r--r--plugins/Ecommerce/Controller.php1
-rw-r--r--plugins/Ecommerce/Reports/BaseItem.php2
-rw-r--r--plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php1
-rw-r--r--plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php1
-rw-r--r--plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php1
-rw-r--r--plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php1
-rw-r--r--plugins/Ecommerce/VisitorDetails.php6
-rw-r--r--plugins/Ecommerce/Widgets/GetEcommerceLog.php1
-rw-r--r--plugins/Ecommerce/lang/ca.json30
-rw-r--r--plugins/Ecommerce/lang/nb.json8
-rw-r--r--plugins/Ecommerce/lang/sq.json36
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html10
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdfbin578950 -> 578978 bytes
-rw-r--r--plugins/Events/API.php3
-rw-r--r--plugins/Events/Archiver.php1
-rw-r--r--plugins/Events/Categories/EventsSubcategory.php2
-rw-r--r--plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php1
-rw-r--r--plugins/Events/Events.php1
-rw-r--r--plugins/Events/Widgets/EventsByDimension.php1
-rw-r--r--plugins/Events/lang/ca.json33
-rw-r--r--plugins/Events/lang/id.json6
-rw-r--r--plugins/Events/lang/nb.json4
-rw-r--r--plugins/Events/lang/sq.json16
-rw-r--r--plugins/Events/lang/th.json6
-rw-r--r--plugins/Events/lang/tl.json5
-rw-r--r--plugins/ExampleLogTables/ExampleLogTables.php2
-rw-r--r--plugins/ExamplePlugin/API.php1
-rw-r--r--plugins/ExamplePlugin/Archiver.php2
-rw-r--r--plugins/ExamplePlugin/Controller.php1
-rw-r--r--plugins/ExamplePlugin/Widgets/MyExampleWidget.php1
-rw-r--r--plugins/ExampleReport/Reports/GetExampleReport.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleActionDimension.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleConversionDimension.php2
-rw-r--r--plugins/ExampleTracker/Columns/ExampleDimension.php1
-rw-r--r--plugins/ExampleTracker/Columns/ExampleVisitDimension.php2
-rw-r--r--plugins/ExampleUI/Controller.php3
-rw-r--r--plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php1
-rw-r--r--plugins/ExampleUI/Reports/GetTemperaturesEvolution.php4
-rw-r--r--plugins/ExampleVisualization/Visualizations/SimpleTable.php1
-rw-r--r--plugins/ExampleVue/Widgets/GetExampleVue.php1
-rw-r--r--plugins/Feedback/API.php1
-rw-r--r--plugins/Feedback/Controller.php4
-rw-r--r--plugins/Feedback/Feedback.php4
-rw-r--r--plugins/Feedback/lang/ca.json90
-rw-r--r--plugins/Feedback/lang/nb.json20
-rw-r--r--plugins/Feedback/lang/ru.json15
-rw-r--r--plugins/Feedback/lang/sq.json65
-rw-r--r--plugins/Feedback/templates/index.twig28
-rw-r--r--plugins/Feedback/tests/Integration/FeedbackTest.php1
-rw-r--r--plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png4
-rw-r--r--plugins/GeoIp2/GeoIP2AutoUpdater.php10
-rw-r--r--plugins/GeoIp2/LocationProvider/GeoIp2/Php.php2
-rw-r--r--plugins/GeoIp2/lang/ca.json72
-rw-r--r--plugins/GeoIp2/lang/nb.json7
-rw-r--r--plugins/GeoIp2/lang/sq.json52
-rw-r--r--plugins/Goals/Archiver.php20
-rw-r--r--plugins/Goals/Categories/ManageGoalsSubcategory.php2
-rw-r--r--plugins/Goals/Columns/DaysToConversion.php1
-rw-r--r--plugins/Goals/Columns/VisitsUntilConversion.php1
-rw-r--r--plugins/Goals/Controller.php31
-rw-r--r--plugins/Goals/Conversions.php3
-rw-r--r--plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php1
-rw-r--r--plugins/Goals/Goals.php51
-rw-r--r--plugins/Goals/Reports/Base.php2
-rw-r--r--plugins/Goals/Reports/Get.php4
-rw-r--r--plugins/Goals/Updates/3.0.0-b1.php1
-rw-r--r--plugins/Goals/Visualizations/Goals.php4
-rw-r--r--plugins/Goals/Widgets/AddNewGoal.php2
-rw-r--r--plugins/Goals/Widgets/EditGoals.php2
-rw-r--r--plugins/Goals/angularjs/common/directives/goal-page-link.js45
-rw-r--r--plugins/Goals/angularjs/manage-goals/manage-goals.controller.js215
-rw-r--r--plugins/Goals/angularjs/manage-goals/manage-goals.directive.js38
-rw-r--r--plugins/Goals/lang/ca.json69
-rw-r--r--plugins/Goals/lang/id.json4
-rw-r--r--plugins/Goals/lang/it.json76
-rw-r--r--plugins/Goals/lang/nb.json19
-rw-r--r--plugins/Goals/lang/sq.json94
-rw-r--r--plugins/Goals/templates/_addEditGoal.twig42
-rw-r--r--plugins/Goals/templates/_formAddGoal.twig183
-rw-r--r--plugins/Goals/templates/_listGoalEdit.twig122
-rw-r--r--plugins/Goals/tests/Integration/APITest.php1
-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/vue/dist/Goals.umd.js1147
-rw-r--r--plugins/Goals/vue/dist/Goals.umd.min.js21
-rw-r--r--plugins/Goals/vue/dist/umd.metadata.json6
-rw-r--r--plugins/Goals/vue/src/Goal.ts24
-rw-r--r--plugins/Goals/vue/src/GoalPageLink/GoalPageLink.adapter.ts30
-rw-r--r--plugins/Goals/vue/src/GoalPageLink/GoalPageLink.ts69
-rw-r--r--plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts64
-rw-r--r--plugins/Goals/vue/src/ManageGoals/ManageGoals.vue821
-rw-r--r--plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts38
-rw-r--r--plugins/Goals/vue/src/index.ts12
-rw-r--r--plugins/ImageGraph/ImageGraph.php1
-rw-r--r--plugins/ImageGraph/lang/ca.json5
-rw-r--r--plugins/ImageGraph/lang/id.json4
-rw-r--r--plugins/ImageGraph/tests/UI/expected-screenshots/ImageGraph_horizontal_bar.png4
-rw-r--r--plugins/Insights/Controller.php1
-rw-r--r--plugins/Insights/DataTable/Filter/MinGrowth.php1
-rw-r--r--plugins/Insights/Visualizations/Insight/RequestConfig.php1
-rw-r--r--plugins/Insights/lang/ca.json34
-rw-r--r--plugins/Insights/lang/sq.json10
-rw-r--r--plugins/Insights/lang/tl.json3
-rw-r--r--plugins/Insights/tests/Unit/BaseUnitTest.php1
-rw-r--r--plugins/Insights/tests/Unit/FilterOrderByTest.php1
-rw-r--r--plugins/Insights/tests/Unit/InsightReportTest.php1
-rw-r--r--plugins/Installation/Controller.php1
-rw-r--r--plugins/Installation/FormSuperUser.php1
-rw-r--r--plugins/Installation/Widgets/GetSystemCheck.php1
-rw-r--r--plugins/Installation/lang/ca.json191
-rw-r--r--plugins/Installation/lang/de.json48
-rw-r--r--plugins/Installation/lang/el.json4
-rw-r--r--plugins/Installation/lang/en.json2
-rw-r--r--plugins/Installation/lang/fr.json176
-rw-r--r--plugins/Installation/lang/lv.json7
-rw-r--r--plugins/Installation/lang/sq.json161
-rw-r--r--plugins/Installation/lang/tl.json28
-rw-r--r--plugins/Installation/lang/tr.json2
-rw-r--r--plugins/Installation/templates/finished.twig4
-rw-r--r--plugins/Installation/tests/System/APITest.php1
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png4
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png4
-rw-r--r--plugins/Intl/Commands/GenerateIntl.php1
-rw-r--r--plugins/IntranetMeasurable/lang/ca.json8
-rw-r--r--plugins/IntranetMeasurable/lang/id.json8
-rw-r--r--plugins/LanguagesManager/Commands/TranslationBase.php4
-rw-r--r--plugins/LanguagesManager/LanguagesManager.php1
-rw-r--r--plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php1
-rw-r--r--plugins/Live/API.php7
-rw-r--r--plugins/Live/Categories/VisitorLogSubcategory.php2
-rw-r--r--plugins/Live/Controller.php50
-rw-r--r--plugins/Live/Model.php65
-rw-r--r--plugins/Live/ProfileSummary/Summary.php1
-rw-r--r--plugins/Live/Reports/GetSimpleLastVisitCount.php18
-rw-r--r--plugins/Live/Visitor.php3
-rw-r--r--plugins/Live/VisitorProfile.php20
-rw-r--r--plugins/Live/javascripts/SegmentedVisitorLog.js10
-rw-r--r--plugins/Live/lang/ca.json68
-rw-r--r--plugins/Live/lang/nb.json1
-rw-r--r--plugins/Live/lang/pt-br.json16
-rw-r--r--plugins/Live/lang/ru.json52
-rw-r--r--plugins/Live/lang/sq.json80
-rw-r--r--plugins/Live/templates/_totalVisitors.twig8
-rw-r--r--plugins/Live/templates/getSimpleLastVisitCount.twig3
-rw-r--r--plugins/Live/tests/Integration/ModelTest.php75
-rw-r--r--plugins/Live/tests/System/ApiCounterTest.php1
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_log.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_actions.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_content_actions.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_pageview_actions.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_page_next.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_action_details.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_actions_hidden.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_limited.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_more_visits.png4
-rw-r--r--plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_visit_details.png4
m---------plugins/LogViewer0
-rw-r--r--plugins/Login/Commands/UnblockBlockedIps.php1
-rw-r--r--plugins/Login/Controller.php4
-rw-r--r--plugins/Login/Security/BruteForceDetection.php2
-rw-r--r--plugins/Login/SessionInitializer.php2
-rw-r--r--plugins/Login/lang/ca.json58
-rw-r--r--plugins/Login/lang/nb.json8
-rw-r--r--plugins/Login/lang/sq.json20
-rw-r--r--plugins/Login/lang/tl.json1
-rw-r--r--plugins/Login/tests/Integration/LoginTest.php3
-rw-r--r--plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php3
m---------plugins/LoginLdap0
m---------plugins/MarketingCampaignsReporting0
-rw-r--r--plugins/Marketplace/Commands/SetLicenseKey.php1
-rw-r--r--plugins/Marketplace/Marketplace.php3
-rw-r--r--plugins/Marketplace/Widgets/GetPremiumFeatures.php7
-rw-r--r--plugins/Marketplace/Widgets/Marketplace.php4
-rw-r--r--plugins/Marketplace/lang/ca.json120
-rw-r--r--plugins/Marketplace/lang/el.json110
-rw-r--r--plugins/Marketplace/lang/en.json4
-rw-r--r--plugins/Marketplace/lang/nb.json4
-rw-r--r--plugins/Marketplace/lang/pt-br.json4
-rw-r--r--plugins/Marketplace/lang/sq.json114
-rw-r--r--plugins/Marketplace/lang/tr.json4
-rw-r--r--plugins/Marketplace/templates/getPremiumFeatures.twig10
-rw-r--r--plugins/Marketplace/templates/plugin-details.twig1
-rw-r--r--plugins/Marketplace/templates/plugin-list.twig4
-rw-r--r--plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php1
-rw-r--r--plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png4
-rw-r--r--plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png4
-rw-r--r--plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png4
-rw-r--r--plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png4
-rw-r--r--plugins/MobileAppMeasurable/lang/ca.json8
-rw-r--r--plugins/MobileAppMeasurable/lang/id.json3
-rw-r--r--plugins/MobileAppMeasurable/lang/sq.json6
-rw-r--r--plugins/MobileMessaging/API.php1
-rw-r--r--plugins/MobileMessaging/MobileMessaging.php1
-rw-r--r--plugins/MobileMessaging/SMSProvider.php1
-rw-r--r--plugins/MobileMessaging/lang/ca.json31
-rw-r--r--plugins/MobileMessaging/lang/nb.json6
-rw-r--r--plugins/MobileMessaging/lang/sq.json28
-rw-r--r--plugins/Monolog/tests/Integration/LogTest.php3
-rw-r--r--plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php4
-rw-r--r--plugins/Morpheus/Controller.php1
m---------plugins/Morpheus/icons0
-rw-r--r--plugins/Morpheus/javascripts/piwikHelper.js89
-rw-r--r--plugins/MultiSites/Controller.php14
-rw-r--r--plugins/MultiSites/Dashboard.php5
-rw-r--r--plugins/MultiSites/lang/ca.json12
-rw-r--r--plugins/MultiSites/lang/id.json4
-rw-r--r--plugins/MultiSites/lang/nb.json3
-rw-r--r--plugins/MultiSites/lang/pt-br.json6
-rw-r--r--plugins/MultiSites/lang/sq.json16
-rw-r--r--plugins/Overlay/Controller.php2
-rw-r--r--plugins/Overlay/Overlay.php36
-rw-r--r--plugins/Overlay/lang/ca.json11
-rw-r--r--plugins/Overlay/lang/id.json5
-rw-r--r--plugins/Overlay/lang/nb.json5
-rw-r--r--plugins/Overlay/lang/sq.json14
-rw-r--r--plugins/Overlay/tests/Unit/OverlayTest.php127
-rw-r--r--plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php6
-rw-r--r--plugins/PagePerformance/Reports/Get.php1
-rw-r--r--plugins/PagePerformance/lang/ca.json42
-rw-r--r--plugins/PagePerformance/lang/ru.json41
-rw-r--r--plugins/PagePerformance/lang/sq.json48
-rw-r--r--plugins/PagePerformance/lang/tl.json3
-rw-r--r--plugins/PrivacyManager/Controller.php2
-rw-r--r--plugins/PrivacyManager/Dao/LogDataAnonymizer.php1
-rw-r--r--plugins/PrivacyManager/ReferrerAnonymizer.php1
-rw-r--r--plugins/PrivacyManager/SystemSettings.php3
-rw-r--r--plugins/PrivacyManager/lang/ca.json219
-rw-r--r--plugins/PrivacyManager/lang/nb.json38
-rw-r--r--plugins/PrivacyManager/lang/sq.json242
-rw-r--r--plugins/PrivacyManager/lang/tl.json7
-rw-r--r--plugins/PrivacyManager/tests/Integration/DataPurgingTest.php1
-rw-r--r--plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php1
-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/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_showprofile.png4
-rw-r--r--plugins/ProfessionalServices/Promo.php1
-rw-r--r--plugins/ProfessionalServices/lang/ca.json6
-rw-r--r--plugins/ProfessionalServices/lang/id.json6
-rw-r--r--plugins/ProfessionalServices/lang/ru.json6
-rw-r--r--plugins/ProfessionalServices/lang/sq.json6
m---------plugins/Provider0
-rw-r--r--plugins/Proxy/Controller.php16
m---------plugins/QueuedTracking0
-rw-r--r--plugins/Referrers/Categories/SearchEnginesSubcategory.php2
-rw-r--r--plugins/Referrers/Columns/Campaign.php1
-rw-r--r--plugins/Referrers/Columns/Referrer.php1
-rw-r--r--plugins/Referrers/Columns/SearchEngine.php1
-rw-r--r--plugins/Referrers/Columns/SocialNetwork.php1
-rw-r--r--plugins/Referrers/Columns/Website.php1
-rw-r--r--plugins/Referrers/Columns/WebsitePage.php1
-rw-r--r--plugins/Referrers/Controller.php8
-rw-r--r--plugins/Referrers/DataTable/Filter/KeywordNotDefined.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php1
-rw-r--r--plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php2
-rw-r--r--plugins/Referrers/DataTable/Filter/UrlsForSocial.php2
-rw-r--r--plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php1
-rw-r--r--plugins/Referrers/Referrers.php1
-rw-r--r--plugins/Referrers/Reports/Get.php1
-rw-r--r--plugins/Referrers/Reports/GetKeywords.php2
-rw-r--r--plugins/Referrers/Reports/GetReferrerType.php1
-rw-r--r--plugins/Referrers/Reports/GetSocials.php1
-rw-r--r--plugins/Referrers/Reports/GetWebsites.php2
-rw-r--r--plugins/Referrers/Widgets/GetCampaignUrlBuilder.php1
-rw-r--r--plugins/Referrers/lang/ca.json100
-rw-r--r--plugins/Referrers/lang/id.json7
-rw-r--r--plugins/Referrers/lang/lv.json3
-rw-r--r--plugins/Referrers/lang/nb.json9
-rw-r--r--plugins/Referrers/lang/pt-br.json49
-rw-r--r--plugins/Referrers/lang/sq.json99
-rw-r--r--plugins/Referrers/lang/tl.json5
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php1
-rw-r--r--plugins/Referrers/tests/Unit/ReferrersTest.php3
-rw-r--r--plugins/Referrers/tests/Unit/SocialTest.php1
-rw-r--r--plugins/Resolution/API.php2
-rw-r--r--plugins/Resolution/Columns/Configuration.php1
-rw-r--r--plugins/Resolution/Columns/Resolution.php1
-rw-r--r--plugins/Resolution/lang/ca.json6
-rw-r--r--plugins/Resolution/lang/id.json6
-rw-r--r--plugins/Resolution/lang/sq.json7
-rw-r--r--plugins/SEO/Metric/Aggregator.php1
-rw-r--r--plugins/SEO/config/ui-test.php1
-rw-r--r--plugins/SEO/lang/ca.json7
-rw-r--r--plugins/SEO/lang/id.json7
-rw-r--r--plugins/SEO/tests/Integration/SEOTest.php3
-rw-r--r--plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.pngbin29158 -> 29157 bytes
-rw-r--r--plugins/ScheduledReports/Controller.php4
-rw-r--r--plugins/ScheduledReports/Model.php1
-rw-r--r--plugins/ScheduledReports/Tasks.php1
-rw-r--r--plugins/ScheduledReports/lang/ca.json40
-rw-r--r--plugins/ScheduledReports/lang/lv.json3
-rw-r--r--plugins/ScheduledReports/lang/nb.json11
-rw-r--r--plugins/ScheduledReports/lang/sq.json38
-rw-r--r--plugins/ScheduledReports/lang/tl.json7
-rw-r--r--plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php1
m---------plugins/SecurityInfo0
-rw-r--r--plugins/SegmentEditor/API.php6
-rw-r--r--plugins/SegmentEditor/SegmentEditor.php1
-rw-r--r--plugins/SegmentEditor/SegmentFormatter.php1
-rw-r--r--plugins/SegmentEditor/lang/ca.json60
-rw-r--r--plugins/SegmentEditor/lang/nb.json7
-rw-r--r--plugins/SegmentEditor/lang/ru.json51
-rw-r--r--plugins/SegmentEditor/lang/sq.json62
-rw-r--r--plugins/SegmentEditor/lang/tl.json11
-rw-r--r--plugins/SitesManager/API.php3
-rw-r--r--plugins/SitesManager/Controller.php4
-rw-r--r--plugins/SitesManager/Menu.php1
-rw-r--r--plugins/SitesManager/Model.php1
-rw-r--r--plugins/SitesManager/SiteUrls.php1
-rw-r--r--plugins/SitesManager/SitesManager.php4
-rw-r--r--plugins/SitesManager/lang/ca.json137
-rw-r--r--plugins/SitesManager/lang/el.json2
-rw-r--r--plugins/SitesManager/lang/en.json2
-rw-r--r--plugins/SitesManager/lang/nb.json2
-rw-r--r--plugins/SitesManager/lang/pt-br.json73
-rw-r--r--plugins/SitesManager/lang/sq.json100
-rw-r--r--plugins/SitesManager/lang/tr.json2
-rw-r--r--plugins/SitesManager/templates/_displayJavascriptCode.twig6
-rw-r--r--plugins/SitesManager/templates/_siteWithoutDataTabs.twig3
-rw-r--r--plugins/SitesManager/templates/_trackingCodeEmail.twig6
-rw-r--r--plugins/SitesManager/tests/Fixtures/ManySites.php2
-rw-r--r--plugins/SitesManager/tests/Integration/SitesManagerTest.php1
-rw-r--r--plugins/SitesManager/tests/Unit/APITest.php2
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.js13
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.min.js6
-rw-r--r--plugins/SitesManager/vue/src/SitesManagement/SitesManagement.adapter.ts4
-rw-r--r--plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue2
m---------plugins/TagManager0
m---------plugins/TasksTimetable0
-rw-r--r--plugins/Tour/lang/ca.json53
-rw-r--r--plugins/Tour/lang/sq.json74
-rw-r--r--plugins/Tour/lang/tl.json5
m---------plugins/TrackingSpamPrevention0
-rw-r--r--plugins/Transitions/API.php3
-rw-r--r--plugins/Transitions/Categories/TransitionsSubcategory.php2
-rw-r--r--plugins/Transitions/Widgets/GetTransitions.php1
-rw-r--r--plugins/Transitions/lang/ca.json20
-rw-r--r--plugins/Transitions/lang/id.json10
-rw-r--r--plugins/Transitions/lang/pt-br.json26
-rw-r--r--plugins/Transitions/lang/sq.json26
m---------plugins/TreemapVisualization0
-rw-r--r--plugins/TwoFactorAuth/Controller.php2
-rw-r--r--plugins/TwoFactorAuth/SystemSettings.php1
-rw-r--r--plugins/TwoFactorAuth/lang/ca.json52
-rw-r--r--plugins/TwoFactorAuth/lang/nb.json13
-rw-r--r--plugins/TwoFactorAuth/lang/sq.json80
-rw-r--r--plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php1
-rw-r--r--plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php3
-rw-r--r--plugins/TwoFactorAuth/tests/UI/TwoFactorAuthUsersManager_spec.js4
-rw-r--r--plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa.png4
-rw-r--r--plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa_reset_confirmed.png4
-rw-r--r--plugins/UserCountry/Controller.php2
-rw-r--r--plugins/UserCountry/LocationProvider/DisabledProvider.php2
-rw-r--r--plugins/UserCountry/VisitorGeolocator.php3
-rw-r--r--plugins/UserCountry/functions.php1
-rw-r--r--plugins/UserCountry/lang/ca.json39
-rw-r--r--plugins/UserCountry/lang/it.json30
-rw-r--r--plugins/UserCountry/lang/nb.json5
-rw-r--r--plugins/UserCountry/lang/pt-br.json1
-rw-r--r--plugins/UserCountry/lang/ru.json37
-rw-r--r--plugins/UserCountry/lang/sq.json51
-rw-r--r--plugins/UserCountryMap/Controller.php3
-rw-r--r--plugins/UserCountryMap/lang/ca.json28
-rw-r--r--plugins/UserCountryMap/lang/id.json5
-rw-r--r--plugins/UserCountryMap/lang/lv.json3
-rw-r--r--plugins/UserCountryMap/lang/ms.json7
-rw-r--r--plugins/UserCountryMap/lang/sq.json10
-rw-r--r--plugins/UserId/API.php2
-rw-r--r--plugins/UserId/Categories/VisitorsUserSubcategory.php2
-rw-r--r--plugins/UserId/Columns/UserId.php1
-rw-r--r--plugins/UserId/Reports/GetUsers.php2
-rw-r--r--plugins/UserId/UserId.php1
-rw-r--r--plugins/UserId/lang/ca.json9
-rw-r--r--plugins/UserId/lang/id.json7
-rw-r--r--plugins/UserId/lang/sq.json7
-rw-r--r--plugins/UserId/lang/tl.json3
-rw-r--r--plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php2
-rw-r--r--plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php1
-rw-r--r--plugins/UserId/tests/System/ApiTest.php1
-rw-r--r--plugins/UserId/tests/System/OverwriteUserIdTest.php1
-rw-r--r--plugins/UserLanguage/API.php2
-rw-r--r--plugins/UserLanguage/Reports/Base.php1
-rw-r--r--plugins/UserLanguage/lang/ca.json8
-rw-r--r--plugins/UserLanguage/lang/id.json6
-rw-r--r--plugins/UserLanguage/lang/lv.json3
-rw-r--r--plugins/UserLanguage/lang/sq.json6
-rw-r--r--plugins/UsersManager/API.php2
-rw-r--r--plugins/UsersManager/Controller.php9
-rw-r--r--plugins/UsersManager/Model.php3
-rw-r--r--plugins/UsersManager/NewsletterSignup.php1
-rw-r--r--plugins/UsersManager/Sql/UserTableFilter.php1
-rw-r--r--plugins/UsersManager/UsersManager.php28
-rw-r--r--plugins/UsersManager/angularjs/personal-settings/anonymous-settings.controller.js47
-rw-r--r--plugins/UsersManager/angularjs/personal-settings/personal-settings.controller.js111
-rw-r--r--plugins/UsersManager/angularjs/users-manager/users-manager.component.html84
-rw-r--r--plugins/UsersManager/angularjs/users-manager/users-manager.component.js223
-rw-r--r--plugins/UsersManager/lang/ar.json11
-rw-r--r--plugins/UsersManager/lang/az.json5
-rw-r--r--plugins/UsersManager/lang/bg.json13
-rw-r--r--plugins/UsersManager/lang/ca.json214
-rw-r--r--plugins/UsersManager/lang/cs.json47
-rw-r--r--plugins/UsersManager/lang/da.json55
-rw-r--r--plugins/UsersManager/lang/de.json1
-rw-r--r--plugins/UsersManager/lang/el.json1
-rw-r--r--plugins/UsersManager/lang/eo.json3
-rw-r--r--plugins/UsersManager/lang/es-ar.json185
-rw-r--r--plugins/UsersManager/lang/es.json1
-rw-r--r--plugins/UsersManager/lang/et.json15
-rw-r--r--plugins/UsersManager/lang/eu.json7
-rw-r--r--plugins/UsersManager/lang/fa.json11
-rw-r--r--plugins/UsersManager/lang/fi.json167
-rw-r--r--plugins/UsersManager/lang/fr.json1
-rw-r--r--plugins/UsersManager/lang/he.json9
-rw-r--r--plugins/UsersManager/lang/hi.json9
-rw-r--r--plugins/UsersManager/lang/hr.json9
-rw-r--r--plugins/UsersManager/lang/hu.json1
-rw-r--r--plugins/UsersManager/lang/id.json1
-rw-r--r--plugins/UsersManager/lang/it.json223
-rw-r--r--plugins/UsersManager/lang/ja.json1
-rw-r--r--plugins/UsersManager/lang/ko.json21
-rw-r--r--plugins/UsersManager/lang/ku.json3
-rw-r--r--plugins/UsersManager/lang/lv.json9
-rw-r--r--plugins/UsersManager/lang/nb.json3
-rw-r--r--plugins/UsersManager/lang/nl.json31
-rw-r--r--plugins/UsersManager/lang/nn.json9
-rw-r--r--plugins/UsersManager/lang/pl.json63
-rw-r--r--plugins/UsersManager/lang/pt-br.json185
-rw-r--r--plugins/UsersManager/lang/pt.json211
-rw-r--r--plugins/UsersManager/lang/ro.json11
-rw-r--r--plugins/UsersManager/lang/ru.json53
-rw-r--r--plugins/UsersManager/lang/sk.json11
-rw-r--r--plugins/UsersManager/lang/sl.json9
-rw-r--r--plugins/UsersManager/lang/sq.json247
-rw-r--r--plugins/UsersManager/lang/sr.json23
-rw-r--r--plugins/UsersManager/lang/sv.json219
-rw-r--r--plugins/UsersManager/lang/ta.json3
-rw-r--r--plugins/UsersManager/lang/th.json9
-rw-r--r--plugins/UsersManager/lang/tl.json10
-rw-r--r--plugins/UsersManager/lang/tr.json1
-rw-r--r--plugins/UsersManager/lang/uk.json1
-rw-r--r--plugins/UsersManager/lang/vi.json17
-rw-r--r--plugins/UsersManager/lang/zh-cn.json1
-rw-r--r--plugins/UsersManager/lang/zh-tw.json67
-rw-r--r--plugins/UsersManager/templates/anonymousSettings.twig47
-rw-r--r--plugins/UsersManager/templates/userSettings.twig125
-rw-r--r--plugins/UsersManager/tests/Integration/ModelTest.php5
-rw-r--r--plugins/UsersManager/tests/Integration/UsersManagerTest.php1
-rw-r--r--plugins/UsersManager/tests/UI/UserSettings_spec.js2
-rw-r--r--plugins/UsersManager/tests/UI/UsersManager_spec.js4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UserSettings_asks_confirmation.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_existing_user_modal.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png4
-rw-r--r--plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_select_multiple.png4
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.js1430
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.min.js36
-rw-r--r--plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.adapter.ts37
-rw-r--r--plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue151
-rw-r--r--plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.adapter.ts15
-rw-r--r--plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue116
-rw-r--r--plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less10
-rw-r--r--plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue11
-rw-r--r--plugins/UsersManager/vue/src/PagedUsersList/SearchParams.ts16
-rw-r--r--plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.adapter.ts58
-rw-r--r--plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue308
-rw-r--r--plugins/UsersManager/vue/src/User.ts1
-rw-r--r--plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less2
-rw-r--r--plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue15
-rw-r--r--plugins/UsersManager/vue/src/UsersManager/UsersManager.adapter.ts32
-rw-r--r--plugins/UsersManager/vue/src/UsersManager/UsersManager.less (renamed from plugins/UsersManager/angularjs/users-manager/users-manager.component.less)0
-rw-r--r--plugins/UsersManager/vue/src/UsersManager/UsersManager.vue338
-rw-r--r--plugins/UsersManager/vue/src/index.ts8
-rw-r--r--plugins/VisitFrequency/API.php1
-rw-r--r--plugins/VisitFrequency/Controller.php1
-rw-r--r--plugins/VisitFrequency/VisitFrequency.php2
-rw-r--r--plugins/VisitFrequency/lang/ca.json19
-rw-r--r--plugins/VisitFrequency/lang/id.json3
-rw-r--r--plugins/VisitFrequency/lang/nb.json5
-rw-r--r--plugins/VisitFrequency/lang/sq.json17
-rw-r--r--plugins/VisitFrequency/lang/tl.json3
-rw-r--r--plugins/VisitTime/Archiver.php1
-rw-r--r--plugins/VisitTime/Columns/DayOfTheWeek.php1
-rw-r--r--plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php1
-rw-r--r--plugins/VisitTime/lang/ca.json22
-rw-r--r--plugins/VisitTime/lang/nb.json6
-rw-r--r--plugins/VisitTime/lang/pt-br.json22
-rw-r--r--plugins/VisitTime/lang/sq.json25
m---------plugins/VisitorGenerator0
-rw-r--r--plugins/VisitorInterest/Columns/PagesPerVisit.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitDuration.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php1
-rw-r--r--plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php1
-rw-r--r--plugins/VisitorInterest/VisitorInterest.php4
-rw-r--r--plugins/VisitorInterest/lang/ca.json7
-rw-r--r--plugins/VisitorInterest/lang/id.json7
-rw-r--r--plugins/VisitorInterest/lang/sq.json6
-rw-r--r--plugins/VisitsSummary/API.php1
-rw-r--r--plugins/VisitsSummary/Controller.php2
-rw-r--r--plugins/VisitsSummary/Reports/Get.php5
-rw-r--r--plugins/VisitsSummary/Widgets/Index.php3
-rw-r--r--plugins/VisitsSummary/lang/ca.json5
-rw-r--r--plugins/VisitsSummary/lang/id.json13
-rw-r--r--plugins/VisitsSummary/lang/lv.json3
-rw-r--r--plugins/VisitsSummary/lang/nb.json3
-rw-r--r--plugins/VisitsSummary/lang/ru.json33
-rw-r--r--plugins/VisitsSummary/lang/sq.json7
-rw-r--r--plugins/WebsiteMeasurable/Settings/Urls.php2
-rw-r--r--plugins/WebsiteMeasurable/lang/ca.json3
-rw-r--r--plugins/WebsiteMeasurable/lang/id.json5
-rw-r--r--plugins/WebsiteMeasurable/lang/sq.json6
-rw-r--r--plugins/Widgetize/Controller.php4
-rw-r--r--plugins/Widgetize/lang/ca.json7
-rw-r--r--plugins/Widgetize/lang/id.json7
-rw-r--r--plugins/Widgetize/lang/pt-br.json6
-rw-r--r--plugins/Widgetize/lang/sq.json10
-rw-r--r--tests/PHPUnit/Fixtures/DisablePluginArchive.php2
-rw-r--r--tests/PHPUnit/Fixtures/JSTrackingUIFixture.php1
-rw-r--r--tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php1
-rw-r--r--tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php1
-rw-r--r--tests/PHPUnit/Fixtures/OmniFixture.php2
-rw-r--r--tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php1
-rw-r--r--tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php2
-rw-r--r--tests/PHPUnit/Fixtures/UITestFixture.php4
-rw-r--r--tests/PHPUnit/Fixtures/VisitsInCurrentYear.php6
-rw-r--r--tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php1
-rw-r--r--tests/PHPUnit/Framework/Fixture.php2
-rw-r--r--tests/PHPUnit/Framework/Mock/FakeAccess.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php1
-rw-r--r--tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php1
-rw-r--r--tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php1
-rw-r--r--tests/PHPUnit/Framework/TestCase/SystemTestCase.php2
-rw-r--r--tests/PHPUnit/Framework/TestCase/UnitTestCase.php1
-rw-r--r--tests/PHPUnit/Framework/TestRequest/Collection.php1
-rw-r--r--tests/PHPUnit/Framework/TestingEnvironmentManipulator.php1
-rw-r--r--tests/PHPUnit/Integration/AccessTest.php2
-rw-r--r--tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php3
-rw-r--r--tests/PHPUnit/Integration/ArchiveProcessingTest.php4
-rw-r--r--tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php1
-rw-r--r--tests/PHPUnit/Integration/ArchiveTest.php162
-rw-r--r--tests/PHPUnit/Integration/ArchiveWebTest.php2
-rw-r--r--tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/.gitignore1
-rw-r--r--tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php344
-rw-r--r--tests/PHPUnit/Integration/Columns/UpdaterTest.php1
-rw-r--r--tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php4
-rw-r--r--tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php1
-rw-r--r--tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php3
-rw-r--r--tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php1
-rw-r--r--tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php2
-rw-r--r--tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php2
-rw-r--r--tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php1
-rw-r--r--tests/PHPUnit/Integration/Db/TransactionLevelTest.php79
-rw-r--r--tests/PHPUnit/Integration/EmailValidatorTest.php1
-rw-r--r--tests/PHPUnit/Integration/FrontControllerTest.php8
-rw-r--r--tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php2
-rw-r--r--tests/PHPUnit/Integration/Plugin/CategoriesTest.php1
-rw-r--r--tests/PHPUnit/Integration/Plugin/ManagerTest.php3
-rw-r--r--tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php4
-rw-r--r--tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php2
-rw-r--r--tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php2
-rw-r--r--tests/PHPUnit/Integration/PluginTest.php2
-rw-r--r--tests/PHPUnit/Integration/ReleaseCheckListTest.php4
-rw-r--r--tests/PHPUnit/Integration/SegmentTest.php1
-rw-r--r--tests/PHPUnit/Integration/SequenceTest.php1
-rw-r--r--tests/PHPUnit/Integration/SessionTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/IntegrationTestCase.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php1
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php2
-rw-r--r--tests/PHPUnit/Integration/SupportedBrowserTest.php5
-rw-r--r--tests/PHPUnit/Integration/Tracker/DbTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php8
-rw-r--r--tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/RequestSetTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php1
-rw-r--r--tests/PHPUnit/Integration/Tracker/VisitTest.php2
-rw-r--r--tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php1
-rw-r--r--tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php3
-rw-r--r--tests/PHPUnit/System/ApiGetReportMetadataTest.php1
-rw-r--r--tests/PHPUnit/System/ArchiveInvalidationTest.php3
-rw-r--r--tests/PHPUnit/System/BlobReportLimitingTest.php4
-rw-r--r--tests/PHPUnit/System/ConsoleTest.php12
-rw-r--r--tests/PHPUnit/System/FlattenReportsTest.php1
-rw-r--r--tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php1
-rw-r--r--tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php1
-rw-r--r--tests/PHPUnit/System/TrackerTest.php22
-rw-r--r--tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php5
-rw-r--r--tests/PHPUnit/System/Utf8mb4Test.php5
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml26
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml24
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html10
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdfbin555815 -> 555859 bytes
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml40
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__API.getProcessedReport_year.xml2
-rw-r--r--tests/PHPUnit/System/expected/test_reportLimitingdimension_2_rankingQuery__CustomDimensions.getCustomDimension_day.xml4
-rw-r--r--tests/PHPUnit/Unit/AssetManagerTest.php1
-rw-r--r--tests/PHPUnit/Unit/Category/CategoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/Category/SubcategoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/CliMulti/RequestParserTest.php1
-rw-r--r--tests/PHPUnit/Unit/Config/IniFileChainTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php1
-rw-r--r--tests/PHPUnit/Unit/DataTable/ManagerTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTable/MapTest.php2
-rw-r--r--tests/PHPUnit/Unit/DataTableTest.php1
-rw-r--r--tests/PHPUnit/Unit/FilesystemTest.php67
-rw-r--r--tests/PHPUnit/Unit/Period/RangeTest.php1
-rw-r--r--tests/PHPUnit/Unit/PeriodTest.php1
-rw-r--r--tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php1
-rw-r--r--tests/PHPUnit/Unit/Scheduler/TimetableTest.php1
-rw-r--r--tests/PHPUnit/Unit/Translation/FilesTest.php2
-rw-r--r--tests/PHPUnit/bootstrap.php2
-rw-r--r--tests/PHPUnit/proxy/includes.php4
-rw-r--r--tests/UI/expected-screenshots/Comparison_goals_table.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_goals_table_specific.png3
-rw-r--r--tests/UI/expected-screenshots/Comparison_normal_table.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_normal_table_no_periods.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_normal_table_no_segments.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_row_evolution.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_segmented_visitorlog.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_subtables_loaded.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_subtables_paginate.png4
-rw-r--r--tests/UI/expected-screenshots/Comparison_visits_overview_widget_sv.png3
-rw-r--r--tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png4
-rw-r--r--tests/UI/expected-screenshots/JSTracker_visitor_log.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_expanded.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_loaded.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_search_no_results.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_search_one_char.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_search_two_chars.png4
-rw-r--r--tests/UI/expected-screenshots/SiteSelector_site_selected.png4
-rw-r--r--tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png4
-rw-r--r--tests/UI/expected-screenshots/Theme_home.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_visitor_generator.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log_segmented.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_referrers_search_engines_keywords.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_segmented_visitorlog.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_not_segmented.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_visits.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_software.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_widgetize_ecommercelog.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_widgetize_visitor_log.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_11_flattened.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_12_aggregate_shown.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_dimension_columns.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_dimension_search.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_flatten_search.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_related_report_click.png4
-rw-r--r--tests/UI/expected-screenshots/ViewDataTableTest_subtables_loaded.png4
-rw-r--r--tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png4
-rw-r--r--tests/UI/specs/Comparison_spec.js23
-rw-r--r--tests/UI/specs/SiteSelector_spec.js2
-rw-r--r--tests/UI/specs/UIIntegration_spec.js2
-rw-r--r--tests/javascript/index.php18
-rw-r--r--tests/lib/screenshot-testing/support/page-renderer.js11
1156 files changed, 18007 insertions, 8463 deletions
diff --git a/.eslintignore b/.eslintignore
index dc04889aff..96c64c309f 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -5,4 +5,5 @@ plugins/*/angularjs/
plugins/*/tests/UI/
plugins/*/vue/dist/**/*.js
js/*.js
-piwik.js \ No newline at end of file
+piwik.js
+matomo.js \ No newline at end of file
diff --git a/.github/scripts/build-package.sh b/.github/scripts/build-package.sh
new file mode 100644
index 0000000000..bf02ee997d
--- /dev/null
+++ b/.github/scripts/build-package.sh
@@ -0,0 +1,255 @@
+#!/bin/bash
+# Syntax: build-package.sh version
+
+# Before running this script, tag a new version:
+# $ git tag 1.11-b3
+# $ git push origin tags/1.11-b3
+
+URL_REPO=https://github.com/matomo-org/matomo.git
+
+LOCAL_REPO="matomo_last_version_git"
+LOCAL_ARCH="archives"
+
+# List of Sub-modules that SHOULD be in the packaged release, eg PiwikTracker|CorePluginName
+SUBMODULES_PACKAGED_WITH_CORE='log-analytics|plugins/Morpheus/icons|plugins/TagManager'
+
+# Setting umask so it works for most users, see https://github.com/matomo-org/matomo/issues/3869
+umask 0022
+
+# this is our current folder
+CURRENT_DIR="$(pwd)"
+
+# this is where our build script is.
+WORK_DIR="$CURRENT_DIR/archives/"
+
+echo "Working directory is '$WORK_DIR'..."
+
+function Usage() {
+ echo -e "ERROR: This command is missing one or more option. See help below."
+ echo -e "$0 version [flavour]"
+ echo -e "\t* version: Package version under which you want the archive to be published or path to matomo checkout you want packaged."
+ echo -e "\t* flavour: Base name of your archive. Can either be 'matomo' or 'piwik'. If unspecified, both archives are generated."
+ # exit with code 1 to indicate an error.
+ exit 1
+}
+
+
+# check local environment for all required apps/tools
+function checkEnv() {
+ if [ ! -x "/usr/bin/curl" ] && [ ! -x "$(which curl)" ]
+ then
+ die "Cannot find curl"
+ fi
+
+ if [ ! -x "/usr/bin/git" ] && [ ! -x "$(which git)" ]
+ then
+ die "Cannot find git"
+ fi
+
+ if [ ! -x "/usr/bin/php" ] && [ ! -x "$(which php)" ]
+ then
+ die "Cannot find php"
+ fi
+
+ if [ ! -x "/usr/bin/gpg" ] && [ ! -x "$(which gpg)" ]
+ then
+ die "Cannot find gpg"
+ fi
+
+ if [ ! -x "/usr/bin/zip" ] && [ ! -x "$(which zip)" ]
+ then
+ die "Cannot find zip"
+ fi
+
+ if [ ! -x "/usr/bin/md5sum" ] && [ ! -x "$(which md5sum)" ]
+ then
+ die "Cannot find md5sum"
+ fi
+}
+
+# report error and exit
+function die() {
+ echo -e "$0: $1"
+ exit 2
+}
+
+# organize files for packaging
+function organizePackage() {
+
+ if [ ! -f "composer.phar" ]
+ then
+ EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
+ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
+ ACTUAL_SIGNATURE="$(php -r "echo hash_file('SHA384', 'composer-setup.php');")"
+
+ if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]
+ then
+ >&2 echo 'ERROR: Invalid installer signature'
+ rm composer-setup.php
+ exit 1
+ fi
+ php composer-setup.php --quiet || die "Error installing composer "
+ rm composer-setup.php
+ fi
+ # --ignore-platform-reqs in case the building machine does not have one of the packages required ie. GD required by cpchart
+ php composer.phar install --no-dev -o --ignore-platform-reqs || die "Error installing composer packages"
+
+ # delete most submodules
+ for P in $(git submodule status | egrep -v $SUBMODULES_PACKAGED_WITH_CORE | awk '{print $2}')
+ do
+ rm -Rf ./$P
+ done
+
+ cp tests/README.md ../
+
+ $CURRENT_DIR/.github/scripts/clean-build.sh
+
+ SYMLINKS=(`find ./ -type l`)
+ if [ ${#SYMLINKS[@]} -gt 0 ]
+ then
+ echo 'Symlinks detected. Please check if following links should be removed:'
+ echo ${SYMLINKS[*]}
+ exit 1
+ fi
+
+ mkdir tests
+ mv ../README.md tests/
+
+ # Remove and deactivate the TestRunner plugin in production build
+ sed -i '/Plugins\[\] = TestRunner/d' config/global.ini.php
+ rm -rf plugins/TestRunner
+
+ cp misc/How\ to\ install\ Matomo.html ..
+
+ if [ -d "misc/package" ]
+ then
+ rm -rf misc/package/
+ fi
+
+ find ./ -type f -printf '%s ' -exec md5sum {} \; \
+ | grep -v "user/.htaccess" \
+ | egrep -v 'manifest.inc.php|vendor/autoload.php|vendor/composer/autoload_real.php' \
+ | sed '1,$ s/\([0-9]*\) \([a-z0-9]*\) *\.\/\(.*\)/\t\t"\3" => array("\1", "\2"),/;' \
+ | sort \
+ | sed '1 s/^/<?php\n\/\/ This file is automatically generated during the Matomo build process \
+namespace Piwik;\nclass Manifest {\n\tstatic $files=array(\n/; $ s/$/\n\t);\n}/' \
+ > ./config/manifest.inc.php
+
+}
+
+if [ -z "$1" ]; then
+ echo "Expected a version number as a parameter"
+ Usage "$0"
+else
+ VERSION="$1"
+ MAJOR_VERSION=`echo $VERSION | cut -d'.' -f1`
+fi
+
+if [ -z "$2" ]; then
+ FLAVOUR="matomo piwik"
+ echo "Building 'matomo' and 'piwik' archives"
+else
+ if [ "$2" != "matomo" ] && [ "$2" != "piwik" ]; then
+ Usage "$0"
+ else
+ FLAVOUR="$2"
+ echo "Building '$2' archives"
+ fi
+fi
+
+# check for local requirements
+checkEnv
+
+echo -e "Going to build Matomo $VERSION (Major version: $MAJOR_VERSION)"
+
+if ! echo "$VERSION" | grep -E 'rc|b|a|alpha|beta|dev' -i
+then
+ if curl --output /dev/null --silent --head --fail "https://builds.matomo.org/$F-$VERSION.zip"
+ then
+ echo "--> Error: stable version $VERSION has already been built (not expected). <-- "
+ fi
+fi
+
+echo -e "Proceeding..."
+sleep 2
+
+echo "Starting '$FLAVOUR' build...."
+
+mkdir -p "$WORK_DIR"
+cd "$WORK_DIR" || exit
+
+[ -d "$LOCAL_ARCH" ] || mkdir "$LOCAL_ARCH"
+
+cd "$CURRENT_DIR" || exit
+cd "$WORK_DIR" || exit
+
+if [ -d "$LOCAL_REPO" ] ; then
+ rm -rf $LOCAL_REPO
+fi
+
+echo "cloning repository for tag $VERSION..."
+
+# for this to work 'git-lfs' has to be installed on the local machine
+git clone --config filter.lfs.smudge="git-lfs smudge --skip" --single-branch --branch "$VERSION" "$URL_REPO" "$LOCAL_REPO"
+
+if [ "$?" -ne "0" ] || [ ! -d "$LOCAL_REPO" ]; then
+ die "Error: Failed to clone git repository $URL_REPO, maybe tag $VERSION does not exist"
+fi
+
+echo -e "Working in $LOCAL_REPO"
+cd "$LOCAL_REPO" || exit
+
+# clone submodules that should be in the release
+for P in $(git submodule status | egrep $SUBMODULES_PACKAGED_WITH_CORE | awk '{print $2}')
+do
+ echo -e "cloning submodule $P"
+ git submodule update --init --depth=1 $P
+done
+
+echo "Preparing release $VERSION"
+echo "Git tag: $(git describe --exact-match --tags HEAD)"
+echo "Git path: $WORK_DIR/$LOCAL_REPO"
+echo "Matomo version in core/Version.php: $(grep "'$VERSION'" core/Version.php)"
+
+[ "$(grep "'$VERSION'" core/Version.php | wc -l)" = "1" ] || die "version $VERSION does not match core/Version.php";
+
+echo "Organizing files and generating manifest file..."
+organizePackage
+
+for F in $FLAVOUR; do
+ echo "Creating '$F' release package"
+
+ # leave $LOCAL_REPO folder
+ cd "$WORK_DIR" || exit
+
+ echo "copying files to a new directory..."
+ [ -d "$F" ] && rm -rf "$F"
+ cp -pdr "$LOCAL_REPO" "$F"
+ cd "$F" || exit
+
+ # leave $F folder
+ cd ..
+
+ echo "packaging release..."
+ rm "../$LOCAL_ARCH/$F-$VERSION.zip" 2> /dev/null
+ zip -9 -r "../$LOCAL_ARCH/$F-$VERSION.zip" "$F" How\ to\ install\ Matomo.html > /dev/null
+
+ gpg --armor --detach-sign "../$LOCAL_ARCH/$F-$VERSION.zip" || die "Failed to sign $F-$VERSION.zip"
+
+ rm "../$LOCAL_ARCH/$F-$VERSION.tar.gz" 2> /dev/null
+ tar -czf "../$LOCAL_ARCH/$F-$VERSION.tar.gz" "$F" How\ to\ install\ Matomo.html
+
+ gpg --armor --detach-sign "../$LOCAL_ARCH/$F-$VERSION.tar.gz" || die "Failed to sign $F-$VERSION.tar.gz"
+
+done
+
+# Check File signatures are correct
+for ext in zip tar.gz
+do
+ for F in $FLAVOUR; do
+ gpg --verify ../$LOCAL_ARCH/$F-$VERSION.$ext.asc
+ if [ "$?" -ne "0" ]; then
+ die "Failed to verify signature for ../$LOCAL_ARCH/$F-$VERSION.$ext"
+ fi
+ done
+done \ No newline at end of file
diff --git a/.github/scripts/clean-build.sh b/.github/scripts/clean-build.sh
new file mode 100644
index 0000000000..cefed53615
--- /dev/null
+++ b/.github/scripts/clean-build.sh
@@ -0,0 +1,230 @@
+#!/bin/bash
+# This script removes all files that shouldn't be included in a release
+# It should be called from within the root directory of Matomo
+
+# ------------
+# WARNING:
+# if you add files below, also update the Integration test in ReleaseCheckListTest.php
+# in isFileDeletedFromPackage()
+# ------------
+
+echo -e "Deleting un-needed files..."
+
+# Delete all `tests/` and `Tests/` folders
+find ./ -iname 'tests' -type d -prune -exec rm -rf {} \;
+
+# Delete all di config files for test environments
+rm -rf config/environment/test.php
+rm -rf config/environment/ui-test.php
+rm -rf plugins/*/config/test.php
+rm -rf plugins/*/config/ui-test.php
+
+# Delete un-used files from the matomo-icons repository
+rm -rf plugins/Morpheus/icons/src*
+rm -rf plugins/Morpheus/icons/tools*
+rm -rf plugins/Morpheus/icons/flag-icon-css*
+rm -rf plugins/Morpheus/icons/submodules*
+rm -rf plugins/Morpheus/icons/.git*
+rm -rf plugins/Morpheus/icons/*.py
+rm -rf plugins/Morpheus/icons/*.sh
+rm -rf plugins/Morpheus/icons/*.json
+rm -rf plugins/Morpheus/icons/*.lock
+rm -rf plugins/Morpheus/icons/*.svg
+rm -rf plugins/Morpheus/icons/*.txt
+rm -rf plugins/Morpheus/icons/*.php
+rm -rf plugins/Morpheus/icons/*.yml
+
+# Delete all Example plugins
+rm -rf plugins/Example*
+
+rm -rf composer.phar
+rm -rf vendor/bin/
+rm -rf vendor/container-interop/container-interop/docs
+rm -rf vendor/davaxi/sparkline/composer-8.json
+rm -rf vendor/davaxi/sparkline/docker-compose.yml
+rm -rf vendor/davaxi/sparkline/Dockerfile
+rm -rf vendor/geoip2/geoip2/examples/
+rm -rf vendor/lox/xhprof/bin
+rm -rf vendor/lox/xhprof/examples
+rm -rf vendor/lox/xhprof/scripts
+rm -rf vendor/lox/xhprof/extension
+rm -rf vendor/lox/xhprof/xhprof_html
+rm -rf vendor/maxmind-db/reader/ext/
+rm -rf vendor/maxmind-db/reader/autoload.php
+rm -rf vendor/maxmind-db/reader/CHANGELOG.md
+rm -rf vendor/maxmind/web-service-common/dev-bin/
+rm -rf vendor/maxmind/web-service-common/CHANGELOG.md
+rm -rf vendor/pear/archive_tar/docs
+rm -rf vendor/php-di/invoker/doc/
+rm -rf vendor/php-di/php-di/benchmarks/
+rm -rf vendor/symfony/console/Symfony/Component/Console/Resources/bin
+rm -rf vendor/szymach/c-pchart/resources/doc
+rm -rf vendor/szymach/c-pchart/coverage.sh
+rm -rf vendor/szymach/c-pchart/codeception.yml
+rm -rf vendor/tecnickcom/tcpdf/examples
+rm -rf vendor/tecnickcom/tcpdf/tools
+rm -rf vendor/tecnickcom/tcpdf/CHANGELOG.TXT
+rm -rf vendor/twig/twig/test/
+rm -rf vendor/twig/twig/doc/
+rm -rf vendor/twig/twig/.php-cs-fixer.dist.php
+
+# Delete un-used fonts
+rm -rf vendor/tecnickcom/tcpdf/fonts/ae_fonts_2.0
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.33
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-2.34
+rm -rf vendor/tecnickcom/tcpdf/fonts/freefont-20100919
+rm -rf vendor/tecnickcom/tcpdf/fonts/freefont-20120503
+rm -rf vendor/tecnickcom/tcpdf/fonts/freemon*
+rm -rf vendor/tecnickcom/tcpdf/fonts/cid*
+rm -rf vendor/tecnickcom/tcpdf/fonts/courier*
+rm -rf vendor/tecnickcom/tcpdf/fonts/aefurat*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavusansb*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavusansi*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavusansmono*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavusanscondensed*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavusansextralight*
+rm -rf vendor/tecnickcom/tcpdf/fonts/dejavuserif*
+rm -rf vendor/tecnickcom/tcpdf/fonts/freesansi*
+rm -rf vendor/tecnickcom/tcpdf/fonts/freesansb*
+rm -rf vendor/tecnickcom/tcpdf/fonts/freeserifb*
+rm -rf vendor/tecnickcom/tcpdf/fonts/freeserifi*
+rm -rf vendor/tecnickcom/tcpdf/fonts/pdf*
+rm -rf vendor/tecnickcom/tcpdf/fonts/times*
+rm -rf vendor/tecnickcom/tcpdf/fonts/uni2cid*
+
+rm -rf vendor/szymach/c-pchart/resources/fonts/advent_light*
+rm -rf vendor/szymach/c-pchart/resources/fonts/Bedizen*
+rm -rf vendor/szymach/c-pchart/resources/fonts/calibri*
+rm -rf vendor/szymach/c-pchart/resources/fonts/Forgotte*
+rm -rf vendor/szymach/c-pchart/resources/fonts/MankSans*
+rm -rf vendor/szymach/c-pchart/resources/fonts/pf_arma_five*
+rm -rf vendor/szymach/c-pchart/resources/fonts/Silkscreen*
+rm -rf vendor/szymach/c-pchart/resources/fonts/verdana*
+
+# not needed js files
+rm -rf node_modules/angular/angular.min.js.gzip
+rm -rf node_modules/angular/angular.js
+
+rm -rf node_modules/angular-animate/angular-animate.min.js.gzip
+rm -rf node_modules/angular-animate/angular-animate.js
+
+rm -rf node_modules/angular-sanitize/angular-sanitize.min.js.gzip
+rm -rf node_modules/angular-sanitize/angular-sanitize.js
+
+rm -rf node_modules/angular-cookies/angular-cookies.min.js.gzip
+rm -rf node_modules/angular-cookies/angular-cookies.js
+
+rm -rf node_modules/chroma-js/Makefile
+rm -rf node_modules/chroma-js/chroma.js
+rm -rf node_modules/chroma-js/doc
+rm -rf node_modules/chroma-js/readme.md
+rm -rf node_modules/chroma-js/src
+rm -rf node_modules/chroma-js/test
+
+rm -rf node_modules/iframe-resizer/js/iframeResizer.contentWindow.js
+rm -rf node_modules/iframe-resizer/js/iframeResizer.js
+rm -rf node_modules/iframe-resizer/src/ie8.polyfils.js
+rm -rf node_modules/iframe-resizer/src/iframeResizer.contentWindow.js
+rm -rf node_modules/iframe-resizer/src/iframeResizer.js
+rm -rf node_modules/iframe-resizer/test-main.js
+
+rm -rf node_modules/jquery/dist/jquery.js
+rm -rf node_modules/jquery/src
+rm -rf node_modules/jquery/external
+
+rm -rf node_modules/jquery-ui-dist/component.json
+rm -rf node_modules/jquery-ui-dist/external
+rm -rf node_modules/jquery-ui-dist/images
+rm -rf node_modules/jquery-ui-dist/index.html
+rm -rf node_modules/jquery-ui-dist/jquery-ui.css
+rm -rf node_modules/jquery-ui-dist/jquery-ui.js
+rm -rf node_modules/jquery-ui-dist/jquery-ui.structure.css
+rm -rf node_modules/jquery-ui-dist/jquery-ui.theme.css
+
+rm -rf node_modules/jquery.browser/test
+rm -rf node_modules/jquery.browser/dist/jquery.browser.js
+
+rm -rf node_modules/jquery.dotdotdot/gulpfile.js
+rm -rf node_modules/jquery.dotdotdot/index.html
+rm -rf node_modules/jquery.dotdotdot/dotdotdot.jquery.json
+rm -rf node_modules/jquery.dotdotdot/src
+
+rm -rf node_modules/jquery.scrollto/jquery.scrollTo.js
+rm -rf node_modules/jquery.scrollto/scrollTo.jquery.json
+rm -rf node_modules/jquery.scrollto/changes.txt
+rm -rf node_modules/jquery.scrollto/demo
+
+rm -rf node_modules/materialize-css/extras
+rm -rf node_modules/materialize-css/js
+rm -rf node_modules/materialize-css/sass
+rm -rf node_modules/materialize-css/dist/js/materialize.js
+rm -rf node_modules/materialize-css/dist/css/materialize.css
+
+rm -rf node_modules/mousetrap/mousetrap.js
+rm -rf node_modules/mousetrap/plugins
+rm -rf node_modules/mousetrap/mousetrap.sublime-project
+
+rm -rf node_modules/ng-dialog/CONTRIBUTING.md
+rm -rf node_modules/ng-dialog/css
+rm -rf node_modules/ng-dialog/example
+rm -rf node_modules/ng-dialog/protractor.conf.js
+rm -rf node_modules/ng-dialog/server.js
+
+rm -rf node_modules/qrcodejs2/index-svg.html
+rm -rf node_modules/qrcodejs2/index.html
+rm -rf node_modules/qrcodejs2/index.svg
+rm -rf node_modules/qrcodejs2/jquery.min.js
+rm -rf node_modules/qrcodejs2/qrcode.js
+
+rm -rf node_modules/sprintf-js/CONTRIBUTORS.MD
+rm -rf node_modules/sprintf-js/README.md
+rm -rf node_modules/sprintf-js/src
+
+rm -rf node_modules/visibilityjs/ChangeLog.md
+rm -rf node_modules/visibilityjs/component.json
+rm -rf node_modules/visibilityjs/index.d.ts
+rm -rf node_modules/visibilityjs/index.js
+rm -rf node_modules/visibilityjs/README.md
+
+rm -rf node_modules/vue/dist/vue.cjs.js
+rm -rf node_modules/vue/dist/vue.cjs.prod.js
+rm -rf node_modules/vue/dist/vue.d.ts
+rm -rf node_modules/vue/dist/vue.esm-browser.js
+rm -rf node_modules/vue/dist/vue.esm-browser.prod.js
+rm -rf node_modules/vue/dist/vue.esm-bundler.js
+rm -rf node_modules/vue/dist/vue.runtime.esm-browser.js
+rm -rf node_modules/vue/dist/vue.runtime.esm-browser.prod.js
+rm -rf node_modules/vue/dist/vue.runtime.esm-bundler.js
+rm -rf node_modules/vue/dist/vue.runtime.global.js
+rm -rf node_modules/vue/dist/vue.runtime.global.prod.js
+
+rm -f libs/jqplot/jqplot.core.js
+rm -f libs/jqplot/jqplot.lineRenderer.js
+rm -f libs/jqplot/jqplot.linearAxisRenderer.js
+rm -f libs/jqplot/jqplot.themeEngine.js
+rm -f libs/jqplot/plugins/jqplot.barRenderer.js
+rm -f libs/jqplot/plugins/jqplot.pieRenderer.js
+
+rm -f $(find config -type f -name '*.ini.php' -not -name global.ini.php)
+rm -f config/config.php
+
+rm -rf tmp/*
+rm -f HIRING.md
+
+# delete unwanted git folders, recursively
+for x in .git .github ; do
+ find . -name "$x" -exec rm -rf {} \; 2>/dev/null
+done
+
+# delete unwanted common files, recursively
+for x in .gitignore .gitmodules .gitattributes .bowerrc .bower.json bower.json \
+ .coveralls.yml .editorconfig .gitkeep .jshintrc .php_cs .php_cs.dist \
+ phpunit.xml.dist phpunit.xml .phpcs.xml.dist phpcs.xml Gruntfile.js gruntfile.js \
+ *.map .travis.yml installed.json package.json package-lock.json yarn.lock\
+ .scrutinizer.yml .gitstats.yml composer.json composer.lock *.spec.js \
+ .phpstorm.meta.php .lfsconfig .travis.sh tsconfig.json tsconfig.spec.json \
+ .eslintrc.js .eslintignore .eslintrc .browserslistrc babel.config.js jest.config.js \
+ karma.conf.js karma-conf.js vue.config.js .npmignore .ncurc.json .prettierrc .jscsrc \
+ phpstan.neon phpstan.neon.dist package.xml; do
+ find . -name "$x" -exec rm -f {} \;
+done \ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000000..179d1d47dc
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,158 @@
+# Matomo Release Action
+#
+# Required GitHub secrets:
+#
+# RELEASE_PASSWORD | password that needs to be provided to start the action
+# GPG_CERTIFICATE | ASCII armored or Base64 encoded GPG certificate that is used to create the signatures for the archives
+# GPG_CERTIFICATE_PASS | Passphrase of the GPG key
+
+name: Build release
+
+permissions:
+ actions: none
+ checks: none
+ contents: write # required to create tag and release
+ deployments: none
+ issues: none
+ packages: none
+ pull-requests: none
+ repository-projects: none
+ security-events: none
+ statuses: none
+
+on:
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Or specify a tag to build from'
+ required: false
+ default: ''
+ password:
+ description: 'Release password'
+ required: true
+
+env:
+ RELEASE_PASSWORD: ${{ secrets.RELEASE_PASSWORD }}
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Check release password"
+ if: ${{ github.event.inputs.password != env.RELEASE_PASSWORD }}
+ uses: actions/github-script@v3
+ with:
+ script: |
+ core.setFailed('Release password didn\'t match.')
+ - name: "Check if user is allowed"
+ if: ${{ github.actor != 'mattab' && github.actor != 'tsteur' && github.actor != 'sgiehl' && github.actor != 'justinvelluppillai' }}
+ uses: actions/github-script@v3
+ with:
+ script: |
+ core.setFailed('User is not allowed to release.')
+ - uses: actions/checkout@v2
+ with:
+ lfs: false
+ - name: Import GPG key
+ id: import_gpg
+ run: |
+ echo "${{ secrets.GPG_CERTIFICATE }}" > $HOME/private.asc
+ gpg --import --batch --yes $HOME/private.asc
+ echo "default-cache-ttl 7200
+ max-cache-ttl 31536000
+ allow-preset-passphrase" > $HOME/.gnupg/gpg-agent.conf
+ keygrip=$(gpg --import --import-options show-only --with-keygrip $HOME/private.asc | grep "Keygrip" | grep -oP "([A-F0-9]+)" | head -1)
+ hexPassphrase=$( echo -n '${{ secrets.GPG_CERTIFICATE_PASS }}' | od -A n -t x1 -w100 | sed 's/ *//g' )
+ gpg-connect-agent "RELOADAGENT" /bye
+ gpg-connect-agent "PRESET_PASSPHRASE ${keygrip} -1 ${hexPassphrase}" /bye
+ gpg-connect-agent "KEYINFO ${keygrip}" /bye
+ - name: Check preconditions, create tag, build and publish release
+ id: tag
+ run: |
+ if [[ -n "${{ github.event.inputs.version }}" ]]
+ then
+ version="${{ github.event.inputs.version }}"
+ echo "Version to re-build: '$version'"
+
+ git fetch --tags -q 2>/dev/null
+ tag_exists=$( git tag --list "$version" )
+
+ if [[ -z "$tag_exists" ]]
+ then
+ echo "A tag for $version does not exist."
+ exit 1
+ fi
+
+ echo ::set-output name=update::true
+ else
+ version=$( cat core/Version.php | grep -oP "VERSION = '\K([^\']+)" )
+ echo "Version to build: '$version'"
+
+ git fetch --tags -q 2>/dev/null
+ tag_exists=$( git tag --list "$version" )
+
+ if [[ -n "$tag_exists" ]]
+ then
+ echo "A tag for $tag_exists already exists."
+ exit 1
+ fi
+
+ if ! [[ ${GITHUB_REF#refs/heads/} =~ ^[4-9]\.x-dev$ || ${GITHUB_REF#refs/heads/} == "next_release" ]]
+ then
+ echo "A tag can only be created from branches '4.x-dev' and 'next_release'. Please create the tag manually if a release needs to be built from another branch."
+ exit 1
+ fi
+
+ if [[ ${GITHUB_REF#refs/heads/} =~ ^[4-9]\.x-dev$ && $version =~ ^[0-9]+\.[0-9]+\.[0-9]+(-rc[0-9]+)?$ ]]
+ then
+ echo "Only beta release tags can be created from ${GITHUB_REF#refs/heads/} branch."
+ exit 1
+ fi
+
+ echo "Creating a tag for $version"
+
+ git tag $version
+ git push origin tags/$version
+
+ echo ::set-output name=update::false
+ fi
+
+ if [[ "$version" =~ "-" ]]
+ then
+ echo ::set-output name=prerelease::true
+ body="## Matomo ${version} (Pre-release)
+
+ We recommend to read [this FAQ](http://matomo.org/faq/how-to-update/faq_159/) before using a pre-release in a production environment.
+
+ Please use the attached archives for installing or updating Matomo.
+ The source code download is only meant for developers and will require extra work to install it.
+ - Latest stable production release can be found at https://matomo.org/download/ ([learn more](https://matomo.org/docs/installation/)) (recommended)
+ - Beta and Release Candidates releases can be found at https://builds.matomo.org/ ([learn more](http://matomo.org/faq/how-to-update/faq_159/))"
+ else
+ echo ::set-output name=prerelease::false
+ body="## [Matomo ${version} Changelog](https://matomo.org/changelog/matomo-${version//./-}/)
+
+ Please use the attached archives for installing or updating Matomo.
+ The source code download is only meant for developers and will require extra work to install it.
+ - Latest stable production release can be found at https://matomo.org/download/ ([learn more](https://matomo.org/docs/installation/)) (recommended)
+ - Beta and Release Candidates releases can be found at https://builds.matomo.org/ ([learn more](http://matomo.org/faq/how-to-update/faq_159/))"
+ fi
+
+ body="${body//'%'/'%25'}"
+ body="${body//$'\n'/'%0A'}"
+ body="${body//$'\r'/'%0D'}"
+ echo ::set-output name=version::$version
+ echo ::set-output name=body::$body
+
+ cd $GITHUB_WORKSPACE
+ chmod 755 ./.github/scripts/*.sh
+ ./.github/scripts/build-package.sh $version
+ shell: bash
+ - uses: ncipollo/release-action@c4bf6c1ab090090498fb7f3ddc9f99ba5ab619b9
+ with:
+ artifacts: "archives/matomo-${{ steps.tag.outputs.version }}.*,archives/piwik-${{ steps.tag.outputs.version }}.*"
+ allowUpdates: ${{ steps.tag.outputs.update }}
+ tag: ${{ steps.tag.outputs.version }}
+ body: ${{ steps.tag.outputs.body }}
+ prerelease: ${{ steps.tag.outputs.prerelease }}
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/composer.json b/composer.json
index c77144c027..ccbc85c89e 100644
--- a/composer.json
+++ b/composer.json
@@ -42,7 +42,7 @@
"matomo/ini": "~3.0",
"matomo/matomo-php-tracker": "^3.0",
"matomo/network": "~2.0",
- "matomo/referrer-spam-list": "~4.0.0",
+ "matomo/referrer-spam-list": "dev-master",
"matomo/searchengine-and-social-list": "~3.0",
"monolog/monolog": "~1.11",
"mustangostang/spyc": "~0.6.0",
diff --git a/composer.lock b/composer.lock
index a38e59a968..8e5f9fde7f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "7594badf335be345564cc3259be6940e",
+ "content-hash": "9f6dbec89d3c3357d4208cdf4be7ce74",
"packages": [
{
"name": "composer/ca-bundle",
@@ -398,16 +398,16 @@
},
{
"name": "matomo/device-detector",
- "version": "5.0.3",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/matomo-org/device-detector.git",
- "reference": "42c06b9031048b90f7bc6c9d530dbe135bc3e381"
+ "reference": "cd1283126b4cf5081fdc0381b5b5e7849333cfa4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/42c06b9031048b90f7bc6c9d530dbe135bc3e381",
- "reference": "42c06b9031048b90f7bc6c9d530dbe135bc3e381",
+ "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/cd1283126b4cf5081fdc0381b5b5e7849333cfa4",
+ "reference": "cd1283126b4cf5081fdc0381b5b5e7849333cfa4",
"shasum": ""
},
"require": {
@@ -419,7 +419,7 @@
},
"require-dev": {
"matthiasmullie/scrapbook": "^1.4.7",
- "mayflower/mo4-coding-standard": "dev-master#275cb9d",
+ "mayflower/mo4-coding-standard": "^v8.0.0",
"phpstan/phpstan": "^0.12.52",
"phpunit/phpunit": "^8.5.8",
"psr/cache": "^1.0.1",
@@ -463,7 +463,7 @@
"source": "https://github.com/matomo-org/matomo",
"wiki": "https://dev.matomo.org/"
},
- "time": "2022-01-13T19:22:57+00:00"
+ "time": "2022-03-08T09:22:55+00:00"
},
{
"name": "matomo/doctrine-cache-fork",
@@ -695,22 +695,23 @@
},
{
"name": "matomo/referrer-spam-list",
- "version": "4.0.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/matomo-org/referrer-spam-list.git",
- "reference": "afe4c1ea107ee7a8915a0d5eb0031cf0366608a8"
+ "reference": "980999af6f2f42c715066ef6b8ea289d34ae88ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/matomo-org/referrer-spam-list/zipball/afe4c1ea107ee7a8915a0d5eb0031cf0366608a8",
- "reference": "afe4c1ea107ee7a8915a0d5eb0031cf0366608a8",
+ "url": "https://api.github.com/repos/matomo-org/referrer-spam-list/zipball/980999af6f2f42c715066ef6b8ea289d34ae88ee",
+ "reference": "980999af6f2f42c715066ef6b8ea289d34ae88ee",
"shasum": ""
},
"replace": {
"matomo/referrer-spam-blacklist": "*",
"piwik/referrer-spam-blacklist": "*"
},
+ "default-branch": true,
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -719,9 +720,9 @@
"description": "Community-contributed list of referrer spammers",
"support": {
"issues": "https://github.com/matomo-org/referrer-spam-list/issues",
- "source": "https://github.com/matomo-org/referrer-spam-list/tree/4.0.0"
+ "source": "https://github.com/matomo-org/referrer-spam-list/tree/master"
},
- "time": "2020-08-10T19:54:07+00:00"
+ "time": "2022-02-12T02:36:05+00:00"
},
{
"name": "matomo/searchengine-and-social-list",
@@ -1031,12 +1032,12 @@
}
},
"autoload": {
- "psr-4": {
- "Opis\\Closure\\": "src/"
- },
"files": [
"functions.php"
- ]
+ ],
+ "psr-4": {
+ "Opis\\Closure\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1391,12 +1392,12 @@
},
"type": "library",
"autoload": {
- "psr-4": {
- "DI\\": "src/"
- },
"files": [
"src/functions.php"
- ]
+ ],
+ "psr-4": {
+ "DI\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1473,16 +1474,16 @@
},
{
"name": "phpmailer/phpmailer",
- "version": "v6.5.3",
+ "version": "v6.6.0",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "baeb7cde6b60b1286912690ab0693c7789a31e71"
+ "reference": "e43bac82edc26ca04b36143a48bde1c051cfd5b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/baeb7cde6b60b1286912690ab0693c7789a31e71",
- "reference": "baeb7cde6b60b1286912690ab0693c7789a31e71",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e43bac82edc26ca04b36143a48bde1c051cfd5b1",
+ "reference": "e43bac82edc26ca04b36143a48bde1c051cfd5b1",
"shasum": ""
},
"require": {
@@ -1495,10 +1496,10 @@
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
- "php-parallel-lint/php-parallel-lint": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.3.1",
"phpcompatibility/php-compatibility": "^9.3.5",
"roave/security-advisories": "dev-latest",
- "squizlabs/php_codesniffer": "^3.6.0",
+ "squizlabs/php_codesniffer": "^3.6.2",
"yoast/phpunit-polyfills": "^1.0.0"
},
"suggest": {
@@ -1539,7 +1540,7 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"support": {
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
- "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.3"
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.6.0"
},
"funding": [
{
@@ -1547,7 +1548,7 @@
"type": "github"
}
],
- "time": "2021-11-25T16:34:11+00:00"
+ "time": "2022-02-28T15:31:21+00:00"
},
{
"name": "psr/container",
@@ -1834,7 +1835,7 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -1866,12 +1867,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1896,7 +1897,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
},
"funding": [
{
@@ -1916,7 +1917,7 @@
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
@@ -1979,7 +1980,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0"
},
"funding": [
{
@@ -1999,7 +2000,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.24.0",
+ "version": "v1.25.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -2031,12 +2032,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2062,7 +2063,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
},
"funding": [
{
@@ -2113,12 +2114,12 @@
}
},
"autoload": {
- "psr-4": {
- "CpChart\\": "src/"
- },
"files": [
"constants.php"
- ]
+ ],
+ "psr-4": {
+ "CpChart\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2503,29 +2504,30 @@
},
{
"name": "doctrine/instantiator",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.0",
+ "doctrine/coding-standard": "^9",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
},
"type": "library",
"autoload": {
@@ -2552,7 +2554,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
},
"funding": [
{
@@ -2568,7 +2570,7 @@
"type": "tidelift"
}
],
- "time": "2020-11-10T18:47:58+00:00"
+ "time": "2022-03-03T08:28:38+00:00"
},
{
"name": "escapestudios/symfony2-coding-standard",
@@ -2684,25 +2686,29 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.2",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
"require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
@@ -2727,7 +2733,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
},
"funding": [
{
@@ -2735,7 +2741,7 @@
"type": "tidelift"
}
],
- "time": "2020-11-13T09:40:50+00:00"
+ "time": "2022-03-03T13:19:32+00:00"
},
{
"name": "phar-io/manifest",
@@ -2799,16 +2805,16 @@
},
{
"name": "phar-io/version",
- "version": "3.1.1",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "15a90844ad40f127afd244c0cad228de2a80052a"
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a",
- "reference": "15a90844ad40f127afd244c0cad228de2a80052a",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": ""
},
"require": {
@@ -2844,9 +2850,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.1.1"
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
},
- "time": "2022-02-07T21:56:48+00:00"
+ "time": "2022-02-21T01:04:05+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -3423,16 +3429,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "8.5.23",
+ "version": "8.5.24",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "efb20ff3623b9d09bf190a68fdfe574538a8d496"
+ "reference": "293cb0099d75407d971a73f41e51f35b664667ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb20ff3623b9d09bf190a68fdfe574538a8d496",
- "reference": "efb20ff3623b9d09bf190a68fdfe574538a8d496",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/293cb0099d75407d971a73f41e51f35b664667ed",
+ "reference": "293cb0099d75407d971a73f41e51f35b664667ed",
"shasum": ""
},
"require": {
@@ -3504,7 +3510,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.23"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.24"
},
"funding": [
{
@@ -3516,7 +3522,7 @@
"type": "github"
}
],
- "time": "2022-01-21T05:50:34+00:00"
+ "time": "2022-03-05T16:52:36+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -4249,32 +4255,32 @@
},
{
"name": "slevomat/coding-standard",
- "version": "7.0.18",
+ "version": "7.0.19",
"source": {
"type": "git",
"url": "https://github.com/slevomat/coding-standard.git",
- "reference": "b81ac84f41a4797dc25c8ede1b0718e2a74be0fc"
+ "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b81ac84f41a4797dc25c8ede1b0718e2a74be0fc",
- "reference": "b81ac84f41a4797dc25c8ede1b0718e2a74be0fc",
+ "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37",
+ "reference": "bef66a43815bbf9b5f49775e9ded3f7c6ba0cc37",
"shasum": ""
},
"require": {
"dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
"php": "^7.1 || ^8.0",
"phpstan/phpdoc-parser": "^1.0.0",
- "squizlabs/php_codesniffer": "^3.6.1"
+ "squizlabs/php_codesniffer": "^3.6.2"
},
"require-dev": {
- "phing/phing": "2.17.0",
- "php-parallel-lint/php-parallel-lint": "1.3.1",
- "phpstan/phpstan": "1.2.0",
+ "phing/phing": "2.17.2",
+ "php-parallel-lint/php-parallel-lint": "1.3.2",
+ "phpstan/phpstan": "1.4.6",
"phpstan/phpstan-deprecation-rules": "1.0.0",
"phpstan/phpstan-phpunit": "1.0.0",
"phpstan/phpstan-strict-rules": "1.1.0",
- "phpunit/phpunit": "7.5.20|8.5.21|9.5.10"
+ "phpunit/phpunit": "7.5.20|8.5.21|9.5.16"
},
"type": "phpcodesniffer-standard",
"extra": {
@@ -4294,7 +4300,7 @@
"description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
"support": {
"issues": "https://github.com/slevomat/coding-standard/issues",
- "source": "https://github.com/slevomat/coding-standard/tree/7.0.18"
+ "source": "https://github.com/slevomat/coding-standard/tree/7.0.19"
},
"funding": [
{
@@ -4306,7 +4312,7 @@
"type": "tidelift"
}
],
- "time": "2021-12-07T17:19:06+00:00"
+ "time": "2022-03-01T18:01:41+00:00"
},
{
"name": "squizlabs/php_codesniffer",
@@ -4592,6 +4598,7 @@
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
+ "matomo/referrer-spam-list": 20,
"lox/xhprof": 20
},
"prefer-stable": false,
diff --git a/core/Archive.php b/core/Archive.php
index 26abc2ce0a..09227df4d8 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -610,10 +610,7 @@ class Archive implements ArchiveQuery
*/
private function cacheArchiveIdsAfterLaunching($archiveGroups, $plugins)
{
- $today = Date::today();
-
foreach ($this->params->getPeriods() as $period) {
- $twoDaysBeforePeriod = $period->getDateStart()->subDay(2);
$twoDaysAfterPeriod = $period->getDateEnd()->addDay(2);
foreach ($this->params->getIdSites() as $idSite) {
@@ -635,8 +632,11 @@ class Archive implements ArchiveQuery
continue;
}
- // if the starting date is in the future we know there is no visiidsite = ?t
- if ($twoDaysBeforePeriod->isLater($today)) {
+ // Allow for site timezone, local time may have started a new day ahead of UTC
+ $today = \Piwik\Date::factory('now', $site->getTimezone());
+
+ // 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());
continue;
diff --git a/core/Archive/ArchiveInvalidator.php b/core/Archive/ArchiveInvalidator.php
index 1dacecfcbe..0ef586fe8c 100644
--- a/core/Archive/ArchiveInvalidator.php
+++ b/core/Archive/ArchiveInvalidator.php
@@ -30,7 +30,6 @@ use Piwik\Segment;
use Piwik\SettingsServer;
use Piwik\Site;
use Piwik\Tracker\Cache;
-use Piwik\Tracker\Model as TrackerModel;
use Psr\Log\LoggerInterface;
/**
diff --git a/core/Archive/DataTableFactory.php b/core/Archive/DataTableFactory.php
index d2c2479448..0725fd1b54 100644
--- a/core/Archive/DataTableFactory.php
+++ b/core/Archive/DataTableFactory.php
@@ -11,7 +11,6 @@ namespace Piwik\Archive;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Period;
use Piwik\Segment;
use Piwik\Site;
diff --git a/core/ArchiveProcessor/ArchivingStatus.php b/core/ArchiveProcessor/ArchivingStatus.php
index 54dfae9dae..5f0bd763b2 100644
--- a/core/ArchiveProcessor/ArchivingStatus.php
+++ b/core/ArchiveProcessor/ArchivingStatus.php
@@ -9,11 +9,9 @@
namespace Piwik\ArchiveProcessor;
-use Piwik\Common;
use Piwik\Concurrency\Lock;
use Piwik\Concurrency\LockBackend;
use Piwik\Container\StaticContainer;
-use Piwik\SettingsPiwik;
class ArchivingStatus
{
diff --git a/core/ArchiveProcessor/Parameters.php b/core/ArchiveProcessor/Parameters.php
index c328170637..4d9975ca9e 100644
--- a/core/ArchiveProcessor/Parameters.php
+++ b/core/ArchiveProcessor/Parameters.php
@@ -9,9 +9,6 @@
namespace Piwik\ArchiveProcessor;
-use Piwik\Cache;
-use Piwik\DataAccess\Model;
-use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Log;
use Piwik\Period;
diff --git a/core/ArchiveProcessor/Rules.php b/core/ArchiveProcessor/Rules.php
index 4f0fd85be6..d1ff2e0880 100644
--- a/core/ArchiveProcessor/Rules.php
+++ b/core/ArchiveProcessor/Rules.php
@@ -9,18 +9,15 @@
namespace Piwik\ArchiveProcessor;
use Exception;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Config\GeneralConfig;
use Piwik\DataAccess\ArchiveWriter;
-use Piwik\DataAccess\Model;
use Piwik\Date;
use Piwik\Log;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CoreAdminHome\Controller;
-use Piwik\Scheduler\Task;
use Piwik\Segment;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
diff --git a/core/AssetManager.php b/core/AssetManager.php
index 3e174718e2..c2ad38ef96 100644
--- a/core/AssetManager.php
+++ b/core/AssetManager.php
@@ -16,6 +16,7 @@ use Piwik\AssetManager\UIAssetCacheBuster;
use Piwik\AssetManager\UIAssetFetcher\JScriptUIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher\StaticUIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher\StylesheetUIAssetFetcher;
+use Piwik\AssetManager\UIAssetFetcher\PluginUmdAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetMerger\JScriptUIAssetMerger;
use Piwik\AssetManager\UIAssetMerger\StylesheetUIAssetMerger;
@@ -44,9 +45,11 @@ class AssetManager extends Singleton
const CSS_IMPORT_DIRECTIVE = "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />\n";
const JS_IMPORT_DIRECTIVE = "<script type=\"text/javascript\" src=\"%s\"></script>\n";
+ const JS_DEFER_IMPORT_DIRECTIVE = "<script type=\"text/javascript\" src=\"%s\" defer></script>\n";
const GET_CSS_MODULE_ACTION = "index.php?module=Proxy&action=getCss";
const GET_CORE_JS_MODULE_ACTION = "index.php?module=Proxy&action=getCoreJs";
const GET_NON_CORE_JS_MODULE_ACTION = "index.php?module=Proxy&action=getNonCoreJs";
+ const GET_JS_UMD_MODULE_ACTION = "index.php?module=Proxy&action=getUmdJs&chunk=";
/**
* @var UIAssetCacheBuster
@@ -149,11 +152,27 @@ class AssetManager extends Singleton
} else {
$result .= sprintf(self::JS_IMPORT_DIRECTIVE, self::GET_CORE_JS_MODULE_ACTION);
$result .= sprintf(self::JS_IMPORT_DIRECTIVE, self::GET_NON_CORE_JS_MODULE_ACTION);
+
+ $result .= $this->getPluginUmdChunks();
}
return $result;
}
+ private function getPluginUmdChunks()
+ {
+ $fetcher = $this->getPluginUmdJScriptFetcher();
+
+ $chunks = $fetcher->getChunkFiles();
+
+ $result = '';
+ foreach ($chunks as $chunk) {
+ $src = self::GET_JS_UMD_MODULE_ACTION . urlencode($chunk->getChunkName());
+ $result .= sprintf(self::JS_DEFER_IMPORT_DIRECTIVE, $src);
+ }
+ return $result;
+ }
+
/**
* Return the base.less compiled to css
*
@@ -212,7 +231,22 @@ class AssetManager extends Singleton
}
/**
- * @param boolean $core
+ * Return a chunk JS merged file absolute location.
+ * If there is none, the generation process will be triggered.
+ *
+ * @param string $chunk The name of the chunk. Will either be a plugin name or an integer.
+ * @return UIAsset
+ */
+ public function getMergedJavaScriptChunk($chunk)
+ {
+ $assetFetcher = $this->getPluginUmdJScriptFetcher($chunk);
+ $outputFile = $assetFetcher->getRequestedChunkOutputFile();
+
+ return $this->getMergedJavascript($assetFetcher, $this->getMergedUIAsset($outputFile));
+ }
+
+ /**
+ * @param boolean|"all" $core
* @return string[]
*/
public function getLoadedPlugins($core)
@@ -223,7 +257,7 @@ class AssetManager extends Singleton
$pluginName = $plugin->getPluginName();
$pluginIsCore = Manager::getInstance()->isPluginBundledWithCore($pluginName);
- if (($pluginIsCore && $core) || (!$pluginIsCore && !$core)) {
+ if ($core === 'all' || ($pluginIsCore && $core) || (!$pluginIsCore && !$core)) {
$loadedPlugins[] = $pluginName;
}
}
@@ -316,7 +350,8 @@ class AssetManager extends Singleton
{
return
$this->getIndividualJsIncludesFromAssetFetcher($this->getCoreJScriptFetcher()) .
- $this->getIndividualJsIncludesFromAssetFetcher($this->getNonCoreJScriptFetcher());
+ $this->getIndividualJsIncludesFromAssetFetcher($this->getNonCoreJScriptFetcher()) .
+ $this->getIndividualJsIncludesFromAssetFetcher($this->getPluginUmdJScriptFetcher());
}
/**
@@ -347,6 +382,11 @@ class AssetManager extends Singleton
return new JScriptUIAssetFetcher($this->getLoadedPlugins(false), $this->theme);
}
+ protected function getPluginUmdJScriptFetcher($chunk = null)
+ {
+ return new PluginUmdAssetFetcher($this->getLoadedPlugins('all'), $this->theme, $chunk);
+ }
+
/**
* @param string $pluginName
* @return boolean
diff --git a/core/AssetManager/UIAsset.php b/core/AssetManager/UIAsset.php
index cc26ba9564..012d5ab1ea 100644
--- a/core/AssetManager/UIAsset.php
+++ b/core/AssetManager/UIAsset.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\AssetManager;
-use Exception;
abstract class UIAsset
{
diff --git a/core/AssetManager/UIAssetFetcher/Chunk.php b/core/AssetManager/UIAssetFetcher/Chunk.php
new file mode 100644
index 0000000000..db42428baa
--- /dev/null
+++ b/core/AssetManager/UIAssetFetcher/Chunk.php
@@ -0,0 +1,69 @@
+<?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\AssetManager\UIAssetFetcher;
+
+class Chunk
+{
+ /**
+ * @var string
+ */
+ private $chunkName;
+
+ /**
+ * @var string[]
+ */
+ private $files;
+
+ public function __construct($chunkName, $files)
+ {
+ $this->chunkName = $chunkName;
+ $this->files = $files;
+ }
+
+ /**
+ * @return string
+ */
+ public function getOutputFile(): string
+ {
+ return "asset_manager_chunk.{$this->chunkName}.js";
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getFiles(): array
+ {
+ return $this->files;
+ }
+
+ /**
+ * @param string[] $files
+ */
+ public function setFiles(array $files): void
+ {
+ $this->files = $files;
+ }
+
+ /**
+ * @return string
+ */
+ public function getChunkName(): string
+ {
+ return $this->chunkName;
+ }
+
+ /**
+ * @param string $chunkName
+ */
+ public function setChunkName(string $chunkName): void
+ {
+ $this->chunkName = $chunkName;
+ }
+} \ No newline at end of file
diff --git a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
index b9a4b3838b..4248db9393 100644
--- a/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/JScriptUIAssetFetcher.php
@@ -9,7 +9,6 @@
namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
-use Piwik\Development;
use Piwik\Piwik;
class JScriptUIAssetFetcher extends UIAssetFetcher
@@ -18,7 +17,6 @@ class JScriptUIAssetFetcher extends UIAssetFetcher
protected function retrieveFileLocations()
{
if (!empty($this->plugins)) {
-
/**
* Triggered when gathering the list of all JavaScript files needed by Piwik
* and its plugins.
@@ -44,8 +42,6 @@ class JScriptUIAssetFetcher extends UIAssetFetcher
* @param string[] $jsFiles The JavaScript files to load.
*/
Piwik::postEvent('AssetManager.getJavaScriptFiles', array(&$this->fileLocations), null, $this->plugins);
-
- $this->addUmdFilesIfDetected($this->plugins);
}
$this->addThemeFiles();
@@ -96,64 +92,4 @@ class JScriptUIAssetFetcher extends UIAssetFetcher
'tests/',
);
}
-
- private function addUmdFilesIfDetected($plugins)
- {
- $plugins = self::orderPluginsByPluginDependencies($plugins);
-
- foreach ($plugins as $plugin) {
- $devUmd = "plugins/$plugin/vue/dist/$plugin.development.umd.js";
- $minifiedUmd = "plugins/$plugin/vue/dist/$plugin.umd.min.js";
- $umdSrcFolder = "plugins/$plugin/vue/src";
-
- // in case there are dist files but no src files, which can happen during development
- if (is_dir($umdSrcFolder)) {
- if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) {
- $this->fileLocations[$plugin] = $devUmd;
- } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) {
- $this->fileLocations[$plugin] = $minifiedUmd;
- }
- }
- }
- }
-
- public static function orderPluginsByPluginDependencies($plugins)
- {
- $result = [];
-
- while (!empty($plugins)) {
- self::visitPlugin(reset($plugins), $plugins, $result);
- }
-
- return $result;
- }
-
- private static function visitPlugin($plugin, &$plugins, &$result)
- {
- // remove the plugin from the array of plugins to visit
- $index = array_search($plugin, $plugins);
- if ($index !== false) {
- unset($plugins[$index]);
- } else {
- return; // already visited
- }
-
- // read the plugin dependencies, if any
- $umdMetadata = "plugins/$plugin/vue/dist/umd.metadata.json";
-
- $pluginDependencies = [];
- if (is_file($umdMetadata)) {
- $pluginDependencies = json_decode(file_get_contents($umdMetadata), true);
- }
-
- if (!empty($pluginDependencies['dependsOn'])) {
- // visit each plugin this one depends on first, so it is loaded first
- foreach ($pluginDependencies['dependsOn'] as $pluginDependency) {
- self::visitPlugin($pluginDependency, $plugins, $result);
- }
- }
-
- // add the plugin to the load order after visiting its dependencies
- $result[] = $plugin;
- }
}
diff --git a/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
new file mode 100644
index 0000000000..6834d2923f
--- /dev/null
+++ b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
@@ -0,0 +1,272 @@
+<?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\AssetManager\UIAssetFetcher;
+
+use Piwik\AssetManager\UIAssetFetcher;
+use Piwik\Config;
+use Piwik\Development;
+use Piwik\Plugin\Manager;
+
+class PluginUmdAssetFetcher extends UIAssetFetcher
+{
+ /**
+ * @var string
+ */
+ private $requestedChunk;
+
+ /**
+ * @var boolean
+ */
+ private $loadIndividually;
+
+ /**
+ * @var int|null
+ */
+ private $chunkCount;
+
+ public function __construct($plugins, $theme, $chunk, $loadIndividually = null, $chunkCount = null)
+ {
+ parent::__construct($plugins, $theme);
+
+ if ($loadIndividually === null) {
+ $loadIndividually = self::getDefaultLoadIndividually();
+ }
+
+ if ($chunkCount === null) {
+ $chunkCount = self::getDefaultChunkCount();
+ }
+
+ $this->requestedChunk = $chunk;
+ $this->loadIndividually = $loadIndividually;
+ $this->chunkCount = $chunkCount;
+
+ if (!$this->loadIndividually && (!is_int($chunkCount) || $chunkCount <= 0)) {
+ throw new \Exception("Invalid chunk count: $chunkCount");
+ }
+ }
+
+ public function getRequestedChunkOutputFile()
+ {
+ return "asset_manager_chunk.{$this->requestedChunk}.js";
+ }
+
+ /**
+ * @return Chunk[]
+ */
+ public function getChunkFiles()
+ {
+ $allPluginUmds = $this->getAllPluginUmds();
+
+ if ($this->loadIndividually) {
+ return $allPluginUmds;
+ }
+
+ $totalSize = $this->getTotalChunkSize($allPluginUmds);
+
+ $chunkFiles = $this->dividePluginUmdsByChunkCount($allPluginUmds, $totalSize);
+
+ $chunks = [];
+ foreach ($chunkFiles as $index => $jsFiles) {
+ $chunks[] = new Chunk($index, $jsFiles);
+ }
+ return $chunks;
+ }
+
+ private function getTotalChunkSize($allPluginUmds)
+ {
+ $totalSize = 0;
+ foreach ($allPluginUmds as $chunk) {
+ $path = PIWIK_INCLUDE_PATH . '/' . $chunk->getFiles()[0];
+ if (is_file($path)) {
+ $totalSize += filesize($path);
+ }
+ }
+ return $totalSize;
+ }
+
+ private function getAllPluginUmds()
+ {
+ $plugins = self::orderPluginsByPluginDependencies($this->plugins, false);
+
+ $allPluginUmds = [];
+ foreach ($plugins as $plugin) {
+ $pluginDir = self::getRelativePluginDirectory($plugin);
+ $minifiedUmd = "$pluginDir/vue/dist/$plugin.umd.min.js";
+ if (!is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) {
+ continue;
+ }
+
+ $allPluginUmds[] = new Chunk($plugin, [$minifiedUmd]);
+ }
+ return $allPluginUmds;
+ }
+
+ private function dividePluginUmdsByChunkCount($allPluginUmds, $totalSize)
+ {
+ $chunkSizeLimit = floor($totalSize / $this->chunkCount);
+
+ $chunkFiles = [];
+
+ $currentChunkIndex = 0;
+ $currentChunkSize = 0;
+ foreach ($allPluginUmds as $pluginChunk) {
+ $path = PIWIK_INCLUDE_PATH . '/' . $pluginChunk->getFiles()[0];
+ if (!is_file($path)) {
+ continue;
+ }
+
+ $size = filesize($path);
+ $currentChunkSize += $size;
+
+ if ($currentChunkSize > $chunkSizeLimit
+ && !empty($chunkFiles[$currentChunkIndex])
+ && $currentChunkIndex < $this->chunkCount - 1
+ ) {
+ ++$currentChunkIndex;
+ $currentChunkSize = $size;
+ }
+
+ $chunkFiles[$currentChunkIndex][] = $pluginChunk->getFiles()[0];
+ }
+
+ return $chunkFiles;
+ }
+
+ protected function retrieveFileLocations()
+ {
+ if (empty($this->plugins)) {
+ return;
+ }
+
+ if ($this->requestedChunk !== null && $this->requestedChunk !== '') {
+ $chunkFiles = $this->getChunkFiles();
+
+ $foundChunk = null;
+ foreach ($chunkFiles as $chunk) {
+ if ($chunk->getChunkName() == $this->requestedChunk) {
+ $foundChunk = $chunk;
+ break;
+ }
+ }
+
+ if (!$foundChunk) {
+ throw new \Exception("Could not find chunk {$this->requestedChunk}");
+ }
+
+ foreach ($foundChunk->getFiles() as $file) {
+ $this->fileLocations[] = $file;
+ }
+
+ return;
+ }
+
+ // either loadFilesIndividually = true, or being called w/ disable_merged_assets=1
+ $this->addUmdFilesIfDetected($this->plugins);
+ }
+
+ private function addUmdFilesIfDetected($plugins)
+ {
+ $plugins = self::orderPluginsByPluginDependencies($plugins, false);
+
+ foreach ($plugins as $plugin) {
+ $pluginDir = self::getRelativePluginDirectory($plugin);
+
+ $devUmd = "$pluginDir/vue/dist/$plugin.development.umd.js";
+ $minifiedUmd = "$pluginDir/vue/dist/$plugin.umd.min.js";
+ $umdSrcFolder = "$pluginDir/vue/src";
+
+ // in case there are dist files but no src files, which can happen during development
+ if (is_dir(PIWIK_INCLUDE_PATH . '/' . $umdSrcFolder)) {
+ if (Development::isEnabled() && is_file(PIWIK_INCLUDE_PATH . '/' . $devUmd)) {
+ $this->fileLocations[] = $devUmd;
+ } else if (is_file(PIWIK_INCLUDE_PATH . '/' . $minifiedUmd)) {
+ $this->fileLocations[] = $minifiedUmd;
+ }
+ }
+ }
+ }
+
+ public static function orderPluginsByPluginDependencies($plugins, $keepUnresolved = true)
+ {
+ $result = [];
+
+ while (!empty($plugins)) {
+ self::visitPlugin(reset($plugins), $keepUnresolved, $plugins, $result);
+ }
+
+ return $result;
+ }
+
+ private static function visitPlugin($plugin, $keepUnresolved, &$plugins, &$result)
+ {
+ // remove the plugin from the array of plugins to visit
+ $index = array_search($plugin, $plugins);
+ if ($index !== false) {
+ unset($plugins[$index]);
+ } else {
+ return; // already visited
+ }
+
+ // 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);
+ }
+
+ if (!empty($pluginDependencies['dependsOn'])) {
+ // visit each plugin this one depends on first, so it is loaded first
+ foreach ($pluginDependencies['dependsOn'] as $pluginDependency) {
+ // check if dependency is not activated
+ if (!in_array($pluginDependency, $plugins)
+ && !in_array($pluginDependency, $result)
+ && !$keepUnresolved
+ ) {
+ return;
+ }
+
+ self::visitPlugin($pluginDependency, $keepUnresolved, $plugins, $result);
+ }
+ }
+
+ // add the plugin to the load order after visiting its dependencies
+ $result[] = $plugin;
+ }
+
+ protected function getPriorityOrder()
+ {
+ // the JS files are already ordered properly so this result doesn't matter
+ return [];
+ }
+
+ private static function getRelativePluginDirectory($plugin)
+ {
+ $result = self::getPluginDirectory($plugin);
+ $result = str_replace(PIWIK_INCLUDE_PATH . '/', '', $result);
+ return $result;
+ }
+
+ private static function getPluginDirectory($plugin)
+ {
+ return Manager::getInstance()->getPluginDirectory($plugin);
+ }
+
+ public static function getDefaultLoadIndividually()
+ {
+ return (Config::getInstance()->General['assets_umd_load_individually'] ?? 0) == 1;
+ }
+
+ public static function getDefaultChunkCount()
+ {
+ return (int)(Config::getInstance()->General['assets_umd_chunk_count'] ?? 3);
+ }
+} \ No newline at end of file
diff --git a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
index cca95ef384..68004330e7 100644
--- a/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/StylesheetUIAssetFetcher.php
@@ -9,7 +9,6 @@
namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
-use Piwik\Development;
use Piwik\Piwik;
class StylesheetUIAssetFetcher extends UIAssetFetcher
diff --git a/core/Changes/Model.php b/core/Changes/Model.php
index a9b46ad7a3..0988ca96d3 100644
--- a/core/Changes/Model.php
+++ b/core/Changes/Model.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Changes;
-use Piwik\Exception\Exception;
use Piwik\Piwik;
use Piwik\Common;
use Piwik\Date;
diff --git a/core/CliMulti/Output.php b/core/CliMulti/Output.php
index eced3854af..84fbaefb9f 100644
--- a/core/CliMulti/Output.php
+++ b/core/CliMulti/Output.php
@@ -8,7 +8,6 @@
namespace Piwik\CliMulti;
use Piwik\CliMulti;
-use Piwik\Common;
use Piwik\Filesystem;
class Output implements OutputInterface
diff --git a/core/CliMulti/OutputInterface.php b/core/CliMulti/OutputInterface.php
index 33d1978797..8eead52bd0 100644
--- a/core/CliMulti/OutputInterface.php
+++ b/core/CliMulti/OutputInterface.php
@@ -7,9 +7,6 @@
*/
namespace Piwik\CliMulti;
-use Piwik\CliMulti;
-use Piwik\Common;
-use Piwik\Filesystem;
interface OutputInterface
{
diff --git a/core/CliMulti/StaticOutput.php b/core/CliMulti/StaticOutput.php
index d298cc7bca..8c2291db64 100644
--- a/core/CliMulti/StaticOutput.php
+++ b/core/CliMulti/StaticOutput.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\CliMulti;
-use Piwik\CliMulti;
use Piwik\Common;
-use Piwik\Filesystem;
class StaticOutput implements OutputInterface
{
diff --git a/core/Columns/Dimension.php b/core/Columns/Dimension.php
index c4ad3d9c8d..0875e1e753 100644
--- a/core/Columns/Dimension.php
+++ b/core/Columns/Dimension.php
@@ -12,7 +12,6 @@ use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ArchivedMetric;
-use Piwik\Plugin\ComponentFactory;
use Piwik\Plugin\Segment;
use Exception;
use Piwik\CacheId;
diff --git a/core/Columns/Discriminator.php b/core/Columns/Discriminator.php
index 7f85684986..98a85d20ac 100644
--- a/core/Columns/Discriminator.php
+++ b/core/Columns/Discriminator.php
@@ -9,7 +9,6 @@
namespace Piwik\Columns;
use Exception;
-use Piwik\Plugins\Actions\Actions\ActionSiteSearch;
/**
* @api
diff --git a/core/Common.php b/core/Common.php
index 9a8d45d6b7..44d9e2cfdf 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -13,7 +13,6 @@ use Piwik\CliMulti\Process;
use Piwik\Container\StaticContainer;
use Piwik\Intl\Data\Provider\LanguageDataProvider;
use Piwik\Intl\Data\Provider\RegionDataProvider;
-use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Tracker\Cache as TrackerCache;
/**
diff --git a/core/Cookie.php b/core/Cookie.php
index ed7d1351ad..6ce81416e4 100644
--- a/core/Cookie.php
+++ b/core/Cookie.php
@@ -146,7 +146,10 @@ class Cookie
}
}
- $Expires = $this->formatExpireTime($Expires);
+ // Format expire time only for non session cookies
+ if (0 !== $Expires) {
+ $Expires = $this->formatExpireTime($Expires);
+ }
$header = 'Set-Cookie: ' . rawurlencode($Name) . '=' . rawurlencode($Value)
. (empty($Expires) ? '' : '; expires=' . $Expires)
diff --git a/core/CronArchive.php b/core/CronArchive.php
index dcde1460fc..de55cddcc0 100644
--- a/core/CronArchive.php
+++ b/core/CronArchive.php
@@ -23,8 +23,6 @@ use Piwik\CronArchive\QueueConsumer;
use Piwik\CronArchive\SharedSiteIds;
use Piwik\CronArchive\StopArchiverException;
use Piwik\DataAccess\ArchiveSelector;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\DataAccess\ArchiveWriter;
use Piwik\DataAccess\Model;
use Piwik\DataAccess\RawLogDao;
use Piwik\Exception\UnexpectedWebsiteFoundException;
diff --git a/core/CronArchive/QueueConsumer.php b/core/CronArchive/QueueConsumer.php
index 2f4902e588..7e920fa6bc 100644
--- a/core/CronArchive/QueueConsumer.php
+++ b/core/CronArchive/QueueConsumer.php
@@ -14,18 +14,14 @@ use Piwik\ArchiveProcessor\Loader;
use Piwik\ArchiveProcessor\Parameters;
use Piwik\ArchiveProcessor\Rules;
use Piwik\CliMulti\RequestParser;
-use Piwik\Common;
use Piwik\CronArchive;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\Model;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Period;
use Piwik\Period\Factory as PeriodFactory;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Segment;
use Piwik\Site;
use Piwik\Timer;
diff --git a/core/CronArchive/SegmentArchiving.php b/core/CronArchive/SegmentArchiving.php
index 1464eeb295..f7dc4636e9 100644
--- a/core/CronArchive/SegmentArchiving.php
+++ b/core/CronArchive/SegmentArchiving.php
@@ -14,7 +14,6 @@ use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\CronArchive;
use Piwik\Date;
use Piwik\Db;
use Piwik\Period\Range;
diff --git a/core/DataAccess/ArchiveSelector.php b/core/DataAccess/ArchiveSelector.php
index c0a19a6033..721163804a 100644
--- a/core/DataAccess/ArchiveSelector.php
+++ b/core/DataAccess/ArchiveSelector.php
@@ -20,7 +20,6 @@ use Piwik\Db;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Segment;
-use Piwik\SettingsServer;
use Psr\Log\LoggerInterface;
/**
diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php
index e283af2691..cada4b1571 100644
--- a/core/DataAccess/LogAggregator.php
+++ b/core/DataAccess/LogAggregator.php
@@ -282,8 +282,7 @@ class LogAggregator
if (defined('PIWIK_TEST_MODE') && PIWIK_TEST_MODE) {
$engine = 'ENGINE=MEMORY';
}
- $tempTableIdVisitColumn = 'idvisit BIGINT(10) UNSIGNED NOT NULL';
- $createTableSql = 'CREATE TEMPORARY TABLE ' . $table . ' (' . $tempTableIdVisitColumn . ') ' . $engine;
+ $createTableSql = 'CREATE TEMPORARY TABLE ' . $table . ' (idvisit BIGINT(10) UNSIGNED NOT NULL, PRIMARY KEY (`idvisit`)) ' . $engine;
// we do not insert the data right away using create temporary table ... select ...
// to avoid metadata lock see eg https://www.percona.com/blog/2018/01/10/why-avoid-create-table-as-select-statement/
@@ -293,23 +292,7 @@ class LogAggregator
} catch (\Exception $e) {
if ($readerDb->isErrNo($e, \Piwik\Updater\Migration\Db::ERROR_CODE_TABLE_EXISTS)) {
return;
- } elseif ($readerDb->isErrNo($e, \Piwik\Updater\Migration\Db::ERROR_CODE_REQUIRES_PRIMARY_KEY)
- || $readerDb->isErrNo($e, \Piwik\Updater\Migration\Db::ERROR_CODE_UNABLE_CREATE_TABLE_WITHOUT_PRIMARY_KEY
- || stripos($e->getMessage(), 'requires a primary key') !== false
- || stripos($e->getMessage(), 'table without a primary key') !== false)
- ) {
- $createTableSql = str_replace($tempTableIdVisitColumn, $tempTableIdVisitColumn . ', PRIMARY KEY (`idvisit`)', $createTableSql);
-
- try {
- $readerDb->query($createTableSql);
- } catch (\Exception $e) {
- if ($readerDb->isErrNo($e, \Piwik\Updater\Migration\Db::ERROR_CODE_TABLE_EXISTS)) {
- return;
- } else {
- throw $e;
- }
- }
- } else {
+ } else {
throw $e;
}
}
diff --git a/core/DataTable.php b/core/DataTable.php
index 8b9291a78e..62ebc6db18 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -11,7 +11,6 @@ namespace Piwik;
use Closure;
use Exception;
-use Piwik\Archive\DataTableFactory;
use Piwik\DataTable\DataTableInterface;
use Piwik\DataTable\Manager;
use Piwik\DataTable\Renderer\Html;
diff --git a/core/DataTable/Map.php b/core/DataTable/Map.php
index 8700d8822d..351cb4d058 100644
--- a/core/DataTable/Map.php
+++ b/core/DataTable/Map.php
@@ -11,7 +11,6 @@ namespace Piwik\DataTable;
use Closure;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Renderer\Console;
use Piwik\DataTable\Renderer\Html;
/**
diff --git a/core/DataTable/Row.php b/core/DataTable/Row.php
index 731ad4f977..878c1a61cf 100644
--- a/core/DataTable/Row.php
+++ b/core/DataTable/Row.php
@@ -12,7 +12,6 @@ use Exception;
use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\Date;
-use Piwik\Log;
use Piwik\Metrics;
use Piwik\Period;
use Psr\Log\LoggerInterface;
diff --git a/core/Db.php b/core/Db.php
index 23d0a493b5..b047d1d8fd 100644
--- a/core/Db.php
+++ b/core/Db.php
@@ -9,7 +9,6 @@
namespace Piwik;
use Exception;
-use Piwik\DataAccess\TableMetadata;
use Piwik\Db\Adapter;
/**
@@ -40,6 +39,8 @@ class Db
private static $logQueries = true;
+ // this is used for indicate TransactionLevel Cache
+ public $supportsUncommitted;
/**
* Returns the database connection and creates it if it hasn't been already.
*
diff --git a/core/Db/Adapter/Mysqli.php b/core/Db/Adapter/Mysqli.php
index 87f91ac32f..a46236c570 100644
--- a/core/Db/Adapter/Mysqli.php
+++ b/core/Db/Adapter/Mysqli.php
@@ -25,6 +25,10 @@ class Mysqli extends Zend_Db_Adapter_Mysqli implements AdapterInterface
*
* @param array|Zend_Config $config database configuration
*/
+
+ // this is used for indicate TransactionLevel Cache
+ public $supportsUncommitted;
+
public function __construct($config)
{
// Enable LOAD DATA INFILE
diff --git a/core/Db/Adapter/Pdo/Mysql.php b/core/Db/Adapter/Pdo/Mysql.php
index 1170afe3f5..adbdaa6908 100644
--- a/core/Db/Adapter/Pdo/Mysql.php
+++ b/core/Db/Adapter/Pdo/Mysql.php
@@ -29,6 +29,10 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
*
* @param array|Zend_Config $config database configuration
*/
+
+ // this is used for indicate TransactionLevel Cache
+ public $supportsUncommitted;
+
public function __construct($config)
{
// Enable LOAD DATA INFILE
diff --git a/core/Db/TransactionLevel.php b/core/Db/TransactionLevel.php
index c19699084c..f087f4adcd 100644
--- a/core/Db/TransactionLevel.php
+++ b/core/Db/TransactionLevel.php
@@ -40,12 +40,18 @@ class TransactionLevel
public function setUncommitted()
{
+ if ($this->db->supportsUncommitted === false) {
+ // we know "Uncommitted" transaction level is not supported, we don't need to do anything as it won't work to set the status
+ return false;
+ }
+
try {
$backup = $this->db->fetchOne('SELECT @@TX_ISOLATION');
} catch (\Exception $e) {
try {
$backup = $this->db->fetchOne('SELECT @@transaction_isolation');
} catch (\Exception $e) {
+ $this->db->supportsUncommitted = false;
return false;
}
}
@@ -54,9 +60,17 @@ class TransactionLevel
$this->db->query('SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED');
$this->statusBackup = $backup;
- Option::set(self::TEST_OPTION_NAME, '1'); // try setting something w/ the new transaction isolation level
+ if ($this->db->supportsUncommitted === null) {
+ // the first time we need to check if the transaction level actually works by
+ // trying to set something w/ the new transaction isolation level
+ Option::set(self::TEST_OPTION_NAME, '1');
+ }
+
+ $this->db->supportsUncommitted = true;
} catch (\Exception $e) {
+ // setting the transaction level status did not work
// catch eg 1665 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED
+ $this->db->supportsUncommitted = false;
$this->restorePreviousStatus();
return false;
}
@@ -77,7 +91,5 @@ class TransactionLevel
$this->db->query('SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ');
}
}
-
}
-
}
diff --git a/core/DeviceDetector/DeviceDetectorFactory.php b/core/DeviceDetector/DeviceDetectorFactory.php
index 83931aaa1c..bc81a74a57 100644
--- a/core/DeviceDetector/DeviceDetectorFactory.php
+++ b/core/DeviceDetector/DeviceDetectorFactory.php
@@ -9,7 +9,6 @@
namespace Piwik\DeviceDetector;
use DeviceDetector\DeviceDetector;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
class DeviceDetectorFactory
diff --git a/core/Exception/NotYetInstalledException.php b/core/Exception/NotYetInstalledException.php
index c1635f5056..a8ebbb7d8a 100644
--- a/core/Exception/NotYetInstalledException.php
+++ b/core/Exception/NotYetInstalledException.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Exception;
-use Piwik\Common;
-use Piwik\Url;
use Throwable;
class NotYetInstalledException extends InvalidRequestParameterException
diff --git a/core/Filesystem.php b/core/Filesystem.php
index 4a7e7de106..5b8101291f 100644
--- a/core/Filesystem.php
+++ b/core/Filesystem.php
@@ -314,7 +314,11 @@ class Filesystem
return str_replace($target, '', $file);
}, $targetFiles);
- $diff = array_diff($targetFiles, $sourceFiles);
+ if (FileSystem::isFileSystemCaseInsensitive()) {
+ $diff = array_udiff($targetFiles, $sourceFiles, 'strcasecmp');
+ } else {
+ $diff = array_diff($targetFiles, $sourceFiles);
+ }
return array_values($diff);
}
@@ -558,6 +562,23 @@ class Filesystem
}
/**
+ * Check if the filesystem is case sensitive by writing a temporary file
+ *
+ * @return bool
+ */
+ public static function isFileSystemCaseInsensitive() : bool
+ {
+ $testFileName = 'caseSensitivityTest.txt';
+ $pathTmp = StaticContainer::get('path.tmp');
+ @file_put_contents($pathTmp.'/'.$testFileName, 'Nothing to see here.');
+ if (\file_exists($pathTmp.'/'.strtolower($testFileName))) {
+ // Wrote caseSensitivityTest.txt but casesensitivitytest.txt exists, so case insensitive
+ return true;
+ }
+ return false;
+ }
+
+ /**
* in tmp/ (sub-)folder(s) we create empty index.htm|php files
*
* @param $path
diff --git a/core/Http/ControllerResolver.php b/core/Http/ControllerResolver.php
index 82b2891327..b518b38a05 100644
--- a/core/Http/ControllerResolver.php
+++ b/core/Http/ControllerResolver.php
@@ -10,7 +10,6 @@ namespace Piwik\Http;
use DI\FactoryInterface;
use Exception;
-use Piwik\Plugin\Controller;
use Piwik\Plugin\ReportsProvider;
use Piwik\Plugin\WidgetsProvider;
diff --git a/core/Mail/Transport.php b/core/Mail/Transport.php
index edf6b13755..e88440b0ae 100644
--- a/core/Mail/Transport.php
+++ b/core/Mail/Transport.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Mail;
use Piwik\Piwik;
-use Piwik\Version;
class Transport
{
diff --git a/core/Metrics.php b/core/Metrics.php
index 7cb3f26b86..cde226b608 100644
--- a/core/Metrics.php
+++ b/core/Metrics.php
@@ -9,7 +9,6 @@
namespace Piwik;
use Piwik\Cache as PiwikCache;
-use Piwik\Container\StaticContainer;
require_once PIWIK_INCLUDE_PATH . "/core/Piwik.php";
diff --git a/core/Piwik.php b/core/Piwik.php
index e0c25d81d3..0c9c1ff66a 100644
--- a/core/Piwik.php
+++ b/core/Piwik.php
@@ -185,7 +185,7 @@ class Piwik
$user = APIUsersManager::getInstance()->getUser(Piwik::getCurrentUserLogin());
return $user['date_registered'] ?? '';
}
-
+
/**
* Returns the current user's Last Seen.
*
@@ -889,4 +889,32 @@ class Piwik
return $translator->translate($translationId, $args, $language);
}
+
+ /**
+ * Returns the period provided in the current request.
+ * If no $default is provided, this method will throw an Exception if `period` can't be found in the request
+ *
+ * @param string|null $default default value to use
+ * @throws Exception
+ * @return string
+ * @api
+ */
+ public static function getPeriod($default = null)
+ {
+ return Common::getRequestVar('period', $default, 'string');
+ }
+
+ /**
+ * Returns the date provided in the current request.
+ * If no $default is provided, this method will throw an Exception if `date` can't be found in the request
+ *
+ * @param string|null $default default value to use
+ * @throws Exception
+ * @return string
+ * @api
+ */
+ public static function getDate($default = null)
+ {
+ return Common::getRequestVar('date', $default, 'string');
+ }
}
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index ca2f169895..2d0093912a 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -476,25 +476,14 @@ abstract class Controller
*/
protected function getGraphParamsModified($paramsToSet = array())
{
- if (!isset($paramsToSet['period'])) {
- $period = Common::getRequestVar('period');
- } else {
- $period = $paramsToSet['period'];
- }
+ $period = $paramsToSet['period'] ?? Piwik::getPeriod();
+
if ($period === 'range') {
return $paramsToSet;
}
- if (!isset($paramsToSet['range'])) {
- $range = 'last30';
- } else {
- $range = $paramsToSet['range'];
- }
- if (!isset($paramsToSet['date'])) {
- $endDate = $this->strDate;
- } else {
- $endDate = $paramsToSet['date'];
- }
+ $range = isset($paramsToSet['range']) ? $paramsToSet['range'] : 'last30';
+ $endDate = isset($paramsToSet['date']) ? $paramsToSet['date'] : $this->strDate;
if (is_null($this->site)) {
throw new NoAccessException("Website not initialized, check that you are logged in and/or using the correct token_auth.");
@@ -640,10 +629,10 @@ abstract class Controller
$maxDate = Date::factory('now', $siteTimezone);
$this->setMaxDateView($maxDate, $view);
- $rawDate = Common::getRequestVar('date');
+ $rawDate = Piwik::getDate();
Period::checkDateFormat($rawDate);
- $periodStr = Common::getRequestVar('period');
+ $periodStr = Piwik::getPeriod();
if ($periodStr !== 'range') {
$date = Date::factory($this->strDate);
@@ -923,7 +912,7 @@ abstract class Controller
$periodValidator = new PeriodValidator();
- $currentPeriod = Common::getRequestVar('period');
+ $currentPeriod = Piwik::getPeriod();
$availablePeriods = $periodValidator->getPeriodsAllowedForUI();
if (! $periodValidator->isPeriodAllowedForUI($currentPeriod)) {
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index a3339f027d..61538b596d 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -16,7 +16,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
-use Piwik\Date;
use Piwik\Development;
use Piwik\EventDispatcher;
use Piwik\Exception\PluginDeactivatedException;
diff --git a/core/Plugin/MetadataLoader.php b/core/Plugin/MetadataLoader.php
index a6fb420255..df478d5432 100644
--- a/core/Plugin/MetadataLoader.php
+++ b/core/Plugin/MetadataLoader.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugin;
use Exception;
use Piwik\Piwik;
use Piwik\Version;
-use Piwik\Plugin;
/**
* @see core/Version.php
diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php
index dd99f5a5e8..b2ff753f31 100644
--- a/core/Plugin/Visualization.php
+++ b/core/Plugin/Visualization.php
@@ -157,7 +157,6 @@ class Visualization extends ViewDataTable
private $templateVars = array();
private $reportLastUpdatedMessage = null;
- private $metadata = null;
protected $metricsFormatter = null;
/**
@@ -458,14 +457,35 @@ class Visualization extends ViewDataTable
}
// deal w/ table metadata
+ $metadata = null;
if ($this->dataTable instanceof DataTable) {
- $this->metadata = $this->dataTable->getAllTableMetadata();
-
- if (isset($this->metadata[DataTable::ARCHIVED_DATE_METADATA_NAME])) {
- $this->reportLastUpdatedMessage = $this->makePrettyArchivedOnText();
+ $metadata = $this->dataTable->getAllTableMetadata();
+ } else {
+ // if the dataTable is Map
+ if ($this->dataTable instanceof DataTable\Map) {
+ // load all the data
+ $dataTable = $this->dataTable->getDataTables();
+ // find the latest key
+ foreach ($dataTable as $item) {
+ $itemMetaData = $item->getAllTableMetadata();
+ // initial metadata and update metadata if current is more recent
+ if (!empty($itemMetaData[DataTable::ARCHIVED_DATE_METADATA_NAME])
+ && (
+ empty($metadata[DataTable::ARCHIVED_DATE_METADATA_NAME])
+ || strtotime($itemMetaData[DataTable::ARCHIVED_DATE_METADATA_NAME]) > strtotime($metadata[DataTable::ARCHIVED_DATE_METADATA_NAME])
+ )
+ ) {
+ $metadata = $itemMetaData;
+ }
+ }
}
}
+ // if metadata set display report date
+ if (!empty($metadata[DataTable::ARCHIVED_DATE_METADATA_NAME])) {
+ $this->reportLastUpdatedMessage = $this->makePrettyArchivedOnText($metadata[DataTable::ARCHIVED_DATE_METADATA_NAME]);
+ }
+
$pivotBy = Common::getRequestVar('pivotBy', false) ?: $this->requestConfig->pivotBy;
if (empty($pivotBy)
&& $this->dataTable instanceof DataTable
@@ -558,14 +578,16 @@ class Visualization extends ViewDataTable
}
}
+
/**
* Returns prettified and translated text that describes when a report was last updated.
*
+ * @param $dateText
* @return string
+ * @throws \Exception
*/
- private function makePrettyArchivedOnText()
+ private function makePrettyArchivedOnText($dateText)
{
- $dateText = $this->metadata[DataTable::ARCHIVED_DATE_METADATA_NAME];
$date = Date::factory($dateText);
$today = mktime(0, 0, 0);
$metricsFormatter = new HtmlFormatter();
diff --git a/core/ProfessionalServices/Advertising.php b/core/ProfessionalServices/Advertising.php
index 852a992d80..163b366e7b 100644
--- a/core/ProfessionalServices/Advertising.php
+++ b/core/ProfessionalServices/Advertising.php
@@ -93,6 +93,7 @@ class Advertising
}
/**
+ * @deprecated
* Generates campaign URL parameters that can be used with promoting Professional Support service.
*
* @param string $campaignName
diff --git a/core/ReportRenderer/Html.php b/core/ReportRenderer/Html.php
index ef3029cf6a..71b77c00dc 100644
--- a/core/ReportRenderer/Html.php
+++ b/core/ReportRenderer/Html.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\ReportRenderer;
-use Piwik\Mail;
use Piwik\Piwik;
use Piwik\ReportRenderer;
use Piwik\View;
diff --git a/core/ReportRenderer/Pdf.php b/core/ReportRenderer/Pdf.php
index d7ac33c9fb..2ec74f4739 100644
--- a/core/ReportRenderer/Pdf.php
+++ b/core/ReportRenderer/Pdf.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Filesystem;
use Piwik\NumberFormatter;
use Piwik\Piwik;
-use Piwik\Plugins\API\API;
use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\ReportRenderer;
use Piwik\TCPDF;
diff --git a/core/Session.php b/core/Session.php
index 641334676c..096914e6e0 100644
--- a/core/Session.php
+++ b/core/Session.php
@@ -11,6 +11,7 @@ namespace Piwik;
use Exception;
use Piwik\Container\StaticContainer;
use Piwik\Exception\MissingFilePermissionException;
+use Piwik\Plugins\Overlay\Overlay;
use Piwik\Session\SaveHandler\DbTable;
use Psr\Log\LoggerInterface;
use Zend_Session;
@@ -170,10 +171,11 @@ class Session extends Zend_Session
$module = Piwik::getModule();
$action = Piwik::getAction();
+ $method = Common::getRequestVar('method', '', 'string');
+ $referer = Url::getReferrer();
$isOptOutRequest = $module == 'CoreAdminHome' && $action == 'optOut';
- $isOverlay = $module == 'Overlay';
- $shouldUseNone = !empty($general['enable_framed_pages']) || $isOptOutRequest || $isOverlay;
+ $shouldUseNone = !empty($general['enable_framed_pages']) || $isOptOutRequest || Overlay::isOverlayRequest($module, $action, $method, $referer);
if ($shouldUseNone && ProxyHttp::isHttps()) {
return 'None';
diff --git a/core/Session/SessionAuth.php b/core/Session/SessionAuth.php
index bff91c113e..0f2d1cadad 100644
--- a/core/Session/SessionAuth.php
+++ b/core/Session/SessionAuth.php
@@ -11,11 +11,9 @@ namespace Piwik\Session;
use Piwik\Auth;
use Piwik\AuthResult;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\Model as UsersModel;
use Piwik\Session;
use Psr\Log\LoggerInterface;
diff --git a/core/Session/SessionFingerprint.php b/core/Session/SessionFingerprint.php
index 231ba17ea6..fa6a4fd22c 100644
--- a/core/Session/SessionFingerprint.php
+++ b/core/Session/SessionFingerprint.php
@@ -9,7 +9,6 @@
namespace Piwik\Session;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Date;
diff --git a/core/SupportedBrowser.php b/core/SupportedBrowser.php
index 6f9abe6310..3f9f195df0 100644
--- a/core/SupportedBrowser.php
+++ b/core/SupportedBrowser.php
@@ -9,7 +9,6 @@
namespace Piwik;
-use Piwik\Http;
use Piwik\Piwik;
use Piwik\Container\StaticContainer;
use Piwik\DeviceDetector\DeviceDetectorFactory;
diff --git a/core/Tracker/Cache.php b/core/Tracker/Cache.php
index 4cce6e4131..67ab93b71d 100644
--- a/core/Tracker/Cache.php
+++ b/core/Tracker/Cache.php
@@ -17,7 +17,6 @@ use Piwik\Option;
use Piwik\Piwik;
use Piwik\Tracker;
use Psr\Log\LoggerInterface;
-use function DI\object;
/**
* Simple cache mechanism used in Tracker to avoid requesting settings from mysql on every request
diff --git a/core/Tracker/Db.php b/core/Tracker/Db.php
index 22a9173a8f..a6bce56a76 100644
--- a/core/Tracker/Db.php
+++ b/core/Tracker/Db.php
@@ -30,6 +30,9 @@ abstract class Db
protected $connection = null;
+ // this is used for indicate TransactionLevel Cache
+ public $supportsUncommitted = null;
+
/**
* Enables the SQL profiling.
* For each query, saves in the DB the time spent on this query.
diff --git a/core/Tracker/Db/Pdo/Mysql.php b/core/Tracker/Db/Pdo/Mysql.php
index 1e83b7135a..8b1a536704 100644
--- a/core/Tracker/Db/Pdo/Mysql.php
+++ b/core/Tracker/Db/Pdo/Mysql.php
@@ -12,7 +12,6 @@ use Exception;
use PDO;
use PDOException;
use PDOStatement;
-use Piwik\Config;
use Piwik\Tracker\Db;
use Piwik\Tracker\Db\DbException;
diff --git a/core/Tracker/FingerprintSalt.php b/core/Tracker/FingerprintSalt.php
index 9896c074ca..c3d056ba74 100644
--- a/core/Tracker/FingerprintSalt.php
+++ b/core/Tracker/FingerprintSalt.php
@@ -11,13 +11,7 @@ namespace Piwik\Tracker;
use Piwik\Common;
use Piwik\Date;
-use Piwik\Exception\InvalidRequestParameterException;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Option;
-use Piwik\Piwik;
-use Piwik\SettingsServer;
-use Piwik\Site;
-use Piwik\Db as PiwikDb;
class FingerprintSalt
{
diff --git a/core/Tracker/GoalManager.php b/core/Tracker/GoalManager.php
index 1d1e3314d1..ea37d447b5 100644
--- a/core/Tracker/GoalManager.php
+++ b/core/Tracker/GoalManager.php
@@ -19,7 +19,6 @@ use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CustomVariables\CustomVariables;
use Piwik\Plugins\Events\Actions\ActionEvent;
-use Piwik\Tracker;
use Piwik\Tracker\Visit\VisitProperties;
/**
@@ -561,8 +560,10 @@ class GoalManager
foreach ($cleanedItems as $item) {
$actionsToLookup = array();
- list($sku, $name, $category, $price, $quantity) = $item;
+ list($sku_check, $name_check, $category, $price, $quantity) = $item;
+ $sku = is_array($sku_check) ? join(',', $sku_check) : $sku_check;
$actionsToLookup[] = array(trim($sku), Action::TYPE_ECOMMERCE_ITEM_SKU);
+ $name = is_array($name_check) ? join(',', $name_check) : $name_check;
$actionsToLookup[] = array(trim($name), Action::TYPE_ECOMMERCE_ITEM_NAME);
// Only one category
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index 2dd8be5579..58911a25a5 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -10,7 +10,6 @@ namespace Piwik\Tracker;
use Exception;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Cookie;
use Piwik\Exception\InvalidRequestParameterException;
@@ -18,7 +17,6 @@ use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\IP;
use Matomo\Network\IPUtils;
use Piwik\Piwik;
-use Piwik\Plugins\PrivacyManager\PrivacyManager;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\ProxyHttp;
use Piwik\Segment\SegmentExpression;
diff --git a/core/Updater/Migration/Custom.php b/core/Updater/Migration/Custom.php
index c69dca9fd6..3e4e92bea5 100644
--- a/core/Updater/Migration/Custom.php
+++ b/core/Updater/Migration/Custom.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Updater\Migration;
-use Piwik\Config;
-use Piwik\Container\StaticContainer;
use Piwik\Updater\Migration;
/**
diff --git a/core/Updater/Migration/Db/DropColumns.php b/core/Updater/Migration/Db/DropColumns.php
index 5df61ddf08..f71c179694 100644
--- a/core/Updater/Migration/Db/DropColumns.php
+++ b/core/Updater/Migration/Db/DropColumns.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Updater\Migration\Db;
-use Piwik\Db;
use Piwik\DbHelper;
/**
diff --git a/core/Updates/4.0.0-b1.php b/core/Updates/4.0.0-b1.php
index 13c7bdd868..1aaa6cfee1 100644
--- a/core/Updates/4.0.0-b1.php
+++ b/core/Updates/4.0.0-b1.php
@@ -25,7 +25,6 @@ use Piwik\Plugins\PagePerformance\Columns\TimeNetwork;
use Piwik\Plugins\PagePerformance\Columns\TimeOnLoad;
use Piwik\Plugins\PagePerformance\Columns\TimeServer;
use Piwik\Plugins\PagePerformance\Columns\TimeTransfer;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Common;
use Piwik\Config;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/core/Updates/4.0.0-rc3.php b/core/Updates/4.0.0-rc3.php
index 86c9ca0189..cda763e666 100644
--- a/core/Updates/4.0.0-rc3.php
+++ b/core/Updates/4.0.0-rc3.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\Config;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.0.0-rc4.php b/core/Updates/4.0.0-rc4.php
index ad408f1ed4..2315f491cc 100644
--- a/core/Updates/4.0.0-rc4.php
+++ b/core/Updates/4.0.0-rc4.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/core/Updates/4.0.1-b1.php b/core/Updates/4.0.1-b1.php
index 852b3b934b..c3b4d503d7 100644
--- a/core/Updates/4.0.1-b1.php
+++ b/core/Updates/4.0.1-b1.php
@@ -10,12 +10,6 @@
namespace Piwik\Updates;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Date;
-use Piwik\DbHelper;
-use Piwik\Plugin\ReleaseChannels;
use Piwik\SettingsPiwik;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
diff --git a/core/Updates/4.1.2-b2.php b/core/Updates/4.1.2-b2.php
index 0c38c38480..bbabf2ca99 100644
--- a/core/Updates/4.1.2-b2.php
+++ b/core/Updates/4.1.2-b2.php
@@ -9,13 +9,7 @@
namespace Piwik\Updates;
-use Piwik\Container\StaticContainer;
-use Piwik\CronArchive;
use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Date;
-use Piwik\Plugins\SegmentEditor\API;
-use Piwik\Archive\ArchiveInvalidator;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.3.0-b3.php b/core/Updates/4.3.0-b3.php
index d9588f1d3f..14a79f575c 100644
--- a/core/Updates/4.3.0-b3.php
+++ b/core/Updates/4.3.0-b3.php
@@ -11,10 +11,7 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Piwik\Db;
-use Piwik\Common;
/**
* Update for version 4.3.0-b3.
diff --git a/core/Updates/4.3.0-b4.php b/core/Updates/4.3.0-b4.php
index de579b9c1e..f0ced8b9eb 100644
--- a/core/Updates/4.3.0-b4.php
+++ b/core/Updates/4.3.0-b4.php
@@ -11,7 +11,6 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
use Piwik\Db;
use Piwik\Common;
diff --git a/core/Updates/4.3.0-rc2.php b/core/Updates/4.3.0-rc2.php
index 9246997727..09ad6f2f23 100644
--- a/core/Updates/4.3.0-rc2.php
+++ b/core/Updates/4.3.0-rc2.php
@@ -11,10 +11,7 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Piwik\Db;
-use Piwik\Common;
/**
* Update for version 4.3.0-rc2.
diff --git a/core/Updates/4.5.0-b1.php b/core/Updates/4.5.0-b1.php
index 1ac0cae445..3cd30ac854 100644
--- a/core/Updates/4.5.0-b1.php
+++ b/core/Updates/4.5.0-b1.php
@@ -9,7 +9,6 @@
namespace Piwik\Updates;
-use Piwik\DbHelper;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/core/Updates/4.6.0-b1.php b/core/Updates/4.6.0-b1.php
index 557ed9b953..d48a72ea42 100644
--- a/core/Updates/4.6.0-b1.php
+++ b/core/Updates/4.6.0-b1.php
@@ -11,7 +11,6 @@ namespace Piwik\Updates;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
-use Piwik\Updater\Migration;
use Piwik\Updater\Migration\Factory as MigrationFactory;
class Updates_4_6_0_b1 extends PiwikUpdates
diff --git a/core/Url.php b/core/Url.php
index a79fdecb5b..c027538cdb 100644
--- a/core/Url.php
+++ b/core/Url.php
@@ -206,7 +206,7 @@ class Url
* value from the request.
* @return bool `true` if valid; `false` otherwise.
*/
- public static function isValidHost($host = false)
+ public static function isValidHost($host = false): bool
{
// only do trusted host check if it's enabled
if (isset(Config::getInstance()->General['enable_trusted_host_check'])
@@ -215,7 +215,7 @@ class Url
return true;
}
- if ($host === false) {
+ if (false === $host || null === $host) {
$host = self::getHostFromServerVariable();
if (empty($host)) {
// if no current host, assume valid
diff --git a/core/UrlHelper.php b/core/UrlHelper.php
index 2a0fc4cb1d..94c8ff9d55 100644
--- a/core/UrlHelper.php
+++ b/core/UrlHelper.php
@@ -202,7 +202,7 @@ class UrlHelper
*/
public static function getArrayFromQueryString($urlQuery)
{
- if (strlen($urlQuery) == 0) {
+ if (empty($urlQuery)) {
return array();
}
diff --git a/core/Validators/CharacterLength.php b/core/Validators/CharacterLength.php
index d40b11bfcb..6e235bf081 100644
--- a/core/Validators/CharacterLength.php
+++ b/core/Validators/CharacterLength.php
@@ -9,7 +9,6 @@
namespace Piwik\Validators;
-use Piwik\Common;
use Piwik\Piwik;
class CharacterLength extends BaseValidator
diff --git a/core/Version.php b/core/Version.php
index a5a57de219..ad030d351e 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.7.1';
+ const VERSION = '4.8.0';
const MAJOR_VERSION = 4;
diff --git a/core/View.php b/core/View.php
index 624537bc5c..99c94b8906 100644
--- a/core/View.php
+++ b/core/View.php
@@ -357,12 +357,13 @@ class View implements ViewInterface
$cache->save('cssCacheBusterId', $cssCacheBusterId);
}
- $tagJs = 'cb=' . $cacheBuster->piwikVersionBasedCacheBuster();
+ $tagJs = 'cb=' . ($this->cacheBuster ?? $cacheBuster->piwikVersionBasedCacheBuster());
$tagCss = 'cb=' . $cssCacheBusterId;
$pattern = array(
'~<script type=[\'"]text/javascript[\'"] src=[\'"]([^\'"]+)[\'"]>~',
'~<script src=[\'"]([^\'"]+)[\'"] type=[\'"]text/javascript[\'"]>~',
+ '~<script type=[\'"]text/javascript[\'"] src=[\'"]([^\'"]+?chunk=[^\'"]+)[\'"] defer>~',
'~<link rel=[\'"]stylesheet[\'"] type=[\'"]text/css[\'"] href=[\'"]([^\'"]+)[\'"] ?/?>~',
// removes the double ?cb= tag
'~(src|href)=\"index.php\?module=([A-Za-z0-9_]+)&action=([A-Za-z0-9_]+)\?cb=~',
@@ -371,6 +372,7 @@ class View implements ViewInterface
$replace = array(
'<script type="text/javascript" src="$1?' . $tagJs . '">',
'<script type="text/javascript" src="$1?' . $tagJs . '">',
+ '<script type="text/javascript" src="$1&' . $tagJs . '" defer>',
'<link rel="stylesheet" type="text/css" href="$1?' . $tagCss . '" />',
'$1="index.php?module=$2&amp;action=$3&amp;cb=',
);
diff --git a/core/View/HtmlReportEmailHeaderView.php b/core/View/HtmlReportEmailHeaderView.php
index 2320146e52..bfbbfaaadd 100644
--- a/core/View/HtmlReportEmailHeaderView.php
+++ b/core/View/HtmlReportEmailHeaderView.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Date;
use Piwik\Mail\EmailStyles;
use Piwik\Plugin\ThemeStyles;
-use Piwik\Plugins\API\API;
use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\Scheduler\Schedule\Schedule;
use Piwik\SettingsPiwik;
diff --git a/js/piwik.js b/js/piwik.js
index c9e05f06da..bab41cc384 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -75,7 +75,7 @@
disablePerformanceTracking, maq_confirm_opted_in,
doNotTrack, setDoNotTrack, msDoNotTrack, getValuesFromVisitorIdCookie,
enableCrossDomainLinking, disableCrossDomainLinking, isCrossDomainLinkingEnabled, setCrossDomainLinkingTimeout, getCrossDomainLinkingUrlParameter,
- addListener, enableLinkTracking, disableBrowserFeatureDetection, enableJSErrorTracking, setLinkTrackingTimer, getLinkTrackingTimer,
+ addListener, enableLinkTracking, disableBrowserFeatureDetection, enableBrowserFeatureDetection, enableJSErrorTracking, setLinkTrackingTimer, getLinkTrackingTimer,
enableHeartBeatTimer, disableHeartBeatTimer, killFrame, redirectFile, setCountPreRendered, setVisitStandardLength,
trackGoal, trackLink, trackPageView, getNumTrackedPageViews, trackRequest, ping, queueRequest, trackSiteSearch, trackEvent,
requests, timeout, enabled, sendRequests, queueRequest, canQueue, pushMultiple, disableQueueRequest,setRequestQueueInterval,interval,getRequestQueue, getJavascriptErrors, unsetPageIsUnloading,
@@ -3098,7 +3098,7 @@ if (typeof window.Matomo !== 'object') {
}
function deleteCookie(cookieName, path, domain) {
- setCookie(cookieName, '', -86400, path, domain);
+ setCookie(cookieName, '', -129600000, path, domain);
}
/*
@@ -6411,6 +6411,10 @@ if (typeof window.Matomo !== 'object') {
configBrowserFeatureDetection = false;
};
+ this.enableBrowserFeatureDetection = function () {
+ configBrowserFeatureDetection = true;
+ };
+
/**
* Scans the entire DOM for all content blocks and tracks all impressions once the DOM ready event has
* been triggered.
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 4949fc7ca8..c65a25a880 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
@@ -59,7 +59,7 @@ if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.h
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.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);
+})};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()
diff --git a/lang/ca.json b/lang/ca.json
index 661824a147..29e79dfdac 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -16,15 +16,18 @@
"Apply": "Aplica",
"ArchivingInlineHelp": "Per llocs amb trànsit entre mig i alt, es recomana desactivar l'arxivat del Matomo des del navegador. En canvi, recomanem que configureu una tasca de cron per processar els informes de Matomo cada hora.",
"ArchivingTriggerDescription": "Recomanat per a instal·lacions grans de Matomo, es pot %1$sconfigurar una tasca programada%2$s per a processar les entrades automàticament.",
+ "ArchivingTriggerSegment": "L'ús de segments personalitzats igualment iniciarà el processament d'arxius.",
"AuthenticationMethodSmtp": "Mètode d'autenticació SMTP",
"AverageOrderValue": "Valor mig de les comandes",
"AveragePrice": "Preu mig",
"AverageQuantity": "Quantitat mitjana",
+ "AverageX": "Mitjana %s",
"BackToPiwik": "Torna al Matomo",
"Broken": "Trencat",
"BrokenDownReportDocumentation": "Està separada en diferents informes, que es mostren amb línies de punts al peu de la pàgina. Podeu augmentar aquests gràfics clicant en l'informe que voleu veure.",
"Cancel": "Cancel·la",
"CannotUnzipFile": "No es pot descomprimir el fitxer %1$s: %2$s",
+ "ChangeInX": "Canvi en %1$s",
"ChangePassword": "Canvia la contrasenya",
"ChangeTagCloudView": "Tingueu en compte que podeu veure l'informe en altres formes que en núvol d'etiquetes. Feu servir els controls al peu de l'informe per a fer-ho.",
"ChooseDate": "Seleccioneu una data, la data seleccionada actualment es: %s",
@@ -32,10 +35,13 @@
"ChoosePeriod": "Triar període",
"Clear": "Neteja",
"ClickHere": "Feu clic aquí per a més informació.",
+ "ClickToRemoveComp": "Feu clic per eliminar aquesta comparació.",
"ClickToSearch": "Cliqueu per a cercar",
"Close": "Tanca",
"ColumnActionsPerVisit": "Accions per visita",
"ColumnActionsPerVisitDocumentation": "El nombre mitjà d'accions (pàgines vistes, descarregues o enllaços de sortida) que s'han fet durant les visites.",
+ "ColumnAverageGenerationTime": "Temps mitjà de generació",
+ "ColumnAverageGenerationTimeDocumentation": "El temps mitjà per generar la pàgina. Aquesta mètrica inclou el temps que triga el servidor a generar la pàgina web, a més del temps que triga el visitant a descarregar la resposta del servidor. Un 'Temps mitjà de generació' més baix vol dir un lloc web més ràpid per als vostres visitants!",
"ColumnAverageTimeOnPage": "Temps mitjà a la pàgina",
"ColumnAverageTimeOnPageDocumentation": "La mitjana de temps que els visitants s'han passat en aquesta pàgina (només la pàgina no el lloc enter).",
"ColumnAvgTimeOnSite": "Temps mitjà per visita",
@@ -54,18 +60,25 @@
"ColumnExits": "Sortides",
"ColumnExitsDocumentation": "Nombre de visites que acaben en aquesta pàgina.",
"ColumnGenerationTime": "Temps de generació",
+ "ColumnHits": "Accessos",
"ColumnKeyword": "Paraula clau",
"ColumnLabel": "Etiqueta",
"ColumnMaxActions": "Accions màximes en una visita",
"ColumnNbActions": "Accions",
"ColumnNbActionsDocumentation": "El nombre d'accions que han fet els vostres visitants. Les accions poden ser pàgines vistes, descàrregues o enllaços externs.",
"ColumnNbUniqVisitors": "Visitants únics",
+ "ColumnNbUniqVisitorsDocumentation": "El nombre de visitants no duplicats que arriben al vostre lloc web. Cada usuari només es compta una vegada, fins i tot si visiten el lloc web diverses vegades al dia.",
"ColumnNbUsers": "Usuaris",
+ "ColumnNbUsersDocumentation": "El nombre d'usuaris connectats al vostre lloc web. És el nombre d'usuaris actius únics que tenen definit un Identificador d'Usuari (mitjançant la funció de codi de seguiment \"Setuserid\").",
"ColumnNbVisits": "Visites",
+ "ColumnNbVisitsDocumentation": "Si un visitant arriba al vostre lloc web per primera vegada o si visita una pàgina més de 30 minuts després de la darrera visualització de la pàgina, es registrarà com a nova visita.",
"ColumnPageBounceRateDocumentation": "El percentatge de visites que han començat en aquesta pàgina i han deixat el lloc web directament.",
+ "ColumnPageGenerationTime": "Temps de generació de la pàgina",
"ColumnPageviews": "Visualitzacions de pàgina",
"ColumnPageviewsDocumentation": "El nombre de vegades que s'ha visitat aquesta pàgina.",
+ "ColumnPercentageVisits": "%% Visites",
"ColumnRevenue": "Ingressos",
+ "ColumnSumTimeOnSite": "Temps total al lloc web",
"ColumnSumVisitLength": "Temps total acumulat pels visitants (en segons)",
"ColumnTotalPageviews": "Total de pàgines vistes",
"ColumnUniqueEntrances": "Entrades úniques",
@@ -75,28 +88,56 @@
"ColumnValuePerVisit": "Valor per visita",
"ColumnViewedAfterSearch": "Clicat als resultats de cerca",
"ColumnViewedAfterSearchDocumentation": "El nombre de vegades que aquesta pàgina s'ha visitat després que el visitant hagi fet una cerca al vostre lloc web i hagi clicat en aquesta pàgina als resultats.",
+ "ColumnViewsWithGenerationTime": "Pàgines vistes amb temps de generació",
"ColumnVisitDuration": "Durada de la visita (en segons)",
"ColumnVisitsWithConversions": "Visites amb conversions",
+ "CompareDatesParamMustMatchComparePeriods": "La longitud del paràmetre de consulta %1$s ha de coincidir amb la longitud del paràmetre de consulta %2$s.",
+ "CompareTo": "Comparar amb:",
+ "ComparisonCardTooltip1": "'%1$s' sobre %2$s conté %3$s de totes les visites (%4$s de %5$s en total).",
+ "ComparisonCardTooltip2": "El recompte de visites és diferent per %1$s comparat amb %2$s sobre %3$s.",
+ "ComparisonRatioTooltip": "Aquest és un canvi %1$s comparat amb el segment '%2$s' sobre %3$s.",
+ "Comparisons": "Comparacions",
+ "ComputedMetricAverage": "Mitjana %1$s per %2$s",
+ "ComputedMetricAverageDocumentation": "Valor mitjà de \"%1$s\" per \"%2$s\".",
+ "ComputedMetricAverageShortDocumentation": "Valor mitjà de \"%1$s\".",
+ "ComputedMetricCountDocumentation": "El nombre de %s",
+ "ComputedMetricCountWithValue": "Entrades amb %s",
+ "ComputedMetricCountWithValueDocumentation": "El nombre d'entrades que tenen el valor definit per %s",
+ "ComputedMetricMax": "Màx %s",
+ "ComputedMetricMaxDocumentation": "El valor màxim de %s",
+ "ComputedMetricMin": "Mín %s",
+ "ComputedMetricMinDocumentation": "El valor mínim per a %s",
+ "ComputedMetricRate": "Taxa %s",
+ "ComputedMetricRateDocumentation": "La proporció de \"%1$s\" entre tots els \"%2$s\".",
+ "ComputedMetricRateShortDocumentation": "El percentatge de \"%1$s\".",
"ComputedMetricSum": "Total %s",
+ "ComputedMetricSumDocumentation": "El nombre total (sum) de %s",
+ "ComputedMetricUniqueCount": "%s únics",
+ "ComputedMetricUniqueCountDocumentation": "El nombre únic de %s",
"ConfigFileIsNotWritable": "El fitxer de configuració del Matomo %1$s no es pot modificar, alguns dels canvis que has fet no es guardaran. Si us plau %2$s canvia els permisos del fitxer de configuració per tal que es pugui modificar.",
+ "Confirm": "Confirmar",
"Continue": "Continua",
"ContinueToPiwik": "Ves cap al Matomo",
"Copy": "Copia",
"CreatedByUser": "Creat per %s",
+ "CreationDate": "Data de creació",
"CurrentMonth": "Mes actual",
"CurrentWeek": "Setmana actual",
"CurrentYear": "Any actual",
+ "CurrentlyUsingUnsecureHttp": "Actualment esteu utilitzant Matomo per HTTP no segur. Això pot fer que el vostre Matomo sigui vulnerable a les excepcions de seguretat. També és possible que infringeixi les lleis de privadesa, ja que algunes funcions, com ara les galetes de desactivació, no funcionaran. Us recomanem que configureu Matomo perquè utilitzi SSL (HTTPS) per millorar la seguretat.",
+ "Custom": "Personalitzat",
"Daily": "Diàriament",
"DailyReport": "diari",
"DailyReports": "Informe diari",
"DailySum": "suma diària",
"DashboardForASpecificWebsite": "Tauler per a un lloc web concret",
- "DataForThisGraphHasBeenPurged": "Les dades per aquest gràfic tenen més de %s mesos d'antiguitat i s'han purgat",
+ "DataForThisGraphHasBeenPurged": "Les dades per aquest gràfic tenen més de %s mesos d'antiguitat i s'han purgat.",
"DataForThisTagCloudHasBeenPurged": "Les dades per aquest nuvol d'etiquetes tenen més de %s mesos i s'han purgat.",
"Date": "Data",
"DateRange": "Rang de dates:",
"DateRangeFrom": "De",
"DateRangeFromTo": "De %1$s fins a %2$s",
+ "DateRangeInPeriodList": "Interval de dates",
"DateRangeTo": "Fins",
"DaysHours": "%1$s dies %2$s hores",
"DaysSinceFirstVisit": "Dies des de la primera visita",
@@ -108,6 +149,7 @@
"Description": "Descripció",
"Desktop": "Escriptori",
"Details": "Detalls",
+ "Disabled": "Desactivat",
"Discount": "Descompte",
"DisplaySimpleTable": "Mostrar una taula simple",
"DisplayTableWithGoalMetrics": "Mostrar una taula amb paràmetres globals",
@@ -115,9 +157,10 @@
"Documentation": "Documentació",
"Donate": "Donar",
"Done": "Fet",
+ "DoubleClickToChangePeriod": "Feu doble clic per aplicar aquest període.",
"Download": "Descàrrega",
- "DownloadFail_FileExists": "El fitxer %s ja existeix.",
- "DownloadFail_FileExistsContinue": "Provant de continuar la descàrrega de %s, però ja existeix un fitxer completament descarregat.",
+ "DownloadFail_FileExists": "El fitxer %s ja existeix!",
+ "DownloadFail_FileExistsContinue": "Provant de continuar la descàrrega de %s, però ja existeix un fitxer completament descarregat!",
"DownloadFail_HttpRequestFail": "No s'ha pogut descarregar el fitxer! Alguna cosa no ha anat bé amb el lloc web d'on esteu descarregant. Podeu provar-ho més tard o obtenir el fitxer per vosaltres mateixos.",
"DownloadFullVersion": "%1$sDescarrega%2$s la versió completa! Ves a %3$s",
"DownloadPleaseRemoveExisting": "Si voleu que es sobreescrigui, elimineu el fitxer existent.",
@@ -128,18 +171,34 @@
"Edit": "Edita",
"EncryptedSmtpTransport": "Entreu el xifrat de la capa de transport requerit per el vostre servidor SMTP.",
"Error": "Error",
+ "ErrorRequest": "Vaja... hi ha hagut un problema durant la sol·licitud. Potser el servidor ha tingut un problema temporal, o potser heu sol·licitat un informe amb massa dades. Siusplau torna-ho a provar. Si aquest error es produeix repetidament, %1$scontacteu amb el vostre administrador de Matomo%2$s per obtenir ajuda.",
+ "ErrorRequestFaqLink": "Consulteu els passos per resoldre aquest problema a les FAQ.",
+ "ErrorTryAgain": "Error. Siusplau, intenta-ho més tard.",
"Errors": "Errors",
"EvolutionOverPeriod": "Evolució del període",
+ "EvolutionSummaryGeneric": "%1$s en %2$s comparat amb %3$s en %4$s. Evolució: %5$s",
+ "ExceptionCapabilityAccessWebsite": "No es pot accedir a aquest recurs ja que necessita la capacitat %1$s per al lloc web id=%2$d.",
+ "ExceptionCheckUserHasSuperUserAccessOrIsTheUser": "L'usuari ha de ser o bé SuperUsuari o bé l'usuari %s propiament.",
+ "ExceptionConfigurationFileExistsButNotReadable": "L'arxiu de configuració %s sembla que existeix però Matomo no el pot llegir.",
"ExceptionConfigurationFileNotFound": "El fitxer de configuració {%s} no s'ha trobat.",
- "ExceptionDatabaseVersion": "La teva %1$s versió és %2$s però el Matomo necessita com a mínim %3$s",
+ "ExceptionConfigurationFilePleaseCheckReadableByUser": "Siusplau comprova que %1$s es pot llegir per part de l'usuari '%2$s'.",
+ "ExceptionContactSupportGeneric": "Si encara teniu aquest problema siusplau %1$sposa't en contacte amb el teu administrador Matomo%2$s per obtenir ajuda.",
+ "ExceptionDatabaseAccess": "Accés a la base de dades denegat",
+ "ExceptionDatabaseUnavailable": "El servidor MySQL ha caigut",
+ "ExceptionDatabaseVersion": "La teva %1$s versió és %2$s però el Matomo necessita com a mínim %3$s.",
+ "ExceptionDatabaseVersionNewerThanCodebase": "La vostra instal·lació de Matomo està executant la versió antiga %1$s i hem detectat que la vostra base de dades Matomo ja s'ha actualitzat a la versió més recent %2$s.",
+ "ExceptionDatabaseVersionNewerThanCodebaseWait": "Potser els vostres administradors de Matomo estan acabant el procés d'actualització. Si us plau, torna-ho a provar d'aquí a uns minuts.",
+ "ExceptionDirectoryToDelete": "Directori a esborrar: %s",
"ExceptionFileIntegrity": "Ha fallat la verificació de integritat: %s",
+ "ExceptionFileToDelete": "Arxiu per esborrar: %s",
"ExceptionFilesizeMismatch": "Mida de fitxer incohoerent: %1$s (mida esperada: %2$s, real: %3$s)",
"ExceptionIncompatibleClientServerVersions": "El vostre client %1$s té la versió %2$s que és incompatbile amb la versió de servidor %3$s.",
"ExceptionInvalidAggregateReportsFormat": "El format de informes agregats '%1$s' no és vàlid. Proveu-ne algun dels següents en el seu lloc: %2$s.",
- "ExceptionInvalidArchiveTimeToLive": "El temps límit per fer l'arxivat avui ha de ser més gran que zero.",
+ "ExceptionInvalidArchiveTimeToLive": "El temps límit per fer l'arxivat avui ha de ser més gran que zero segons",
+ "ExceptionInvalidDateBeforeFirstWebsite": "La data '%1$s' és una data abans que el primer lloc web estigués en línia. Prova una data posterior a %2$s (marca de temps %3$s).",
"ExceptionInvalidDateFormat": "El format de data ha de ser: %1$s o una altra paraula clau suportada per la funció %2$s (vegeu %3$s per més informació)",
"ExceptionInvalidDateRange": "La data '%1$s' no és un rang correcte de data. Hauria de tenir el format següent: %2$s.",
- "ExceptionInvalidPeriod": "El període '%1$s' no està suportat. Proveu-ne algun dels següents en el seu lloc: %2$s.",
+ "ExceptionInvalidPeriod": "El període '%1$s' no està suportat. Proveu-ne algun dels següents en el seu lloc: %2$s",
"ExceptionInvalidRendererFormat": "El format generador '%1$s' no és vàlid. Proveu-ne un dels següents en el seu lloc: %2$s.",
"ExceptionInvalidReportRendererFormat": "El format de l'informe '%1$s' no és vàlid. Proveu-ne un dels següent en el seu lloc: %2$s.",
"ExceptionInvalidStaticGraphType": "El gràfic estàtic tipus '%1$s' no és vàlid. Proveu-ne un dels següents en el seu lloc: %2$s.",
@@ -148,40 +207,69 @@
"ExceptionMethodNotFound": "El mètode '%1$s' no existeix o no està disponible en el mòdul '%2$s'.",
"ExceptionMissingFile": "Falta fitxer: %s",
"ExceptionNonceMismatch": "No s'ha pogut verificar el token del formulari.",
- "ExceptionPrivilege": "No podeu accedir a aquest recurs perquè requereix un accés de %s",
+ "ExceptionNotSupportedBrowserText": "Per problemes de seguretat, el vostre navegador no és compatible. Si us plau, actualitzeu a una versió més nova.",
+ "ExceptionNotSupportedBrowserTitle": "El vostre navegador no és compatible.",
+ "ExceptionPrivilege": "No podeu accedir a aquest recurs perquè requereix un accés de %s.",
+ "ExceptionPrivilegeAccessWebsite": "No podeu accedir a aquest recurs perquè requereix accés a %1$s per a l'identificador del lloc web = %2$d.",
+ "ExceptionPrivilegeAtLeastOneWebsite": "No podeu accedir a aquest recurs perquè requereix accés a %s com a mínim per a un lloc web.",
+ "ExceptionReportNotEnabled": "L'informe sol·licitat no està disponible. Això vol dir que normalment el connector que defineix l'informe està desactivat o no teniu prou permisos per accedir a aquest informe.",
"ExceptionReportNotFound": "El informe que s'ha seleccionat no existeix.",
"ExceptionUnableToStartSession": "No s'ha pogut començar la sessió.",
"ExceptionUndeletableFile": "No s'ha pogut esborrar %s",
+ "ExceptionUnexpectedDirectory": "S'han trobat directoris al teu Matomo, però no els esperàvem.",
+ "ExceptionUnexpectedDirectoryPleaseDelete": "Si us plau, suprimiu aquests directoris per evitar errors.",
+ "ExceptionUnexpectedFile": "S'han trobat fitxers al teu Matomo, però no els esperàvem.",
+ "ExceptionUnexpectedFilePleaseDelete": "Si us plau, suprimiu aquests fitxers per evitar errors.",
"ExceptionUnreadableFileDisabledMethod": "El fitxer de configuració {%1$s} no s'ha pogut llegir. El vostre host pot tenir deshabilitat %2$s.",
+ "ExceptionWidgetNotEnabled": "El giny sol·licitat no està habilitat. Això vol dir que normalment el connector que defineix el giny està desactivat o no teniu prou permisos per accedir a aquest giny.",
+ "ExceptionWidgetNotFound": "El giny sol·licitat no existeix.",
+ "ExpandDataTableFooter": "Canviar la visualització o configurar l'informe",
"Export": "Exporta",
"ExportAsImage": "Exportar com a imatge",
"ExportThisReport": "Guardar aquestes dades en altres formats",
"Faq": "PMF",
+ "FileIntegrityWarning": "La comprovació d'integritat del fitxer ha fallat i ha informat d'alguns errors. Hauríeu de solucionar aquest problema i, a continuació, actualitzar aquesta pàgina fins que no mostri cap error.",
+ "FileIntegrityWarningReupload": "Els errors següents poden ser deguts a una càrrega parcial o errònia dels fitxers Matomo.",
+ "FileIntegrityWarningReuploadBis": "Intenta tornar a carregar tots els fitxers Matomo en mode BINARI.",
"First": "Primer",
+ "Flatten": "Allisar",
"ForExampleShort": "p.ex.",
+ "ForceSSLRecommended": "Recomanem utilitzar Matomo només per connexions SSL segures. Per evitar l'accés insegur a través d'http, afegiu %1$s a la secció %2$s del vostre fitxer config/config.ini.php de Matomo.",
+ "ForcedSSL": "Connexió SSL forçosa",
"Forums": "Fòrums",
"FromReferrer": "de",
"GeneralInformation": "Informació General",
"GeneralSettings": "Configuració general",
+ "Generic": "Genèric",
"GetStarted": "Comenceu",
- "GiveUsYourFeedback": "Què penseu del Matomo?",
+ "GiveUsYourFeedback": "Envia'ns els teus comentaris!",
"GoTo": "Anar a %s",
+ "GoTo2": "Anar a",
"Goal": "Objectiu",
"GraphHelp": "Més informació sobre mostrar gràfiques al Matomo.",
"HelloUser": "Hola, %s!",
"Help": "Ajuda",
+ "HelpReport": "Feu clic per mostrar informació d'ajuda sobre aquest informe",
+ "HelpResources": "Recursos d'ajuda",
+ "HelpTranslatePiwik": "Potser us agradaria %1$sajudar-nos a millorar les traduccions de Matomo%2$s?",
"Hide": "amaga",
"HoursMinutes": "%1$s hores %2$s min",
"IP": "IP",
"Id": "Id",
+ "IfArchivingIsFastYouCanSetupCronRunMoreOften": "Suposant que l'arxivat és ràpid per a la vostra configuració, podeu configurar el crontab perquè s'executi amb més freqüència.",
+ "IncompletePeriod": "Període incomplet",
"InfoFor": "Informació per %s",
"Installed": "Instal·lat",
"InvalidDateRange": "Interval de dates no vàlid, si us plau proveu-ho de nou",
"InvalidResponse": "Les dades rebudes són invàlides.",
"JsTrackingTag": "Etiqueta de seguiment JavaScript",
+ "KpiMetric": "Mètrica KPI",
"Language": "Idioma",
+ "Languages": "Idiomes",
"LastDays": "Últims %s dies (incloent avui)",
"LastDaysShort": "Últims %s dies",
+ "LearnMore": "%1$ssaber-ne més%2$s",
+ "Live": "En directe",
"Loading": "Carregant…",
"LoadingData": "Les dades s'estan carregant…",
"LoadingPopover": "Carregant %s...",
@@ -189,7 +277,14 @@
"Locale": "ca_ES.UTF-8",
"Logout": "Surt",
"MainMetrics": "Mètriques principals",
- "MediumToHighTrafficItIsRecommendedTo": "Per llocs de mig i alt transit, recomanem processar informes per avui com a molt cada mitja hora (%1$s segons) o cada hora (%2$s segons)",
+ "Matches": "Coincidències",
+ "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, abans conegut com Piwik, és un projecte col·laboratiu creat pels membres de l'equip de %7$sMatomo%8$s així com per molts altres col·laboradors d'arreu del món. <br> Si ets fan de Matomo, pots ajudar: esbrina %3$sCom participar a Matomo%4$s, o %5$sdona ara%6$s per ajudar a finançar el proper gran llançament de Matomo !",
+ "MaximumNumberOfPeriodsComparedIs": "El nombre màxim de períodes que es poden comparar simultàniament és %s.",
+ "MaximumNumberOfSegmentsComparedIs": "El nombre màxim de segments que es poden comparar simultàniament és %s.",
+ "Measurable": "Mesurable",
+ "MeasurableId": "ID Mesurable",
+ "Measurables": "Mesurables",
+ "MediumToHighTrafficItIsRecommendedTo": "Per llocs de mig i alt transit, recomanem processar informes per avui com a molt cada mitja hora (%1$s segons) o cada hora (%2$s segons).",
"Metadata": "Metadata",
"Metric": "Mètrica",
"MetricToPlot": "Mètrica a mostrar",
@@ -208,10 +303,13 @@
"NUsers": "%s usuaris",
"NVisits": "%s visites",
"Name": "Nom",
+ "NameShownInTheSenderColumn": "El nom que es mostra a la columna del remitent",
"NbActions": "Número d'accions",
+ "NbInteractions": "Nombre d'interaccions",
"NbSearches": "Nombre de cerques internes",
"NeedMoreHelp": "Necessiteu més ajuda?",
"Never": "Mai",
+ "New": "Nou",
"NewReportsWillBeProcessedByCron": "Quan l'arxivat del Matomo no es dispara per el navegador, els nous informes es processaran per el crontab.",
"NewUpdatePiwikX": "Nova actualització: Matomo %s",
"NewVisitor": "Nova visita",
@@ -222,6 +320,7 @@
"NoDataForTagCloud": "No hi ha dades...",
"NotDefined": "%s sense definir",
"NotInstalled": "No instal·lat",
+ "NotPossibleWithoutHttps": "Atenció: fer això sense haver configurat un certificat SSL per utilitzar HTTPS rebentarà Matomo.",
"NotRecommended": "no recomanat",
"NotValid": "%s no és vàlid",
"Note": "Nota",
@@ -240,11 +339,14 @@
"OperationEndsWith": "Acaba amb",
"OperationEquals": "Es igual",
"OperationGreaterThan": "Major que",
+ "OperationIs": "És",
+ "OperationIsNot": "No és",
"OperationLessThan": "Menor que",
"OperationNotEquals": "Diferent",
"OperationStartsWith": "Comença amb",
"OptionalSmtpPort": "Opcional. Per defecte té el valor 25 per no xifrat i TLS SMTP, i 465 per SSL SMTP.",
"Options": "Opcions",
+ "Or": "o",
"OrCancel": "o %1$s cancel·la %2$s",
"Others": "Altres",
"Outlink": "Enllaç extern",
@@ -253,26 +355,40 @@
"OverlayRowActionTooltipTitle": "Obre una pàgina superposada",
"Overview": "Resum",
"Pages": "Pàgines",
- "ParameterMustIntegerBetween": "El paràmetre %1$s ha de ser un enter entre %2$s i %3$s",
+ "Pagination": "%1$s–%2$s de %3$s",
+ "PaginationWithoutTotal": "%1$s–%2$s",
+ "ParameterMustIntegerBetween": "El paràmetre %1$s ha de ser un enter entre %2$s i %3$s.",
"Password": "Contrasenya",
"Period": "Període",
"Piechart": "Gràfic de sectors",
- "PiwikXIsAvailablePleaseUpdateNow": "Hi ha una nova versió del Matomo, %1$s, disponible! %2$s Si us plau, actualitzeu ara!%3$s (%4$s Mostra els canvis%5$s)",
+ "PiwikCannotBeUpgradedBecausePhpIsTooOld": "Matomo no es pot actualitzar a la darrera versió principal perquè la vostra versió de PHP és massa antiga.",
+ "PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s està disponible. Si us plau, aviseu a %2$sl'administrador Matomo%3$s.",
+ "PiwikXIsAvailablePleaseUpdateNow": "Hi ha una nova versió del Matomo, %1$s, disponible! %2$s Si us plau, actualitzeu ara!%3$s (%4$s Mostra els canvis%5$s).",
"PleaseContactYourPiwikAdministrator": "Si us plau, contacteu amb el vostre administrador del Matomo.",
- "PleaseSpecifyValue": "Si us plau especifiqueu el valor per '%s'",
+ "PleaseSpecifyValue": "Si us plau especifiqueu el valor per a '%s'.",
+ "PleaseTryAgain": "Siusplau torna-ho a provar",
"PleaseUpdatePiwik": "Si us plau actualitzeu el Matomo",
+ "PleaseUpgradeYourPhpVersionSoYourPiwikDataStaysSecure": "Si us plau, actualitzeu la vostra versió de PHP com a mínim a PHP %s perquè les vostres dades d'anàlisi de Matomo estiguin segures.",
"Plugin": "Connector",
"Plugins": "Connectors",
"PoweredBy": "Funcionant amb",
"Previous": "Anterior",
"PreviousDays": "%s dies anteriors (sense incloure avui)",
"PreviousDaysShort": "Anteriors %s dies",
+ "PreviousPeriod": "Període anterior",
+ "PreviousYear": "L'any passat",
"Price": "Preu",
+ "Print": "Imprimir",
"ProductConversionRate": "Taxa de conversió del producte",
"ProductRevenue": "Ingressos de productes",
+ "Profiles": "Perfils",
"PurchasedProducts": "Productes comprats",
"Quantity": "Quantitat",
"RangeReports": "Rang de data personalitzat",
+ "ReadThisToLearnMore": "%1$sLlegeix això per obtenir més informació.%2$s",
+ "RealTime": "En temps real",
+ "RearchiveTimeIntervalOnlyForTodayReports": "Això només afecta els informes d'avui (o qualsevol altre interval de dates que inclogui el dia d'avui)",
+ "Reasons": "Raons",
"Recommended": "Recomanat",
"RecordsToPlot": "Entrades a mostrar",
"Refresh": "Actualitza",
@@ -282,10 +398,13 @@
"Remove": "Elimina",
"Report": "Informe",
"ReportGeneratedFrom": "Aquest informe s'ha generat fent servir dades de %s.",
+ "ReportRatioTooltip": "'%1$s' representa %2$s de %3$s %4$s al segment %5$s amb %6$s.",
"Reports": "Informes",
+ "ReportsContainingTodayWillBeProcessedAtMostEvery": "Arxiva els informes com a màxim cada X segons",
"ReportsWillBeProcessedAtMostEveryHour": "El informes per tant es processaran com a molt cada hora.",
"RequestTimedOut": "Una petició a %s ha caducat. Proveu-ho de nou.",
"Required": "%s requerit",
+ "Required2": "Obligatori",
"ReturningVisitor": "Visita que retorna",
"ReturningVisitorAllVisits": "Veure totes les visites",
"RowEvolutionRowActionTooltip": "Observeu com les mètriques d'aquesta fila han canviat durant el pas del temps",
@@ -296,29 +415,47 @@
"SaveImageOnYourComputer": "Per guardar la imatge al vostre ordinador, feu click amb el botó dret sobre la imatge i trieu \"Guardar la imatge com..\"",
"Search": "Cerca",
"SearchNoResults": "Sense resultats",
+ "SecondsSinceFirstVisit": "En segons des de la primera visita",
+ "SecondsSinceLastEcommerceOrder": "Segons des de l'última comanda de comerç electrònic",
+ "SecondsSinceLastVisit": "Segons des de la darrera visita",
"Security": "Seguretat",
"SeeAll": "veure-ho tot",
"SeeTheOfficialDocumentationForMoreInformation": "Vegeu la %1$sinformació oficial%2$s per més informació.",
+ "SeeThisFaq": "Vegeu%1$saquest FAQ%2$s.",
"Segment": "Segment",
- "SelectYesIfYouWantToSendEmailsViaServer": "Trieu \"si\" si voleu o heu d'enviar el correu a través de un servidor enlloc de a través de la funció mail local.",
+ "SelectYesIfYouWantToSendEmailsViaServer": "Trieu \"Si\" per si voleu o heu d'enviar el correu a través de un servidor enlloc de fer-ho a través de la funció mail local",
"Settings": "Tauler de control",
"Shipping": "Enviament",
"Show": "mostra",
"SingleWebsitesDashboard": "Tauler per un sol lloc web",
"SmallTrafficYouCanLeaveDefault": "Per llocs amb poc transit, pots deixar el valor per defecte de %s segons i accedir als informes en temps real.",
"SmtpEncryption": "encriptació SMTP",
+ "SmtpFromAddress": "SMTP de l'adreça",
+ "SmtpFromEmailHelp": "El valor predeterminat és noreply@{DOMAIN}, on {DOMAIN} se substituirà pel vostre domini Matomo \"%1$s\".<br>Si l'enviament de correus no us funciona, potser haureu de configurar aquesta adreça perquè coincideixi amb el vostre nom d'usuari SMTP.",
+ "SmtpFromName": "SMTP del nom",
"SmtpPassword": "contrasenya SMTP",
"SmtpPort": "Port SMTP",
"SmtpServerAddress": "adreça del servidor SMTP",
"SmtpUsername": "usuari SMTP",
+ "Source": "Font",
+ "StatisticsAreNotRecorded": "El seguiment de visitants de Matomo està desactivat actualment! Torneu a activar el seguiment establint record_statistics = 1 al fitxer config/config.ini.php.",
"Subtotal": "Subtotal",
"Summary": "Resum",
"Table": "Taula",
"TagCloud": "Núvol d'etiquetes",
"Tax": "Impostos",
+ "ThankYouForUsingMatomo": "Gràcies per utilitzar Matomo",
+ "TheMatomoTeam": "L'equip Matomo",
+ "TimeAgo": "fa %s",
+ "TimeFormat": "Format horari",
"TimeOnPage": "Temps a la pàgina",
+ "ToDeleteAllDirectoriesRunThisCommand": "Per eliminar tots aquests directoris alhora, podeu executar aquesta ordre:",
+ "ToDeleteAllFilesRunThisCommand": "Per eliminar tots aquests fitxers alhora, podeu executar aquesta ordre:",
"Total": "Total",
+ "TotalRatioTooltip": "Això és %1$s de tots els %2$s %3$s a %4$s.",
"TotalRevenue": "Total Ingressos",
+ "TotalVisitsPageviewsActionsRevenue": "(Total: %1$s visites, %2$s pàgines vistes, %3$s accions, %4$s ingressos)",
+ "Totals": "Totals",
"TrackingScopeAction": "Acció",
"TrackingScopePage": "Pàgina",
"TrackingScopeVisit": "Visita",
@@ -330,28 +467,54 @@
"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",
+ "UseSSLInstall": "Recomanem utilitzar Matomo només amb connexions SSL segures. Si us plau, %1$sfeu clic aquí i continueu el procés d'instal·lació mitjançant SSL%2$s.",
"UserId": "Identificador Usuari",
+ "UserIds": "Identificadors d'usuari",
"Username": "Usuari",
"VBarGraph": "Gràfic de barres",
+ "ValidatorErrorCharacterTooLong": "El valor conté \"%1$s\" caràcters però hauria de contenir com a màxim %2$s caràcters.",
+ "ValidatorErrorCharacterTooShort": "El valor conté \"%1$s\" caràcters però hauria de contenir almenys %2$s caràcters.",
+ "ValidatorErrorEmptyValue": "Cal proporcionar un valor.",
+ "ValidatorErrorInvalidDateTimeFormat": "La data \"%1$s\" no té el format correcte, feu servir %2$s",
+ "ValidatorErrorNoValidRegex": "El valor \"%s\" no és una expressió regular vàlida.",
+ "ValidatorErrorNotANumber": "El valor no és una xifra.",
+ "ValidatorErrorNotEmailLike": "El valor \"%s\" no sembla un correu electrònic vàlid.",
+ "ValidatorErrorNotUrlLike": "El valor \"%s\" no sembla una URL.",
+ "ValidatorErrorNumberTooHigh": "El valor \"%1$s\" és massa alt. El valor ha de ser com a màxim %2$s",
+ "ValidatorErrorNumberTooLow": "El valor \"%1$s\" és massa baix. El valor ha de ser com a mínim %2$s.",
+ "ValidatorErrorXNotWhitelisted": "El valor \"%1$s\" no està permès, utilitzeu-ne un de: %2$s.",
"Value": "Valor",
"View": "Vista",
+ "ViewAccessRequired": "El token_auth utilitzat té massa privilegis per utilitzar-lo en un URL de sol·licitud que no sigui API. Utilitzeu una contrasenya específica de l'aplicació per a un usuari que només tingui accés de visualització.",
+ "ViewDocumentationFor": "Consulta la documentació de %1$s",
"Visit": "Visita",
"VisitConvertedGoal": "La visita ha convertit al menys un objectiu",
"VisitConvertedGoalId": "La visita ha convertit un id d'objectiu especific",
"VisitConvertedNGoals": "La visita ha convertit %s objectius",
"VisitDuration": "Temps mig de visita (en segons)",
+ "VisitId": "ID de la visita",
"VisitType": "Tipus de visitant",
"VisitTypeExample": "Per exemple, per seleccionar tots els visitants que han retornat al lloc web, incloent els que han comprat alguna cosa en anteriors visites, la petició de l'API tindria %s",
+ "VisitTypes": "Tipus de visita",
"Visitor": "Visita",
+ "VisitorFingerprint": "Empremta digital",
"VisitorID": "ID del visitant",
"VisitorIP": "Ip del visitant",
+ "VisitorIPs": "IP del visitant",
"VisitorSettings": "Configuració del visitant",
"Visitors": "Visitants",
"VisitsWith": "Visites amb %s",
+ "VisualizationDoesNotSupportComparison": "Aquesta visualització no admet la comparació de segments/períodes.",
"Warning": "Avís",
+ "WarningDebugOnDemandEnabled": "El mode de seguiment %1$s està habilitat. Per motius de seguretat només s'ha d'activar durant un període de temps curt. Per desactivar-lo, defineix%2$s com %3$s a %4$s",
+ "WarningDevelopmentModeOnButNotGitInstalled": "Actualment esteu utilitzant Matomo en mode de desenvolupament, però no s'ha instal·lat mitjançant git. No es recomana utilitzar Matomo en mode de desenvolupament en un entorn de producció.",
"WarningFileIntegrityNoManifest": "La verificació de la integritat dels fitxers no s'ha pogut fer perquè falta el manifest.inc.php.",
- "WarningFileIntegrityNoMd5file": "La verificació de la integritat dels fitxers no s'ha pogut completar perquè falta la funció md5_file();",
+ "WarningFileIntegrityNoManifestDeployingFromGit": "Si esteu desplegant Matomo des de Git, aquest missatge és normal.",
+ "WarningFileIntegrityNoMd5file": "La verificació de la integritat dels fitxers no s'ha pogut completar perquè falta la funció md5_file().",
"WarningPasswordStored": "%1$sAlerta:%2$s Aquesta contrasenya es guardarà en un fitxer de configuració visible on tothom pot accedir.",
+ "WarningPhpVersionXIsTooOld": "La versió de PHP %s que esteu utilitzant ha arribat al final de la seva vida útil (EOL). Us demanem vivament que actualitzeu a una versió actual, ja que l'ús d'aquesta versió us pot exposar a vulnerabilitats de seguretat i errors que s'han corregit en versions més recents de PHP.",
+ "WarningPiwikWillStopSupportingPHPVersion": "Matomo deixarà de suportar PHP %1$s a la propera versió principal. Actualitzeu el vostre PHP com a mínim a PHP %2$s, abans que sigui massa tard!",
+ "Warnings": "Avisos-",
"Website": "Lloc web",
"Weekly": "Setmanalment",
"WeeklyReport": "setmanal",
@@ -359,13 +522,18 @@
"WellDone": "Ben fet!",
"Widget": "Giny",
"Widgets": "Ginys",
+ "XComparedToY": "%1$s comparat amb %2$s",
+ "XFromY": "%1$s de %2$s",
"YearlyReport": "anual",
"YearlyReports": "Informe anual",
"YearsDays": "%1$s anys %2$s dies",
"Yes": "Sí",
"YouAreCurrentlyUsing": "Ara mateix estàs fent servir el Matomo %s.",
+ "YouAreViewingDemoMessage": "Esteu veient la demostració de %1$sMatomo%2$s",
"YouMustBeLoggedIn": "Has d'entrar per accedir a aquesta funcionalitat.",
- "YourChangesHaveBeenSaved": "Els vostres canvis s'han guardat"
+ "YouMustUpgradePhpVersionToReceiveLatestPiwik": "Heu d'actualitzar la vostra versió de PHP per rebre l'última actualització de Matomo.",
+ "YourChangesHaveBeenSaved": "Els vostres canvis s'han desat.",
+ "YourSessionHasExpired": "La vostra sessió ha caducat per inactivitat. Inicieu sessió per continuar."
},
"Mobile": {
"AboutPiwikMobile": "Sobre el Matomo al mòbil",
@@ -377,6 +545,7 @@
"Advanced": "Avançat",
"AnonymousAccess": "Accès anònim",
"AnonymousTracking": "Rastreig anònim",
+ "AskForAnonymousTrackingPermission": "Quan està activat, Matomo Mobile enviarà dades d'ús anònimes a matomo.org. La intenció és utilitzar aquestes dades per ajudar els desenvolupadors de Matomo Mobile a entendre millor com s'utilitza l'aplicació. La informació enviada és: menús i paràmetres en què s'ha fet clic, nom i versió del sistema operatiu, qualsevol error que es mostri a Matomo Mobile. NO farem un seguiment de cap de les vostres dades d'anàlisi. Aquestes dades anònimes mai es faran públiques. Podeu desactivar/activar el seguiment anònim a Configuració en qualsevol moment.",
"ChooseHttpTimeout": "Seleccioneu el temps d'expiració HTTP",
"ChooseMetric": "Trieu una mètrica",
"ChooseReport": "Trieu un informe",
@@ -385,20 +554,34 @@
"DefaultReportDate": "Data de l'informe",
"EmailUs": "Envia'ns un email",
"EnableGraphsLabel": "Mostra gràfiques",
+ "EnterAuthCode": "Introduïu el codi d'autenticació",
+ "EnterAuthCodeExplanation": "Sembla que esteu utilitzant l'autenticació de dos factors. Introduïu el codi de sis dígits per iniciar sessió al vostre compte.",
+ "EnterCorrectAuthCode": "Introduïu el codi d'autenticació correcte",
"EvolutionGraph": "Gràfic històric",
+ "ExceptionNoViewAccess": "Si us plau, comproveu el vostre nom d'usuari i contrasenya i assegureu-vos que teniu accés %s a almenys un lloc web.",
"HelpUsToImprovePiwikMobile": "T'agradaria activar el rastreig anònim de l'us del Matomo en el teu mòbil?",
+ "HowtoDeleteAnAccount": "Premeu llargament per eliminar un compte.",
"HowtoDeleteAnAccountOniOS": "Pasa de l'esquerra cap a la dreta per eliminar un compte",
+ "HowtoExitAndroid": "Si us plau, fes clic a TORNAR per sortir",
+ "HowtoLoginAnonymous": "Deixeu el nom d'usuari i la contrasenya buits per a l'inici de sessió anònim",
+ "HttpIsNotSecureWarning": "El vostre testimoni d'autorització de Matomo (token_auth) s'envia en text clar si feu servir \"HTTP\". Per aquest motiu recomanem HTTPS per al transport segur de dades a través d'Internet. Voleu continuar?",
"HttpTimeout": "Temps d'expiració HTTP",
"IgnoreSslError": "Ignorar error SSL",
+ "IncompatiblePiwikVersion": "La versió de Matomo que utilitzeu és incompatible amb Matomo Mobile 2. Actualitzeu la instal·lació de Matomo i torneu-ho a provar o instal·leu Matomo Mobile 1.",
"LastUpdated": "Ultima actualització: %s",
"LoadingReport": "Carregant %s",
"LoginCredentials": "Credencials",
+ "LoginToPiwikToChangeSettings": "Inicieu sessió al vostre servidor de Matomo per crear i actualitzar llocs web, usuaris o per canviar la configuració general com ara \"Informe per carregar per defecte\".",
"LoginUseHttps": "Utilitza https",
+ "MatomoMarketplace": "Mercat Matomo",
+ "MatomoMobile": "Aplicació mòbil Matomo",
"MultiChartLabel": "Mostra minigràfics",
"NavigationBack": "Enrere",
"NetworkError": "Error de xarxa",
+ "NetworkErrorWithStatusCode": "S'ha produït un error \"%1$s\". La sol·licitud ha retornat l'estat \"%2$s\". L'URL era \"%3$s\". Comproveu l'URL introduït i els registres d'errors d'aquest servidor per obtenir més informació sobre l'error i com resoldre'l.",
"NetworkErrorWithStatusCodeShort": "Error de xarxa %s",
"NetworkNotReachable": "La xarxa no és accessible",
+ "NoAccountIsSelected": "Heu de seleccionar un compte. Afegiu un compte nou si no n'heu configurat cap.",
"NoDataShort": "Sense óinformaci",
"NoPiwikAccount": "No teniu un compte de Matomo?",
"NoReportsShort": "Sense informes",
@@ -406,33 +589,40 @@
"NoVisitorsShort": "Sense visitants",
"NoWebsiteFound": "No s'ha trobat el lloc web",
"NoWebsitesShort": "Sense llocs web",
+ "PossibleSslError": "Possible error del certificat SSL",
+ "PossibleSslErrorExplanation": "S'ha produït un error que podria ser causat per un certificat no vàlid o autosignat: \"%s\". Pot ser que l'inici de sessió us funcioni quan ignoreu la validació SSL, però és menys segur. Podeu canviar la validació SSL en qualsevol moment a la configuració.",
"PullDownToRefresh": "Estireu per actualitzar...",
"RatingDontRemindMe": "No em recordis",
"RatingNotNow": "Ara no",
"RatingNow": "D'acord, el puntuaré ara",
+ "RatingPleaseRateUs": "L'aplicació mòbil Matomo és un programari gratuït, us agrairem molt que dediqueu 1 minut a valorar l'aplicació als %1$s. Si teniu suggeriments de funcions noves o informes d'errors, poseu-vos en contacte amb %2$s",
"ReleaseToRefresh": "Solta per refrescar...",
"Reloading": "Carregant...",
+ "RequestTimedOutShort": "Error de temps d'espera de la xarxa",
+ "RestrictedCompatibility": "Compatibilitat restringida",
+ "RestrictedCompatibilityExplanation": "La versió de Matomo %s que esteu utilitzant no és totalment compatible amb Matomo Mobile 2. És possible que trobeu alguns errors. Us recomanem que actualitzeu Matomo a la darrera versió o que utilitzeu Matomo Mobile 1.",
"SaveSuccessError": "La URL del Matomo o la combinació d'usuari contrasenya es incorrecta.",
"SearchWebsite": "Cerca llocs web",
"ShowAll": "Mostra-ho tot",
"ShowLess": "Mostra menys",
"StaticGraph": "Gràfic de visió general",
"TopVisitedWebsites": "Llocs web més visitats",
- "TryIt": "Prova-ho",
+ "TryIt": "Prova-ho!",
"UseSearchBarHint": "Nomes es mostren els %s primers llocs webs aquí. Utilitzeu la barra de cerca per accedir als altres llocs web.",
"ValidateSslCertificate": "Validar certificat SSL",
"VerifyAccount": "Verificant el compte",
"VerifyLoginData": "Asegureu-vos del que el vostre nom d'usuari i contrasenya és correcte.",
- "YouAreOffline": "Ho sentim, actualment estàs fora de línia."
+ "YouAreOffline": "Ho sentim, actualment estàs fora de línia"
},
"RowEvolution": {
"AvailableMetrics": "Mètriques disponibles",
- "CompareDocumentation": "Feu click a l'enllaç a continuació per obrir aquesta finestra emergent per la mateixa taula i comparar múltiples registres <br /> Utilitzeu la tecla Shit per marcar la fila per a comparació sense obrir aquesta finestra emergent.",
+ "CompareDocumentation": "Feu click a l'enllaç a continuació per obrir aquesta finestra emergent per la mateixa taula i comparar múltiples registres <br>Utilitzeu la tecla Shift per marcar la fila per a comparació sense obrir aquesta finestra emergent.",
"CompareRows": "Compareu registres",
"ComparingRecords": "Comparant %s files",
"Documentation": "Feu click a les mètriques per mostrarle al gràfic d'evolució. Utiltizeu la tecla shift per mostrar múltiples mètriques d'una vegada.",
"MetricBetweenText": "entre %1$s i %2$s",
"MetricChangeText": "%s en el període",
+ "MetricMinMax": "%1$s va oscil·lar entre %2$s i %3$s durant el període",
"MetricsFor": "Mètriques per %s",
"MultiRowEvolutionTitle": "Evolució de múltiples files",
"PickARow": "Seleccioneu una fila per comparar",
diff --git a/lang/da.json b/lang/da.json
index 58c87d3292..36f1e3ed29 100644
--- a/lang/da.json
+++ b/lang/da.json
@@ -16,6 +16,7 @@
"Apply": "Tilføj",
"ArchivingInlineHelp": "For hjemmesider med medium til høj trafik anbefales det at deaktivere Matomo-arkivering udløst fra browseren. I stedet anbefales det at køre et cron job hver time til at behandle Matomo rapporter.",
"ArchivingTriggerDescription": "Til større Matomo-installationer anbefales det at %1$soprette et cronjob%2$s til at behandle rapporterne automatisk.",
+ "ArchivingTriggerSegment": "Brug af skræddersyede segmenter vil stadig aktivere behandling af arkiverne.",
"AuthenticationMethodSmtp": "Godkendelsesmetode til SMTP",
"AverageOrderValue": "Gennemsnitlig ordreværdi",
"AveragePrice": "Gennemsnitlig pris",
@@ -148,6 +149,7 @@
"Description": "Beskrivelse",
"Desktop": "Stationær",
"Details": "Detaljer",
+ "Disabled": "Slået fra",
"Discount": "Rabat",
"DisplaySimpleTable": "Vis enkel tabel",
"DisplayTableWithGoalMetrics": "Vis tabel med måldata",
@@ -170,6 +172,7 @@
"EncryptedSmtpTransport": "Indtast tranportlagskrypteringen, som kræves af SMTP-serveren.",
"Error": "Fejl",
"ErrorRequest": "Ups… der var et problem i løbet af anmodningen. Måske serveren havde et midlertidigt problem, eller måske du har anmodet om en rapport med for mange data. Prøv igen. Hvis fejlen opstår gentagne gange %1$skontakt din Matomo administrator%2$s for at få hjælp.",
+ "ErrorRequestFaqLink": "Se løsningen på dette problem i FAQ'en.",
"ErrorTryAgain": "Fejl. Prøv venligst igen senere.",
"Errors": "Fejl",
"EvolutionOverPeriod": "Udvikling i perioden",
@@ -204,6 +207,7 @@
"ExceptionMethodNotFound": "Metoden '%1$s' eksisterer ikke eller er ikke tilgængelig i modulet '%2$s'.",
"ExceptionMissingFile": "Mangler fil: %s",
"ExceptionNonceMismatch": "Kan ikke kontrollere sikkerheden på formularen.",
+ "ExceptionNotSupportedBrowserText": "På grund af sikkerhedsrisici er din browser ikke understøttet. Opdatér venligst til en nyere version.",
"ExceptionNotSupportedBrowserTitle": "Din browser er ikke understøttet",
"ExceptionPrivilege": "Du kan ikke få adgang til denne ressource, det kræver en %s adgang.",
"ExceptionPrivilegeAccessWebsite": "Du har ikke adgang til denne ressource, da den kræver %1$s adgang for websitet med id=%2$d.",
@@ -245,6 +249,7 @@
"GraphHelp": "Flere oplysninger om visning af diagrammer i Matomo.",
"HelloUser": "Hej %s!",
"Help": "Hjælp",
+ "HelpReport": "Klik for at vise hjælp om denne rapport",
"HelpResources": "Hjælpe resourcer",
"HelpTranslatePiwik": "Måske vil du gerne %1$shjæle til at forbedre Matomo oversættelser%2$s?",
"Hide": "skjul",
@@ -480,6 +485,7 @@
"ValidatorErrorXNotWhitelisted": "Værdien \"%1$s\" er ikke tilladt. Brug en af følgende: %2$s.",
"Value": "Værdi",
"View": "Vis",
+ "ViewAccessRequired": "Den brugte token_auth har for megen adgang til at blive brugt i en ikke-API request URL. Brug venligst et app-specifikt kodeord for en bruger der kun har \"view access\".",
"ViewDocumentationFor": "Se dokumentation for %1$s",
"Visit": "Besøg",
"VisitConvertedGoal": "Besøg omregnet mindst et mål",
@@ -501,6 +507,7 @@
"VisualizationDoesNotSupportComparison": "Denne visualisering understøtter ikke segment/periode sammenligning.",
"Warning": "Advarsel",
"WarningDebugOnDemandEnabled": "Tracker %1$s mode er aktiveret. Af sikkerhedsgrunde skal denne indstilling kun være aktiveret en kort periode. For at deaktivere sæt %2$s til %3$s i %4$s",
+ "WarningDevelopmentModeOnButNotGitInstalled": "Du bruger i øjeblikket Matomo i udviklingstilstand, men det blev ikke installeret via git. Det anbefales ikke at bruge Matomo i udviklingstilstand i produktionsmiljø.",
"WarningFileIntegrityNoManifest": "Filintegritetstjek kunne ikke udføres på grund af manglende manifest.inc.php.",
"WarningFileIntegrityNoManifestDeployingFromGit": "Hvis du implementerer Matomo fra Git, er meddelelsen normal.",
"WarningFileIntegrityNoMd5file": "Fil integritetstjek kunne ikke gennemføres pga. manglende md5_file () funktion.",
diff --git a/lang/de.json b/lang/de.json
index a752270e2c..66ab2fbac9 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -149,6 +149,7 @@
"Description": "Beschreibung",
"Desktop": "Desktop",
"Details": "Details",
+ "Disabled": "Deaktiviert",
"Discount": "Rabatt",
"DisplaySimpleTable": "Einfache Tabelle anzeigen",
"DisplayTableWithGoalMetrics": "Tabelle mit Ziel-Metriken anzeigen",
diff --git a/lang/fa.json b/lang/fa.json
index b028af5c4b..8795cf952d 100644
--- a/lang/fa.json
+++ b/lang/fa.json
@@ -27,17 +27,19 @@
"BrokenDownReportDocumentation": "در گزارش‌های مختلف که در پایین صفحه به صورت متمایز نمایش داده شده‌اند، تقسیم شده است. شما می‌توانید با کلیک بر روی هر کدام از نمودارها که تمایل دارید، آن را با جزییات بیشتر ببینید .",
"Cancel": "لغو",
"CannotUnzipFile": "فایل %1$s: %2$s نتوانست از حالت فشرده خارج شود",
- "ChangePassword": "تغییر کلمه عبور",
+ "ChangeInX": "تغییر در %1$s",
+ "ChangePassword": "تغییر رمز عبور",
"ChangeTagCloudView": "لطفا توجه داشته‌باشید که شما می‌توانید این گزارش را در راه‌های دیگر به عنوان یک ابر برچسب مشاهده کنید. برای این‌کار از کنترل‌های موجود در پایین گزارش استفاده کنید.",
"ChooseDate": "انتخاب تاریخ، تاریخ کنونی: %s",
"ChooseLanguage": "انتخاب زبان",
"ChoosePeriod": "انتخاب بازه",
"Clear": "پاک کن",
"ClickHere": "برای اطلاعات بیشتر کلیک کنید",
+ "ClickToRemoveComp": "برای حذف این مقایسه کلیک کنید.",
"ClickToSearch": "برای جستجو کلیک کنید",
"Close": "بستن",
"ColumnActionsPerVisit": "فعالیت‌ها در هر بازدید",
- "ColumnActionsPerVisitDocumentation": "میانگین تعداد عملیاتی (صفحات بازدید شده ، دانلودها و لینکهای بیرونی)که در طی بازدید انجام شده است.",
+ "ColumnActionsPerVisitDocumentation": "میانگین تعداد عملیاتی (صفحات بازدید شده ، جستجوهای سایت، دانلودها و لینکهای بیرونی)که در طی بازدید انجام شده است.",
"ColumnAverageGenerationTime": "میانگین زمان تولید",
"ColumnAverageGenerationTimeDocumentation": "میانگین زمانی که طول کشیده تا صفحه تولید شود. این معیار شامل زمانی که طول کشیده تا سرور صفحه را تولید کند، بعلاوه‌ی زمانیست که طول می‌کشد تا بازدیدکننده پاسخ را از سرور دریافت کند. پایین بودن «میانگین زمان تولید» به معنای وبسایت سریع‌تر برای بازدیدکنندگان شماست!",
"ColumnAverageTimeOnPage": "میانگین زمان سپری شده در صفحه",
@@ -514,10 +516,15 @@
"DefaultReportDate": "تاریخ گزارش",
"EmailUs": "به ما ایمیل بزنید",
"EnableGraphsLabel": "نمایش نمودارها",
+ "EnterAuthCode": "کد احراز هویت را وارد کنید",
+ "EnterAuthCodeExplanation": "به نظر می رسد از احراز هویت دو مرحله ای استفاده می‌کنید. لطفا کد شش رقمی را وارد کنید تا وارد حساب کاربری خود شوید.",
+ "EnterCorrectAuthCode": "کد احراز هویت صحیح را وارد کنید",
"EvolutionGraph": "نمودار زمانی",
+ "ExceptionNoViewAccess": "لطفا نام کاربری و رمز عبور خود را بررسی کنید و مطمئن شوید حداقل به یک وب‌سایت دسترسی %s دارید.",
"HelpUsToImprovePiwikMobile": "آیا مایل هستید به کار بردن ردیابی را برای ناشناس ها در Matomo موبایل فعال کنید؟",
"HowtoDeleteAnAccount": "به مدت طولانی نگه دارید تا اکانت حذف شود.",
"HowtoDeleteAnAccountOniOS": "برای حذف حساب کاربری از راست به چپ بکشید.",
+ "HowtoExitAndroid": "لطفا برای خروج دوباره روی BACK کلیک کنید",
"HowtoLoginAnonymous": "برای ورود ناشناس نام کاربری و رمز عبور را خالی بگذارید",
"HttpIsNotSecureWarning": "اگر از HTTP استفاده می‌کنید، اجازه‌نامه امنیتی Matomo شما (token_auth) به صورت متن بدون محافظت ارسال شده است. به همین دلیل توصیه می‌کنیم از HTTPS را برای انتقال امن اطلاعات بر روی اینترنت استفاده کنید. آیا می‌خواهید ادامه دهید؟",
"HttpTimeout": "HTTP Timeout",
@@ -528,6 +535,7 @@
"LoginCredentials": "اعتبار نامه",
"LoginToPiwikToChangeSettings": "به سرور Matomo خود وارد شوید تا بتوانید وبسایت‌ها و کاربران تازه ایجاد کنید یا آن‌ها را بروز کنید. همچنین برای تغییر تنظیمات کلی همانند «گزارش پیشفرض»",
"LoginUseHttps": "استفاده از HTTPS",
+ "MatomoMarketplace": "فروشگاه Matomo",
"MatomoMobile": "نسخه موبایل ماتومو",
"MultiChartLabel": "نمایش نمودار خطی",
"NavigationBack": "بازگشت",
diff --git a/lang/fi.json b/lang/fi.json
index c961f16f2d..97f0fc5ba3 100644
--- a/lang/fi.json
+++ b/lang/fi.json
@@ -142,6 +142,7 @@
"Description": "Kuvaus",
"Desktop": "Työpöytä",
"Details": "Tiedot",
+ "Disabled": "Pois käytöstä",
"Discount": "Alennukset",
"DisplaySimpleTable": "Näytä yksinkertainen taulukko",
"DisplayTableWithGoalMetrics": "Näytä taulukko tavoitetietojen kanssa",
@@ -164,6 +165,7 @@
"EncryptedSmtpTransport": "Valitse SMTP-palvelimen vaatima salaus.",
"Error": "Virhe",
"ErrorRequest": "Hups, ongelma pyyntöäsi käsitellessä. Palvelimella on voinut olla tilapäinen ongelma tai ehkä pyytämäsi raportti sisälsi liikaa tietoa. Ole hyvä ja yritä uudelleen. Jos ongelma jatkuu, ole hyvä ja %1$sota yhteyttä Matomo-ylläpitäjääsi%2$s avun saamiseksi.",
+ "ErrorTryAgain": "Virhe. Yritä myöhemmin uudelleen.",
"Errors": "Virheet",
"EvolutionOverPeriod": "Muutos aikajaksolla",
"EvolutionSummaryGeneric": "%1$s %2$s:ssa verrattuna %3$s %4$s:ssa. Evoluutio: %5$s",
diff --git a/lang/fr.json b/lang/fr.json
index 45effef98c..59a4e5e18f 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -19,11 +19,11 @@
"ArchivingTriggerSegment": "L'utilisation de segments personnalisés déclenchera toujours le traitement des archives.",
"AuthenticationMethodSmtp": "Méthode d'authentification pour le serveur SMTP",
"AverageOrderValue": "Valeur moyenne d'une commande",
- "AveragePrice": "Prix Moyen",
+ "AveragePrice": "Prix moyen",
"AverageQuantity": "Quantité moyenne",
"AverageX": "Moy. %s",
"BackToPiwik": "Retourner à Matomo",
- "Broken": "Brisé",
+ "Broken": "Divisé",
"BrokenDownReportDocumentation": "Il est divisé en plusieurs rapports, qui sont affichés en lignes de tendance en bas de la page. Vous pouvez agrandir le graphique en cliquant sur le rapport que vous souhaitez voir.",
"Cancel": "Annuler",
"CannotUnzipFile": "Impossible de décompresser le ficher %1$s : %2$s",
@@ -41,7 +41,7 @@
"ColumnActionsPerVisit": "Actions par visite",
"ColumnActionsPerVisitDocumentation": "Nombre moyen d'actions (affichages de page, recherches, téléchargements ou liens sortants) qui ont été effectuées durant les visites.",
"ColumnAverageGenerationTime": "Temps moyen de génération",
- "ColumnAverageGenerationTimeDocumentation": "Le temps moyen qu'il a fallu pour générer la page. Cette mesure comprend le temps nécessaire au serveur pour générer la page Web, plus le temps nécessaire au visiteur pour télécharger la réponse du serveur. Un 'Temps moyen de génération' plus faible signifie un site web plus rapide pour vos visiteurs !",
+ "ColumnAverageGenerationTimeDocumentation": "Le temps moyen qu'il a fallu pour générer la page. Cette mesure comprend le temps nécessaire au serveur pour générer la page Web, plus le temps nécessaire au visiteur pour télécharger la réponse du serveur. Un « temps moyen de génération » plus faible signifie un site web plus rapide pour vos visiteurs !",
"ColumnAverageTimeOnPage": "Temps moyen sur la page",
"ColumnAverageTimeOnPageDocumentation": "Temps moyen que les visiteurs ont passé sur cette page (seulement la page, pas le site entier).",
"ColumnAvgTimeOnSite": "Temps moyen sur le site web",
@@ -51,7 +51,7 @@
"ColumnBounces": "Rebonds",
"ColumnBouncesDocumentation": "Nombre de visites qui ont commencé et se sont terminées sur cette page. Cela signifie que les visiteurs ont quitté le site après avoir vu seulement cette page.",
"ColumnConversionRate": "Taux de conversion",
- "ColumnConversionRateDocumentation": "Le Pourcentage de visites qui ont déclenché une conversion d'objectif.",
+ "ColumnConversionRateDocumentation": "Le pourcentage de visites qui ont déclenché une conversion d'objectif.",
"ColumnDestinationPage": "Page de destination",
"ColumnEntrances": "Entrées",
"ColumnEntrancesDocumentation": "Nombre de visites qui ont démarré sur cette page.",
@@ -73,7 +73,7 @@
"ColumnNbVisits": "Visites",
"ColumnNbVisitsDocumentation": "Si un visiteur se rend sur votre site web pour la première fois ou s'il visite une page plus de 30 minutes après sa dernière consultation, il sera comptabilisé comme une nouvelle visite.",
"ColumnPageBounceRateDocumentation": "Pourcentage de visites qui ont commencé sur cette page et ont quitté le site juste après.",
- "ColumnPageGenerationTime": "Délai de génération de la page",
+ "ColumnPageGenerationTime": "Temps de génération de la page",
"ColumnPageviews": "Vues de page",
"ColumnPageviewsDocumentation": "Le nombre de fois que cette page a été visitée.",
"ColumnPercentageVisits": "%% Visites",
@@ -92,12 +92,12 @@
"ColumnVisitDuration": "Durée de la visite (en secondes)",
"ColumnVisitsWithConversions": "Visites avec conversions",
"CompareDatesParamMustMatchComparePeriods": "La longueur du paramètre de requête %1$s doit correspondre à la longueur du paramètre de requête %2$s.",
- "CompareTo": "Comparer à :",
+ "CompareTo": "Comparer à :",
"ComparisonCardTooltip1": "'%1$s' sur %2$s contient %3$s de toutes les visites (%4$s de %5$s au total).",
"ComparisonCardTooltip2": "Le compte des visites est différent de %1$s par rapport au %2$s sur %3$s.",
"ComparisonRatioTooltip": "Il s'agit d'un changement %1$s par rapport au segment '%2$s' sur %3$s.",
"Comparisons": "Comparaisons",
- "ComputedMetricAverage": "Moy. %1$spar %2$s",
+ "ComputedMetricAverage": "Moy. %1$s par %2$s",
"ComputedMetricAverageDocumentation": "Valeur moyenne de \"%1$s\" par \"%2$s\".",
"ComputedMetricAverageShortDocumentation": "Valeur moyenne de \"%1$s\".",
"ComputedMetricCountDocumentation": "Le nombre de %s",
@@ -107,34 +107,34 @@
"ComputedMetricMaxDocumentation": "La valeur maximale pour %s",
"ComputedMetricMin": "Min %s",
"ComputedMetricMinDocumentation": "La valeur minimale pour %s",
- "ComputedMetricRate": "%s Taux",
+ "ComputedMetricRate": "Taux %s",
"ComputedMetricRateDocumentation": "Le ratio de \"%1$s\" sur l'ensemble des \"%2$s\".",
"ComputedMetricRateShortDocumentation": "Le pourcentage de \"%1$s\".",
"ComputedMetricSum": "Total %s",
- "ComputedMetricSumDocumentation": "Le nombre total (somme) of %s",
- "ComputedMetricUniqueCount": "%sUnique",
+ "ComputedMetricSumDocumentation": "Le nombre total (somme) de %s",
+ "ComputedMetricUniqueCount": "%s unique",
"ComputedMetricUniqueCountDocumentation": "Le nombre unique de %s",
- "ConfigFileIsNotWritable": "Le fichier de configuration de Matomo %1$s n'est pas modifiable, certains de vos changements ne seront pas sauvegardées. %2$s Veuillez modifier les permissions du fichier de configuration de manière à le rendre accessible en écriture.",
+ "ConfigFileIsNotWritable": "Le fichier de configuration de Matomo %1$s n'est pas modifiable, certains de vos changements ne seront pas enregistrés. %2$s Veuillez modifier les permissions du fichier de configuration de manière à le rendre accessible en écriture.",
"Confirm": "Confirmer",
"Continue": "Continuer",
- "ContinueToPiwik": "Continuer vers Matomo",
+ "ContinueToPiwik": "Continuer sur Matomo",
"Copy": "Copier",
"CreatedByUser": "créé par %s",
"CreationDate": "Date de création",
"CurrentMonth": "Mois courant",
"CurrentWeek": "Semaine courante",
"CurrentYear": "Année courante",
- "CurrentlyUsingUnsecureHttp": "Vous utilisez présentement Matomo via une connexion HTTP non-sécurisée. Ceci peut rendre votre Matomo vulnérable à des faillez de sécurité. Il est possible que vous soyez aussi en violation des lois sur la vie privée car certaines fonctionnalités telles que le refus des cookies ne fonctionneront pas. Nous vous recommandons de paramétrer Matomo afin qu'il utilise SSL (HTTPS) et pour une meilleure sécurité.",
+ "CurrentlyUsingUnsecureHttp": "Vous utilisez présentement Matomo via une connexion HTTP non-sécurisée. Ceci peut rendre votre Matomo vulnérable à des failles de sécurité. Il est possible que vous soyez aussi en violation des lois sur la vie privée car certaines fonctionnalités telles que le refus des cookies ne fonctionneront pas. Nous vous recommandons de paramétrer Matomo afin qu'il utilise SSL (HTTPS) et pour une meilleure sécurité.",
"Custom": "Personnalisé",
"Daily": "Quotidiennement",
"DailyReport": "quotidiennement",
"DailyReports": "Rapports quotidiens",
- "DailySum": "montant quotidien",
+ "DailySum": "résumé quotidien",
"DashboardForASpecificWebsite": "Tableau de bord pour un site web particulier",
"DataForThisGraphHasBeenPurged": "Les données de ce graphique ont plus de %s mois et ont été purgées.",
- "DataForThisTagCloudHasBeenPurged": "Les données pour ce nuage de termes ont plus de %s mois et ont été purgées.",
+ "DataForThisTagCloudHasBeenPurged": "Les données pour ce nuage d'étiquettes ont plus de %s mois et ont été purgées.",
"Date": "Date",
- "DateRange": "Période :",
+ "DateRange": "Période :",
"DateRangeFrom": "Du",
"DateRangeFromTo": "De %1$s à %2$s",
"DateRangeInPeriodList": "période",
@@ -160,23 +160,23 @@
"DoubleClickToChangePeriod": "Double-cliquez pour appliquer cette période.",
"Download": "Télécharger",
"DownloadFail_FileExists": "Le fichier %s existe déjà !",
- "DownloadFail_FileExistsContinue": "Téléchargement partiel en cours pour %s, mais un téléchargement complet existe déjà !",
- "DownloadFail_HttpRequestFail": "Impossible de télécharger le fichier ! Le site web a peut-être un problème. Veuillez réessayer plus tard ou téléchargez le fichier manuellement.",
- "DownloadFullVersion": "%1$sTéléchargez%2$s la version complète ! Rendez-vous sur %3$s",
+ "DownloadFail_FileExistsContinue": "Téléchargement partiel en cours pour %s, mais un téléchargement complet existe déjà !",
+ "DownloadFail_HttpRequestFail": "Impossible de télécharger le fichier ! Le site web a peut-être un problème. Veuillez réessayer plus tard ou téléchargez le fichier manuellement.",
+ "DownloadFullVersion": "%1$sTéléchargez%2$s la version complète ! Rendez-vous sur %3$s",
"DownloadPleaseRemoveExisting": "Si vous voulez le remplacer, commencer par supprimer le fichier existant.",
"Downloads": "Téléchargements",
"EcommerceOrders": "Commandes e-commerce",
- "EcommerceVisitStatusDesc": "Visitez le statut du E-commerce à la fin de la visite",
+ "EcommerceVisitStatusDesc": "Consultez le statut du E-commerce à la fin de la visite",
"EcommerceVisitStatusEg": "Par exemple, pour sélectionner toutes les visites qui ont fait une commande E-commerce, la requête API contiendrait %s",
"Edit": "Modifier",
- "EncryptedSmtpTransport": "Entrez la couche de chiffrement requise par votre serveur SMTP.",
+ "EncryptedSmtpTransport": "Indiquez le protocole de chiffrement requis par votre serveur SMTP.",
"Error": "Erreur",
- "ErrorRequest": "Oups... Il y a eu un problème pendant le traitement de la requête. Peut-être que le serveur a eu un souci temporaire, ou peut-être que vous avez demandé un rapport avec trop de données. Veuillez réessayer. Si cette erreur se répète veuillez %1$scontacter votre administrateur Matomo%2$s pour obtenir de l'aide.",
+ "ErrorRequest": "Oups… Il y a eu un problème pendant le traitement de la requête. Peut-être que le serveur a eu un souci temporaire, ou peut-être que vous avez demandé un rapport avec trop de données. Veuillez réessayer. Si cette erreur se répète veuillez %1$scontacter votre administrateur Matomo%2$s pour obtenir de l'aide.",
"ErrorRequestFaqLink": "Voir les étapes dans la FAQ pour résoudre ce problème.",
"ErrorTryAgain": "Erreur. Veuillez réessayer plus tard.",
"Errors": "Erreurs",
"EvolutionOverPeriod": "Évolution sur la période",
- "EvolutionSummaryGeneric": "%1$s en %2$s comparé à %3$s en %4$s. Évolution : %5$s",
+ "EvolutionSummaryGeneric": "%1$s en %2$s comparé à %3$s en %4$s. Évolution : %5$s",
"ExceptionCapabilityAccessWebsite": "Vous ne pouvez pas accéder à cette ressource car cela requiert la permission %1$s pour le site id = %2$d.",
"ExceptionCheckUserHasSuperUserAccessOrIsTheUser": "L'utilisateur doit être un Super Utilisateur ou l'utilisateur '%s' lui-même.",
"ExceptionConfigurationFileExistsButNotReadable": "Le fichier de configuration %s semble exister mais Matomo n'arrive pas à le lire.",
@@ -188,27 +188,27 @@
"ExceptionDatabaseVersion": "Votre version de %1$s est %2$s mais Matomo a besoin au minimum de la version %3$s.",
"ExceptionDatabaseVersionNewerThanCodebase": "Votre installation de Matomo fonctionne sur l'ancienne version %1$s et nous avons détecté que votre base de données a été mise à jour vers la version plus récente %2$s.",
"ExceptionDatabaseVersionNewerThanCodebaseWait": "Peut-être que les administrateurs de Matomo sont en train de terminer le processus de mise à jour en ce moment. Veuillez réessayer dans quelques minutes.",
- "ExceptionDirectoryToDelete": "Répertoire à supprimer : %s",
- "ExceptionFileIntegrity": "Échec du contrôle d'intégrité : %s",
- "ExceptionFileToDelete": "Fichier à supprimer : %s",
- "ExceptionFilesizeMismatch": "Différence de taille de fichier : %1$s (longueur attendue : %2$s, rencontrée : %3$s)",
+ "ExceptionDirectoryToDelete": "Répertoire à supprimer : %s",
+ "ExceptionFileIntegrity": "Échec du contrôle d'intégrité : %s",
+ "ExceptionFileToDelete": "Fichier à supprimer : %s",
+ "ExceptionFilesizeMismatch": "Discordance de taille de fichier : %1$s (attendue : %2$s, trouvée : %3$s)",
"ExceptionIncompatibleClientServerVersions": "La version de votre client %1$s est %2$s ce qui est incompatible avec la version du serveur %3$s.",
- "ExceptionInvalidAggregateReportsFormat": "Le format '%1$s' des rapports agrégés n'est pas valide. Essayez plutôt l'une des options suivantes : %2$s.",
+ "ExceptionInvalidAggregateReportsFormat": "Le format '%1$s' des rapports agrégés n'est pas valide. Essayez plutôt l'une des options suivantes : %2$s.",
"ExceptionInvalidArchiveTimeToLive": "La durée de l'archivage doit être un nombre de secondes supérieur à zéro",
"ExceptionInvalidDateBeforeFirstWebsite": "La date '%1$s' se situe avant la date de mise en ligne du site. Essayez une date qui se situe après %2$s (horodatage %3$s).",
- "ExceptionInvalidDateFormat": "Le format de date doit être : %1$s ou n'importe quel mot-clé supporté par la fonction %2$s (consultez %3$s pour plus d'informations)",
- "ExceptionInvalidDateRange": "La date '%1$s' n'est pas une période correcte. Elle devrait avoir le format suivant : %2$s.",
- "ExceptionInvalidPeriod": "La période '%1$s' n'est pas supportée. Veuillez essayer une parmi celles-ci à la place : %2$s",
- "ExceptionInvalidRendererFormat": "Le format de rendu '%1$s' n'est pas valide. Veuillez essayer un parmi ceux-ci à la place : %2$s.",
- "ExceptionInvalidReportRendererFormat": "Le format de rapport '%1$s' n'est pas valide. Veuillez essayer un parmi ceux-ci à la place : %2$s.",
- "ExceptionInvalidStaticGraphType": "Le type de graphique '%1$s' n'est pas valide. Veuillez essayer un parmi ceux-ci à la place : %2$s.",
+ "ExceptionInvalidDateFormat": "Le format de date doit être : %1$s ou n'importe quel mot-clé supporté par la fonction %2$s (consultez %3$s pour plus d'informations)",
+ "ExceptionInvalidDateRange": "La date '%1$s' n'est pas une période correcte. Elle devrait avoir le format suivant : %2$s.",
+ "ExceptionInvalidPeriod": "La période '%1$s' n'est pas prise en charge. Veuillez en essayer une autre parmi celles-ci : %2$s",
+ "ExceptionInvalidRendererFormat": "Le format de rendu '%1$s' n'est pas valide. Veuillez en essayer un autre parmi ceux-ci : %2$s.",
+ "ExceptionInvalidReportRendererFormat": "Le format de rapport '%1$s' n'est pas valide. Veuillez en essayer un autre parmi ceux-ci : %2$s.",
+ "ExceptionInvalidStaticGraphType": "Le type de graphique '%1$s' n'est pas valide. Veuillez en essayer un autre parmi ceux-ci : %2$s.",
"ExceptionInvalidToken": "Le jeton n'est pas valide.",
"ExceptionLanguageFileNotFound": "Le fichier de langage '%s' n'a pas été trouvé.",
"ExceptionMethodNotFound": "La méthode '%1$s' n'existe pas ou n'est pas disponible dans le module '%2$s'.",
- "ExceptionMissingFile": "Fichier manquant : %s",
+ "ExceptionMissingFile": "Fichier manquant : %s",
"ExceptionNonceMismatch": "Impossible de vérifier le jeton de sécurité (token) pour ce formulaire.",
- "ExceptionNotSupportedBrowserText": "Votre navigateur n'est pas supporté pour des raisons de sécurité. Merci de le mettre à jour dans une version plus récente.",
- "ExceptionNotSupportedBrowserTitle": "Votre navigateur n'est pas supporté.",
+ "ExceptionNotSupportedBrowserText": "Votre navigateur n'est pas pris en charge pour des raisons de sécurité. Merci de le mettre à jour dans une version plus récente.",
+ "ExceptionNotSupportedBrowserTitle": "Votre navigateur n'est pas pris en charge.",
"ExceptionPrivilege": "Vous ne pouvez accéder à cette ressource, ceci requiert un accès de type %s.",
"ExceptionPrivilegeAccessWebsite": "Vous ne pouvez pas accéder à cette ressource car elle nécessite l'accès %1$s pour le site id = %2$d.",
"ExceptionPrivilegeAtLeastOneWebsite": "Vous ne pouvez pas accéder à cette ressource car elle nécessite l'accès %s pour au moins un site.",
@@ -216,20 +216,20 @@
"ExceptionReportNotFound": "Le rapport demandé n'existe pas.",
"ExceptionUnableToStartSession": "Impossible de démarrer une session.",
"ExceptionUndeletableFile": "Impossible de supprimer %s",
- "ExceptionUnexpectedDirectory": "Des répertoires auxquels nous ne nous attendions pas ont été trouvés dans votre installation de Matomo.",
+ "ExceptionUnexpectedDirectory": "Des répertoires inattendus ont été trouvés dans votre installation de Matomo.",
"ExceptionUnexpectedDirectoryPleaseDelete": "Veuillez supprimer ces répertoires pour éviter les erreurs.",
- "ExceptionUnexpectedFile": "Des fichiers auxquels nous ne nous attendions pas ont été trouvés dans votre installation de Matomo.",
+ "ExceptionUnexpectedFile": "Des fichiers inattendus ont été trouvés dans votre installation de Matomo.",
"ExceptionUnexpectedFilePleaseDelete": "Veuillez supprimer ces fichiers pour éviter d'avoir des erreurs.",
"ExceptionUnreadableFileDisabledMethod": "Le fichier de configuration {%1$s} n'a pas pu être lu. Votre hébergeur a probablement désactivé %2$s.",
- "ExceptionWidgetNotEnabled": "Le gadget demandé n'est pas activé. Cela signifie généralement que le composant dont il fait partie est désactivé ou que vous ne possédez pas assez de permissions pour accéder à ce gadget.",
- "ExceptionWidgetNotFound": "Le gadget demandé n'existe pas.",
+ "ExceptionWidgetNotEnabled": "Le widget demandé n'est pas activé. Cela signifie généralement que l'extension dont il fait partie est désactivée ou que vous n'avez pas les droits suffisants pour y accéder.",
+ "ExceptionWidgetNotFound": "Le widget demandé n'existe pas.",
"ExpandDataTableFooter": "Modifier la visualisation ou configurer le rapport",
"Export": "Exporter",
"ExportAsImage": "Exporter en tant qu'image",
"ExportThisReport": "Exporter ce jeu de données dans d'autres formats",
"Faq": "FAQ",
"FileIntegrityWarning": "Le contrôle d'intégrité a échoué et a rapporté des erreurs. Vous devriez corriger ces problèmes puis rafraîchir cette page jusqu'à ce qu'il n'y ait plus d'erreur.",
- "FileIntegrityWarningReupload": "Les erreurs ci-dessous peuvent être dues à des téléversements des fichiers Matomo partiels ou échoués.",
+ "FileIntegrityWarningReupload": "Les erreurs ci-dessous peuvent être dues à des téléversements de fichiers Matomo partiels ou échoués.",
"FileIntegrityWarningReuploadBis": "Essayez de renvoyer tous les fichiers Matomo en utilisant le mode BINAIRE.",
"First": "Premier",
"Flatten": "Aplatir",
@@ -238,11 +238,11 @@
"ForcedSSL": "Connexion SSL forcée",
"Forums": "Forums",
"FromReferrer": "de",
- "GeneralInformation": "Informations Générales",
+ "GeneralInformation": "Informations générales",
"GeneralSettings": "Paramètres généraux",
"Generic": "Générique",
"GetStarted": "Démarrer",
- "GiveUsYourFeedback": "Envoyez-nous vos commentaires !",
+ "GiveUsYourFeedback": "Envoyez-nous vos commentaires !",
"GoTo": "Rendez-vous à %s",
"GoTo2": "Rendez-vous à",
"Goal": "Objectif",
@@ -252,11 +252,11 @@
"HelpReport": "Cliquez pour afficher les informations d'aide sur ce rapport",
"HelpResources": "Ressources d'aide",
"HelpTranslatePiwik": "Peut-être aimeriez-vous %1$snous aider à améliorer les traductions de Matomo%2$s ?",
- "Hide": "cacher",
+ "Hide": "masquer",
"HoursMinutes": "%1$s heures %2$s min",
"IP": "IP",
"Id": "Id",
- "IfArchivingIsFastYouCanSetupCronRunMoreOften": "Si l'archivage est rapide dans votre installation, vous pouvez paramétrer la crontab pour qu'elle s'exécute plus fréquemment.",
+ "IfArchivingIsFastYouCanSetupCronRunMoreOften": "Si l'archivage est rapide dans votre installation, vous pouvez paramétrer la tâche cron pour qu'elle s'exécute plus fréquemment.",
"IncompletePeriod": "Période incomplète",
"InfoFor": "Informations pour %s",
"Installed": "Installé",
@@ -268,17 +268,17 @@
"Languages": "Langues",
"LastDays": "%s derniers jours (aujourd'hui inclus)",
"LastDaysShort": "Derniers %s jours",
- "LearnMore": "%1$ssavoir plus%2$s",
+ "LearnMore": "%1$sen savoir plus%2$s",
"Live": "En direct",
- "Loading": "Chargement...",
- "LoadingData": "Chargement des données...",
- "LoadingPopover": "Chargement %s ...",
+ "Loading": "Chargement…",
+ "LoadingData": "Chargement des données…",
+ "LoadingPopover": "Chargement %s…",
"LoadingPopoverFor": "Chargement %s de",
"Locale": "fr_FR.UTF-8",
"Logout": "Déconnexion",
"MainMetrics": "Métriques principales",
"Matches": "Correspondances",
- "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, anciennement connu sous le nom de Piwik, est un projet collaboratif porté par les membres de l'équipe %7$sMatomo%8$s ainsi que de nombreux autres contributeurs à travers le monde. <br>Si vous êtes un fan de Matomo, vous pouvez aider : découvrez %3$sComment participer à Matomo%4$s, ou %5$sdonate now%6$s pour aider à financer la prochaine grande version de Matomo !",
+ "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, anciennement connu sous le nom de Piwik, est un projet collaboratif porté par les membres de l'équipe %7$sMatomo%8$s ainsi que de nombreux autres contributeurs à travers le monde. <br>Si vous êtes un fan de Matomo, vous pouvez aider : découvrez %3$scomment participer à Matomo%4$s, ou %5$sfaites un don%6$s pour aider à financer la prochaine grande version de Matomo !",
"MaximumNumberOfPeriodsComparedIs": "Le nombre maximum de périodes pouvant être comparées simultanément est de %s.",
"MaximumNumberOfSegmentsComparedIs": "Le maximum de segments qui peuvent être comparés simultanément est %s.",
"Measurable": "Élément mesurable",
@@ -305,13 +305,13 @@
"Name": "Nom",
"NameShownInTheSenderColumn": "Le nom indiqué dans la colonne expéditeur",
"NbActions": "Nombre d'actions",
- "NbInteractions": "Nombre d'actions",
+ "NbInteractions": "Nombre d'interactions",
"NbSearches": "Nombre de recherches internes",
- "NeedMoreHelp": "Besoin d'aide ?",
+ "NeedMoreHelp": "Besoin d'aide ?",
"Never": "Jamais",
"New": "Nouveau",
- "NewReportsWillBeProcessedByCron": "Quand l'archivage de Matomo n'est pas déclenché par le navigateur, les nouveaux rapports seront générés par la crontab.",
- "NewUpdatePiwikX": "Nouvelle mise à jour : Matomo %s",
+ "NewReportsWillBeProcessedByCron": "Quand l'archivage de Matomo n'est pas déclenché par le navigateur, les nouveaux rapports sont générés par la tâche cron.",
+ "NewUpdatePiwikX": "Nouvelle mise à jour : Matomo %s",
"NewVisitor": "Nouveau visiteur",
"NewVisits": "Nouvelles visites",
"Next": "Suivant",
@@ -320,7 +320,7 @@
"NoDataForTagCloud": "Aucune donnée pour ce nuage d'étiquettes.",
"NotDefined": "%s indéfini",
"NotInstalled": "Non installé",
- "NotPossibleWithoutHttps": "Attention : effectuer cela sans avoir mis en place un certificat SSL pour l'utilisation du HTTPS empêchera Matomo de fonctionner.",
+ "NotPossibleWithoutHttps": "Attention : effectuer cela sans avoir mis en place un certificat SSL pour l'utilisation du HTTPS empêchera Matomo de fonctionner.",
"NotRecommended": "non recommandé",
"NotValid": "%s n'est pas valide",
"Note": "Note",
@@ -328,21 +328,21 @@
"Ok": "Ok",
"OneAction": "1 action",
"OneVisit": "1 visite",
- "OnlyEnterIfRequired": "Entrez un nom d'utilisateur seulement si le serveur SMTP le requiert.",
- "OnlyEnterIfRequiredPassword": "Entrez un mot de passe seulement si le serveur SMTP le requiert.",
- "OnlyUsedIfUserPwdIsSet": "Seulement utilisé si un nom d'utilisateur / mot de passe est activé, demandez à votre fournisseur si vous n'êtes pas sûr(e) de la méthode à utiliser.",
- "OpenSourceWebAnalytics": "Analyse web libre",
+ "OnlyEnterIfRequired": "Indiquez un nom d'utilisateur seulement si le serveur SMTP le requiert.",
+ "OnlyEnterIfRequiredPassword": "Indiquez un mot de passe seulement si le serveur SMTP le requiert.",
+ "OnlyUsedIfUserPwdIsSet": "Utilisé seulement si un nom d'utilisateur / mot de passe est défini, demandez à votre fournisseur si vous avez un doute sur la méthode à utiliser.",
+ "OpenSourceWebAnalytics": "plate-forme de statistiques libre",
"OperationAtLeast": "Au moins",
"OperationAtMost": "Au plus",
"OperationContains": "Contient",
"OperationDoesNotContain": "Ne contient pas",
"OperationEndsWith": "Se termine par",
- "OperationEquals": "Égal",
+ "OperationEquals": "Est égal à",
"OperationGreaterThan": "Plus grand que",
"OperationIs": "Est",
"OperationIsNot": "N'est pas",
"OperationLessThan": "Plus petit que",
- "OperationNotEquals": "Est différent",
+ "OperationNotEquals": "Est différent de",
"OperationStartsWith": "Commence par",
"OptionalSmtpPort": "Optionnel. Par défaut à 25 pour non chiffré et TLS SMTP, et 465 pour du SMTP SSL.",
"Options": "Options",
@@ -350,7 +350,7 @@
"OrCancel": "ou %1$s Annuler %2$s",
"Others": "Autres",
"Outlink": "Lien sortant",
- "Outlinks": "Liens sortant",
+ "Outlinks": "Liens sortants",
"OverlayRowActionTooltip": "Visualisez les données statistiques directement sur votre site web (ouvre un nouvel onglet)",
"OverlayRowActionTooltipTitle": "Ouvrir l'analyse des pages web",
"Overview": "Récapitulatif",
@@ -370,7 +370,7 @@
"PleaseUpdatePiwik": "Merci de mettre à jour Matomo",
"PleaseUpgradeYourPhpVersionSoYourPiwikDataStaysSecure": "Veuillez mettre à niveau votre version de PHP au minimum à PHP %s pour que vos statistiques Matomo restent sécurisées.",
"Plugin": "Composant",
- "Plugins": "Composants",
+ "Plugins": "Extensions",
"PoweredBy": "Propulsé par",
"Previous": "Précédent",
"PreviousDays": "%s derniers jours (aujourd'hui non-inclus)",
@@ -385,8 +385,8 @@
"PurchasedProducts": "Produits achetés",
"Quantity": "Quantité",
"RangeReports": "Plages de dates personnalisées",
- "ReadThisToLearnMore": "%1$sConsultez ceci pour en apprendre plus.%2$s",
- "RealTime": "Temps-réel",
+ "ReadThisToLearnMore": "%1$sConsultez ceci pour en savoir plus.%2$s",
+ "RealTime": "En temps réel",
"RearchiveTimeIntervalOnlyForTodayReports": "Cela n'affecte que les rapports du jour (ou toute autre plage de dates, y compris aujourd'hui)",
"Reasons": "Raisons",
"Recommended": "Recommandé",
@@ -398,7 +398,7 @@
"Remove": "Supprimer",
"Report": "Rapport",
"ReportGeneratedFrom": "Ce rapport a été généré en utilisant des données de %s.",
- "ReportRatioTooltip": "'%1$s' représente %2$s de %3$s %4$s dans le segment%5$savec %6$s.",
+ "ReportRatioTooltip": "'%1$s' représente %2$s de %3$s %4$s dans le segment%5$s avec %6$s.",
"Reports": "Rapports",
"ReportsContainingTodayWillBeProcessedAtMostEvery": "Archiver les rapports au plus toutes les X secondes",
"ReportsWillBeProcessedAtMostEveryHour": "Les rapports seront donc traités tout au plus chaque heure.",
@@ -406,40 +406,40 @@
"Required": "%s requis",
"Required2": "Requis",
"ReturningVisitor": "Visiteur de retour",
- "ReturningVisitorAllVisits": "Voir tous les visites",
+ "ReturningVisitorAllVisits": "Voir toutes les visites",
"RowEvolutionRowActionTooltip": "Visualisez l'évolution dans le temps des métriques de cette ligne",
"RowEvolutionRowActionTooltipTitle": "Voir l'évolution de la ligne",
"Rows": "Lignes",
"RowsToDisplay": "Lignes à afficher",
"Save": "Enregistrer",
- "SaveImageOnYourComputer": "Pour sauvegarder l'image sur votre ordinateur, faites un clic droit dessus et sélectionnez \"Enregistrer l'image sous...\"",
+ "SaveImageOnYourComputer": "Pour enregistrer l'image sur votre ordinateur, faites un clic droit dessus et sélectionnez « Enregistrer l'image sous… »",
"Search": "Rechercher",
"SearchNoResults": "Aucun résultat",
"SecondsSinceFirstVisit": "Secondes depuis la première visite",
- "SecondsSinceLastEcommerceOrder": "Secondes depuis la dernière commande Ecommerce",
+ "SecondsSinceLastEcommerceOrder": "Secondes depuis la dernière commande E-commerce",
"SecondsSinceLastVisit": "Secondes depuis la dernière visite",
"Security": "Sécurité",
"SeeAll": "tout afficher",
"SeeTheOfficialDocumentationForMoreInformation": "Consultez la %1$s documentation officielle %2$s pour plus d'information.",
- "SeeThisFaq": "Voir %1$scette faq%2$s.",
+ "SeeThisFaq": "Voir %1$scette FAQ%2$s.",
"Segment": "Segment",
- "SelectYesIfYouWantToSendEmailsViaServer": "Sélectionnez « Oui » si vous voulez ou devez envoyer un courriel via un serveur nommé à la place de la fonction de messagerie locale",
+ "SelectYesIfYouWantToSendEmailsViaServer": "Sélectionnez « Oui » si vous voulez ou devez envoyer un courriel via un serveur identifié à la place de la fonction de messagerie locale",
"Settings": "Paramètres",
"Shipping": "Expédition",
"Show": "afficher",
"SingleWebsitesDashboard": "Tableau de bord d'un seul site web",
"SmallTrafficYouCanLeaveDefault": "Pour les sites à faible trafic, vous pouvez laisser le délai %s secondes par défaut, et ainsi accéder aux rapports en temps réel.",
"SmtpEncryption": "Chiffrement SMTP",
- "SmtpFromAddress": "Adresse d'origine SMTP",
- "SmtpFromEmailHelp": "La valeur par défaut est noreply@{DOMAIN}, où {DOMAIN} sera remplacé par votre domaine Matomo \"%1$s\".<br>Si l'envoi de courriels ne fonctionne pas, vous devrez peut-être définir cette adresse pour correspondre à votre nom d'utilisateur SMTP.",
- "SmtpFromName": "Nom d'origine SMTP",
+ "SmtpFromAddress": "Adresse d'expéditeur SMTP",
+ "SmtpFromEmailHelp": "La valeur par défaut est noreply@{DOMAIN}, où {DOMAIN} sera remplacé par votre domaine Matomo \"%1$s\".<br>Si l'envoi de courriels ne fonctionne pas, vous devrez peut-être utiliser votre nom d'utilisateur SMTP comme adresse.",
+ "SmtpFromName": "Nom d'expéditeur SMTP",
"SmtpPassword": "Mot de passe SMTP",
"SmtpPort": "Port SMTP",
"SmtpServerAddress": "Adresse du serveur SMTP",
"SmtpUsername": "Nom d'utilisateur SMTP",
"Source": "Source",
- "StatisticsAreNotRecorded": "Le suivi des visiteurs par Matomo est actuellement désactivé ! Réactivez le suivi des visiteurs en paramétrant record_statistics = 1 dans votre fichier config/config.ini.php.",
- "Subtotal": "Sous-Total",
+ "StatisticsAreNotRecorded": "Le suivi des visiteurs par Matomo est actuellement désactivé ! Réactivez le suivi des visiteurs en paramétrant record_statistics = 1 dans votre fichier config/config.ini.php.",
+ "Subtotal": "Sous-total",
"Summary": "Résumé",
"Table": "Tableau",
"TagCloud": "Nuage d'étiquettes",
@@ -449,7 +449,7 @@
"TimeAgo": "il y a %s",
"TimeFormat": "Format horaire",
"TimeOnPage": "Temps sur la page",
- "ToDeleteAllDirectoriesRunThisCommand": "Pour supprimer tous ces répertoires d'un coup, vous pouvez exécuter cette commande :",
+ "ToDeleteAllDirectoriesRunThisCommand": "Pour supprimer tous ces répertoires d'un coup, vous pouvez exécuter cette commande :",
"ToDeleteAllFilesRunThisCommand": "Pour supprimer tous ces fichiers d'un coup, vous pouvez exécuter cette commande :",
"Total": "Total",
"TotalRatioTooltip": "C'est %1$s de %2$s %3$s dans %4$s.",
@@ -459,7 +459,7 @@
"TrackingScopeAction": "Action",
"TrackingScopePage": "Page",
"TrackingScopeVisit": "Visite",
- "TransitionsRowActionTooltip": "Visualisez ce que les visiteurs ont fait avant et après avoir visité cette page",
+ "TransitionsRowActionTooltip": "Visualisez ce que les visiteurs ont fait avant et après avoir vu cette page",
"TransitionsRowActionTooltipTitle": "Ouvrir les transitions",
"TranslatorName": "Vincent BIRET, Ludovic Evrard, Daniel Castronovo",
"UniquePurchases": "Achats uniques",
@@ -469,27 +469,27 @@
"UseSMTPServerForEmail": "Utiliser le serveur SMTP pour les courriels",
"UseSSLInstall": "Nous recommandons d'utiliser Matomo uniquement avec des connexions sécurisées SSL. Veuillez %1$scliquer ici afin de continuer l'installation en utilisant SSL%2$s.",
"UserId": "Identifiant utilisateur",
- "UserIds": "IDs Utilisateur",
+ "UserIds": "Identifiants utilisateur",
"Username": "Nom d'utilisateur",
"VBarGraph": "Histogramme vertical",
- "ValidatorErrorCharacterTooLong": "La valeur contient \"%1$s\" caractères mais doit contenir au plus %2$scaractères.",
- "ValidatorErrorCharacterTooShort": "La valeur contient \"%1$s\" caractères mais doit contenir au moins %2$scaractères.",
+ "ValidatorErrorCharacterTooLong": "La valeur contient \"%1$s\" caractères mais doit contenir au plus %2$s caractères.",
+ "ValidatorErrorCharacterTooShort": "La valeur contient \"%1$s\" caractères mais doit contenir au moins %2$s caractères.",
"ValidatorErrorEmptyValue": "Une valeur doit être fournie.",
"ValidatorErrorInvalidDateTimeFormat": "La date \"%1$s\" n'a pas le bon format, veuillez utiliser %2$s",
"ValidatorErrorNoValidRegex": "La valeur \"%s\" n'est pas une expression régulière valide.",
"ValidatorErrorNotANumber": "La valeur n'est pas un nombre.",
- "ValidatorErrorNotEmailLike": "La valeur \"%s\" ne ressemble pas à une adresse de messagerie valide.",
+ "ValidatorErrorNotEmailLike": "La valeur \"%s\" ne ressemble pas à une adresse de courriel valide.",
"ValidatorErrorNotUrlLike": "La valeur \"%s\" ne ressemble pas à une URL.",
"ValidatorErrorNumberTooHigh": "La valeur \"%1$s\" est trop haute. La valeur doit être au maximum %2$s",
"ValidatorErrorNumberTooLow": "La valeur \"%1$s\" est trop basse. La valeur doit être au moins %2$s.",
- "ValidatorErrorXNotWhitelisted": "La valeur \"%1$s\" n'est pas autorisée, choisissez une valeur parmi : \"%2$s.",
+ "ValidatorErrorXNotWhitelisted": "La valeur \"%1$s\" n'est pas autorisée, choisissez une valeur parmi : \"%2$s.",
"Value": "Valeur",
"View": "Vue",
- "ViewAccessRequired": "Le jeton token_auth utilisé a trop d'accès pour être utilisé dans une URL de requête non-API. Veuillez définir un mot de passe spécifique à l'application pour un utilisateur qui n'a qu'un accès de visualisation.",
+ "ViewAccessRequired": "Le jeton d’authentification (token_auth) utilisé offre trop de droits accès pour être utilisé dans une URL de requête non-API. Veuillez définir un mot de passe spécifique à l'application pour un utilisateur qui n'a qu'un accès de visualisation.",
"ViewDocumentationFor": "Consulter la documentation pour %1$s",
"Visit": "Visite",
"VisitConvertedGoal": "Visite convertie en au moins un objectif",
- "VisitConvertedGoalId": "Visite convertie en id d'objectif spécifique",
+ "VisitConvertedGoalId": "Visite convertie en objectif spécifique",
"VisitConvertedNGoals": "La visite a converti %s objectifs",
"VisitDuration": "Durée moy. des visites (en secondes)",
"VisitId": "ID de la visite",
@@ -497,10 +497,10 @@
"VisitTypeExample": "Par exemple pour sélectionner tous les visiteurs qui sont revenus sur le site, en incluant ceux qui ont acheté quelque chose lors de leur dernière visite, la requête API contiendrait %s",
"VisitTypes": "Types de visite",
"Visitor": "Visiteur",
- "VisitorFingerprint": "Empreinte digitale",
+ "VisitorFingerprint": "Empreinte",
"VisitorID": "ID du visiteur",
"VisitorIP": "IP du visiteur",
- "VisitorIPs": "IP du visiteur",
+ "VisitorIPs": "IPs du visiteur",
"VisitorSettings": "Paramètres visiteur",
"Visitors": "Visiteurs",
"VisitsWith": "Visites avec %s",
@@ -511,17 +511,17 @@
"WarningFileIntegrityNoManifest": "Le contrôle d'intégrité des fichiers n'a pas pu être effectué car le fichier manifest.inc.php est manquant.",
"WarningFileIntegrityNoManifestDeployingFromGit": "Si vous déployez Matomo depuis Git, ce message est normal.",
"WarningFileIntegrityNoMd5file": "Le contrôle d'intégrité n'a pu être effectué car la fonction md5_file() est manquante.",
- "WarningPasswordStored": "%1$sAttention :%2$s ce mot de passe sera stocké dans le fichier de configuration et il sera visible à tous ceux qui peuvent y accéder.",
- "WarningPhpVersionXIsTooOld": "La version de PHP que vous utilisez (%s) est en fin de support. Nous vous incitons vivement à la mettre à jour car l'utilisation de cette version peut vous exposer à des vulnérabilités de sécurité et des bogues qui ont été corrigés dans des versions plus récentes de PHP.",
- "WarningPiwikWillStopSupportingPHPVersion": "Matomo ne prendra plus en charge PHP %1$s dans la prochaine version majeure. Mettez à jour votre PHP au minimum avec une version %2$s avant qu'il ne soit trop tard !",
+ "WarningPasswordStored": "%1$sAttention :%2$s ce mot de passe sera stocké dans le fichier de configuration et il sera visible de tous ceux qui peuvent y accéder.",
+ "WarningPhpVersionXIsTooOld": "La version de PHP que vous utilisez (%s) est en fin de vie. Nous vous incitons vivement à la mettre à jour car l'utilisation de cette version peut vous exposer à des vulnérabilités de sécurité et des bogues qui ont été corrigés dans des versions plus récentes de PHP.",
+ "WarningPiwikWillStopSupportingPHPVersion": "Matomo ne prendra plus en charge PHP %1$s dans la prochaine version majeure. Mettez à jour votre PHP au minimum avec une version %2$s avant qu'il ne soit trop tard !",
"Warnings": "Avertissements",
"Website": "Site web",
"Weekly": "Hebdomadaire",
"WeeklyReport": "hebdomadaire",
"WeeklyReports": "Rapports hebdomadaires",
- "WellDone": "Bravo !",
- "Widget": "Gadget",
- "Widgets": "Gadgets",
+ "WellDone": "Bravo !",
+ "Widget": "Widget",
+ "Widgets": "Widgets",
"XComparedToY": "%1$s comparé à %2$s",
"XFromY": "%1$s de %2$s",
"YearlyReport": "annuel",
@@ -530,7 +530,7 @@
"Yes": "Oui",
"YouAreCurrentlyUsing": "Vous utilisez actuellement Matomo %s.",
"YouAreViewingDemoMessage": "Vous utilisez la démo de%1$s Matomo %2$s",
- "YouMustBeLoggedIn": "Vous devez être connecté(e) pour accéder à cette fonctionnalité.",
+ "YouMustBeLoggedIn": "Vous devez vous connecter pour accéder à cette fonctionnalité.",
"YouMustUpgradePhpVersionToReceiveLatestPiwik": "Vous devez mettre à niveau votre version de PHP afin de recevoir la dernière mise à jour Matomo.",
"YourChangesHaveBeenSaved": "Vos modifications ont été enregistrées.",
"YourSessionHasExpired": "Votre session a expiré pour cause d'inactivité. Veuillez vous connecter à nouveau."
@@ -545,37 +545,37 @@
"Advanced": "Avancé",
"AnonymousAccess": "Accès anonyme",
"AnonymousTracking": "Suivi anonyme",
- "AskForAnonymousTrackingPermission": "Lorsque cette option est activée, Matomo Mobile enverra des données d'utilisation anonymes à matomo.org. Le but est d'utiliser ces données pour aider les développeurs de Matomo Mobile à mieux comprendre comment l'application est utilisée. Les informations envoyées sont : les menus et paramètres cliqués, le nom et la version du système d'exploitation, toute erreur affichée dans Matomo Mobile. Nous NE suivrons PAS vos données statistiques. Ces données anonymes ne seront jamais rendues publiques. Vous pouvez désactiver/activer le suivi anonyme dans Paramètres à tout moment.",
+ "AskForAnonymousTrackingPermission": "Lorsque cette option est activée, Matomo Mobile enverra des données d'utilisation anonymes à matomo.org. Le but est d'utiliser ces données pour aider les développeurs de Matomo Mobile à mieux comprendre comment l'application est utilisée. Les informations envoyées sont : les menus et paramètres cliqués, le nom et la version du système d'exploitation et toute erreur affichée dans Matomo Mobile. Nous NE suivrons PAS vos données statistiques. Ces données anonymes ne seront jamais rendues publiques. Vous pouvez désactiver/activer le suivi anonyme dans les paramètres à tout moment.",
"ChooseHttpTimeout": "Choisir la valeur du délai d'expiration HTTP",
"ChooseMetric": "Choisissez un métrique",
"ChooseReport": "Choisir un rapport",
"ChooseSegment": "Sélectionner segment",
- "ConfirmRemoveAccount": "Souhaitez-vous supprimer ce compte ?",
+ "ConfirmRemoveAccount": "Souhaitez-vous supprimer ce compte ?",
"DefaultReportDate": "Date du rapport",
"EmailUs": "Nous écrire",
"EnableGraphsLabel": "Afficher les graphiques",
- "EnterAuthCode": "Entrez le code d'authentication",
- "EnterAuthCodeExplanation": "Il semblerait que vous utilisez l'authentification à deux facteurs. Veuillez entrer le code à six chiffres afin de vous connecter à votre compte.",
- "EnterCorrectAuthCode": "Entrez un code d'authentification correct",
+ "EnterAuthCode": "Saisissez le code d'authentification",
+ "EnterAuthCodeExplanation": "Il semblerait que vous utilisez l'authentification à deux facteurs. Veuillez saisir le code à six chiffres afin de vous connecter à votre compte.",
+ "EnterCorrectAuthCode": "Saisissez un code d'authentification correct",
"EvolutionGraph": "Graphique d'historique",
"ExceptionNoViewAccess": "Veuillez vérifier votre nom d'utilisateur et mot de passe et vous assurer que vous avez un accès %s à au moins un des sites web.",
- "HelpUsToImprovePiwikMobile": "Voulez-vous activer le traçage d'utilisation anonyme dans Matomo Mobile ?",
+ "HelpUsToImprovePiwikMobile": "Voulez-vous activer le suivi d'utilisation anonyme dans Matomo Mobile ?",
"HowtoDeleteAnAccount": "Appuyez longtemps pour supprimer un compte.",
"HowtoDeleteAnAccountOniOS": "Faites glisser de droite à gauche pour supprimer un compte",
"HowtoExitAndroid": "Veuillez cliquer sur RETOUR une nouvelle fois pour quitter",
"HowtoLoginAnonymous": "Laissez le nom d'utilisateur et le mot de passe vides pour une connexion anonyme",
- "HttpIsNotSecureWarning": "Votre jeton d'autorisation Matomo (token_auth) est envoyée en texte clair si vous utilisez 'HTTP'. C'est pourquoi nous recommandons HTTPS pour sécuriser le transport des données sur Internet. Voulez-vous continuer ?",
+ "HttpIsNotSecureWarning": "Votre jeton d’authentification Matomo (token_auth) est envoyé en texte clair si vous utilisez HTTP. C'est pourquoi nous recommandons HTTPS pour sécuriser le transport des données sur l'Internet. Voulez-vous continuer ?",
"HttpTimeout": "Délai d'expiration HTTP",
"IgnoreSslError": "Ignorer les erreurs SSL",
"IncompatiblePiwikVersion": "La version de Matomo que vous utilisez est incompatible avec Matomo Mobile 2. Mettez à jour votre installation de Matomo et essayez à nouveau ou bien installez Matomo Mobile 1.",
- "LastUpdated": "Dernière mise à jour : %s",
+ "LastUpdated": "Dernière mise à jour : %s",
"LoadingReport": "Chargement %s",
"LoginCredentials": "Identifiants",
- "LoginToPiwikToChangeSettings": "Connectez-vous à votre serveur Matomo pour ajouter et mettre à jour vos sites, les utilisateurs ou pour modifier les réglages généraux tels que les \"rapports à charger par défaut\".",
+ "LoginToPiwikToChangeSettings": "Connectez-vous à votre serveur Matomo pour ajouter et mettre à jour vos sites, les utilisateurs ou pour modifier les réglages généraux tels que les « rapports à charger par défaut ».",
"LoginUseHttps": "Utiliser HTTPS",
- "MatomoMarketplace": "Marché Matomo",
+ "MatomoMarketplace": "Place de marché Matomo",
"MatomoMobile": "Application mobile Matomo",
- "MultiChartLabel": "Afficher les sparklines",
+ "MultiChartLabel": "Afficher les petits graphiques",
"NavigationBack": "Retour",
"NetworkError": "Erreur réseau",
"NetworkErrorWithStatusCode": "Il y a eu une erreur \"%1$s\". La requête a retourné le statut \"%2$s. L'URL était \"%3$s\". Veuillez vérifier que vous avez saisi l'URL correctement et consulter les logs du serveur pour plus d'informations à propos de l'erreur et comment la résoudre.",
@@ -583,31 +583,31 @@
"NetworkNotReachable": "Réseau inaccessible",
"NoAccountIsSelected": "Vous devez sélectionner un compte. Ajoutez un nouveau compte si vous n'en avez pas configuré un.",
"NoDataShort": "Aucune donnée",
- "NoPiwikAccount": "Pas de compte Matomo ?",
+ "NoPiwikAccount": "Pas de compte Matomo ?",
"NoReportsShort": "Aucun rapport",
"NoVisitorFound": "Aucun visiteur trouvé",
"NoVisitorsShort": "Aucun visiteur",
"NoWebsiteFound": "Aucun site web trouvé",
"NoWebsitesShort": "Aucun site web",
"PossibleSslError": "Erreur potentielle de certificat SSL",
- "PossibleSslErrorExplanation": "Une erreur peut être causée par un certificat invalide ou auto-signé : \"%s\". La connexion peut fonctionner pour vous en ignorant la validation SSL mais cela est moins sécurisé. Vous pouvez modifier la validation SSL à n'importe quel moment depuis les paramètres.",
+ "PossibleSslErrorExplanation": "Une erreur peut être causée par un certificat invalide ou auto-signé : \"%s\". La connexion peut fonctionner pour vous en ignorant la validation SSL mais cela est moins sécurisé. Vous pouvez modifier la validation SSL à n'importe quel moment depuis les paramètres.",
"PullDownToRefresh": "Faites glisser vers le bas pour actualiser…",
- "RatingDontRemindMe": "Ne pas me rappeler",
+ "RatingDontRemindMe": "Ne pas me le rappeler",
"RatingNotNow": "Pas maintenant",
- "RatingNow": "OK, je vais le noter maintenant",
+ "RatingNow": "OK, je vais la noter maintenant",
"RatingPleaseRateUs": "L'application Matomo Mobile est un logiciel libre, nous vous serions très reconnaissant si vous preniez 1 minute pour noter l'application sur le %1$s. Si vous avez des suggestions de nouvelles fonctionnalités ou si vous souhaitez signaler un bug, veuillez contacter %2$s",
- "ReleaseToRefresh": "Relâchez pour actualiser...",
- "Reloading": "Recharchement...",
+ "ReleaseToRefresh": "Relâchez pour actualiser…",
+ "Reloading": "Rechargement…",
"RequestTimedOutShort": "Erreur réseau, délai dépassé",
"RestrictedCompatibility": "Compatibilité limitée",
- "RestrictedCompatibilityExplanation": "La version %s de Matomo que vous utilisez n'est pas entièrement supportée par Matomo Mobile 2. Vous pourriez rencontrer des bugs. Nous recommandons de mettre à jour Matomo vers la dernière version ou bien utiliser Matomo Mobile 1.",
+ "RestrictedCompatibilityExplanation": "La version %s de Matomo que vous utilisez n'est pas entièrement prise en charge par Matomo Mobile 2. Vous pourriez rencontrer des bogues. Nous recommandons de mettre à jour Matomo vers la dernière version ou bien utiliser Matomo Mobile 1.",
"SaveSuccessError": "L'URL de Matomo ou la combinaison nom d'utilisateur/mot de passe est erronée.",
- "SearchWebsite": "Rechercher les sites Internet",
+ "SearchWebsite": "Rechercher les sites web",
"ShowAll": "Afficher tout",
"ShowLess": "Afficher moins",
"StaticGraph": "Graphique d'aperçu",
"TopVisitedWebsites": "Les sites les plus visités",
- "TryIt": "Essayez le !",
+ "TryIt": "Essayez le !",
"UseSearchBarHint": "Seuls les %s premiers sites sont affichés ici. Veuillez utiliser la barre de recherche pour accéder aux autres sites.",
"ValidateSslCertificate": "Valider le certificat SSL",
"VerifyAccount": "Vérification du compte",
diff --git a/lang/id.json b/lang/id.json
index d6d85180b6..46c3f98c26 100644
--- a/lang/id.json
+++ b/lang/id.json
@@ -15,7 +15,8 @@
"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": "Disarankan untuk instalasi Matomo besar untuk %1$smengatur tugas Cron%2$s untuk mengolah laporan otomatis.",
+ "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",
"AveragePrice": "Harga Rerata",
@@ -29,7 +30,7 @@
"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.",
- "ChooseDate": "Pilih tanggal, tanggal terpilih saat ini adalah: %s",
+ "ChooseDate": "Pilih tanggal, tampilan tanggal terpilih saat ini adalah: %s",
"ChooseLanguage": "Pilih bahasa",
"ChoosePeriod": "Pilih periode",
"Clear": "Bersihkan",
@@ -49,13 +50,13 @@
"ColumnBounceRateDocumentation": "Persentase kunjungan yang hanya melihat satu halaman. Ini berarti, bahwa pengunjung meninggalkan situs langsung dari halaman awal.",
"ColumnBounces": "Pentalan",
"ColumnBouncesDocumentation": "Jumlah kunjungan yang mulai dan berakhir pada halaman ini. Ini berarti bahwa pengunjung meninggalkan situs setelah melihat hanya halaman ini.",
- "ColumnConversionRate": "Tingkat Tayangan",
+ "ColumnConversionRate": "Tingkat Konversi",
"ColumnConversionRateDocumentation": "Persentase kunjungan yang dipicu tujuan tayangan.",
"ColumnDestinationPage": "Halaman Tujuan",
"ColumnEntrances": "Masukan",
"ColumnEntrancesDocumentation": "Jumlah kunjungan yang berawal dari halaman ini.",
"ColumnExitRate": "Tingkat keluar",
- "ColumnExitRateDocumentation": "Persentase kunjungan yang meninggalkan situs setelah melihat halaman ini (tampilan halaman unik dibagi dengan yang ada)",
+ "ColumnExitRateDocumentation": "Persentase kunjungan dari pengunjung yang meninggalkan situs setelah melihat halaman ini.",
"ColumnExits": "Keluaran",
"ColumnExitsDocumentation": "Jumlah kunjungan yang berakhir pada halaman ini.",
"ColumnGenerationTime": "Waktu pembangkitan",
@@ -91,13 +92,14 @@
"ColumnVisitDuration": "Lama Kunjungan (dalam detik)",
"ColumnVisitsWithConversions": "Kunjungan dengan Tayangan",
"CompareDatesParamMustMatchComparePeriods": "Panjang pemintaan %1$s harus sesuai dengan panjang parameter (%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.",
"ComparisonRatioTooltip": "Terdapat %1$s perubahan dibandingkan segmen %2$s pada %3$s.",
"Comparisons": "Perbandingan",
"ComputedMetricAverage": "Rata-rata %1$s per %2$s",
- "ComputedMetricAverageDocumentation": "Nilai rata-rata dari \"%1$s\" per \"%2$s\"",
- "ComputedMetricAverageShortDocumentation": "Nilai rata-rata dari \"%1$s\"",
+ "ComputedMetricAverageDocumentation": "Nilai rata-rata \"%1$s\" per \"%2$s\".",
+ "ComputedMetricAverageShortDocumentation": "Nilai rata-rata \"%1$s\".",
"ComputedMetricCountDocumentation": "Jumlah dari %s",
"ComputedMetricCountWithValue": "Entri dengan %s",
"ComputedMetricCountWithValueDocumentation": "Jumlah entri yang memiliki nilai tetapan untuk %s",
@@ -106,7 +108,7 @@
"ComputedMetricMin": "Min %s",
"ComputedMetricMinDocumentation": "Nilai minimum untuk %s",
"ComputedMetricRate": "%s Nilai",
- "ComputedMetricRateDocumentation": "Rasio dari \"%1$s\" dari semua \"%2$s\".",
+ "ComputedMetricRateDocumentation": "Rasio \"%1$s\" dari semua \"%2$s\".",
"ComputedMetricRateShortDocumentation": "Pesentase dari \"%1$s\".",
"ComputedMetricSum": "Total %s",
"ComputedMetricSumDocumentation": "Total jumlah (hitungan) dari %s",
@@ -127,7 +129,7 @@
"Daily": "Harian",
"DailyReport": "harian",
"DailyReports": "Laporan harian",
- "DailySum": "daily sum",
+ "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.",
@@ -147,6 +149,7 @@
"Description": "Keterangan",
"Desktop": "Desktop",
"Details": "Selengkapnya",
+ "Disabled": "Nonaktif",
"Discount": "Potongan",
"DisplaySimpleTable": "Tampilan tabel sederhana",
"DisplayTableWithGoalMetrics": "Menampilkan tabel dengan pengukuran Tujuan",
@@ -170,6 +173,7 @@
"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.",
"ErrorRequestFaqLink": "Lihat cara untuk menyelesaikan masalah ini di FAQ.",
+ "ErrorTryAgain": "Terjadi kesalahan. Silakan coba lagi nanti.",
"Errors": "Kesalahan",
"EvolutionOverPeriod": "Perkembangan selama periode",
"EvolutionSummaryGeneric": "%1$s di %2$s dibandingkan dengan %3$s di %4$s. Perubahan: %5$s",
@@ -178,7 +182,9 @@
"ExceptionConfigurationFileExistsButNotReadable": "Berkas konfigurasi %s nampaknya sudah ada tapi Matomo tidak dapat membacanya.",
"ExceptionConfigurationFileNotFound": "Berkas konfigurasi {%s} tak ditemukan.",
"ExceptionConfigurationFilePleaseCheckReadableByUser": "Mohon periksa %1$s dapat dibaca oleh pengguna '%2$s'.",
- "ExceptionContactSupportGeneric": "Bila Anda tetap mengalami kendala, silakan %1$shubungi pengelola Matomo Anda%2$s untuk bantuan.",
+ "ExceptionContactSupportGeneric": "Bila Anda tetap mengalami kendala, silakan %1$shubungi pengelola Matomo Anda%2$s untuk meminta bantuan.",
+ "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.",
@@ -188,7 +194,7 @@
"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.",
- "ExceptionInvalidArchiveTimeToLive": "Pengarsipan hari ini agar aktif, nilai detik harus harus lebih besar dari nol",
+ "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.",
@@ -201,6 +207,8 @@
"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.",
+ "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.",
@@ -215,7 +223,7 @@
"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.",
"ExceptionWidgetNotFound": "Widget yang diminta tidak tersedia.",
- "ExpandDataTableFooter": "Ubah visualisasi atau konfigurasi laporan.",
+ "ExpandDataTableFooter": "Ubah visualisasi atau mengonfigurasi laporan",
"Export": "Ekspor",
"ExportAsImage": "Ekspor sebagai Gambar",
"ExportThisReport": "Ekspor dataset ini ke format lain",
@@ -227,7 +235,7 @@
"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 .",
- "ForcedSSL": "Koneksi SSL diharuskan.",
+ "ForcedSSL": "Paksa Koneksi SSL",
"Forums": "Forum",
"FromReferrer": "dari",
"GeneralInformation": "Informasi Umum",
@@ -241,13 +249,15 @@
"GraphHelp": "Informasi lebih lanjut tentang menampilkan grafik di Matomo.",
"HelloUser": "Halo, %s!",
"Help": "Bantuan",
+ "HelpReport": "Klik untuk menampilkan info bantuan tentang laporan ini",
"HelpResources": "Sumber daya bantuan",
"HelpTranslatePiwik": "Mungkin Anda berkenan untuk %1$s membantu kami meningkatkan translasi Matomo %2$s?",
"Hide": "sembunyikan",
"HoursMinutes": "%1$s jam %2$s menit",
"IP": "IP",
"Id": "Id",
- "IfArchivingIsFastYouCanSetupCronRunMoreOften": "Dengan anggapan pengarsipan adalah cepat untuk pengaturan Anda, Anda dapat mengatur crontab berjalan lebih sering.",
+ "IfArchivingIsFastYouCanSetupCronRunMoreOften": "Dengan asumsi pengarsipan cepat untuk pengaturan Anda, crontab dapat diatur untuk berjalan lebih sering.",
+ "IncompletePeriod": "Periode Tidak Lengkap",
"InfoFor": "Informasi untuk %s",
"Installed": "Terpasang",
"InvalidDateRange": "Rentang tidak sahih. Silakan ulangi lagi",
@@ -268,7 +278,7 @@
"Logout": "Keluar-log",
"MainMetrics": "Metrik utama",
"Matches": "Cocok",
- "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s (dahulu: Piwik) adalah proyek kolaboratif oleh %7$s tim Matomo %8$s serta kontributor lainnya di seluruh dunia. <br/> Jika Anda menyukai Matomo, Anda dapat membantu: cari tahu %3$s bagaimana berpartisipasi dalam Matomo %4$s, atau %5$s menyumbang dana %6$s untuk rilis Matomo berikutnya yang semakin hebat.",
+ "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!",
"MaximumNumberOfPeriodsComparedIs": "Jumlah periode maksimum yang dapat dibandingkan secara bersamaan adalah %s unit.",
"MaximumNumberOfSegmentsComparedIs": "Jumlah maksimum segmen yang dapat dibandingkan secara bersamaan adalah %s unit.",
"Measurable": "Terukur",
@@ -356,7 +366,7 @@
"PiwikXIsAvailablePleaseUpdateNow": "Matomo %1$s tersedia. %2$sSilakan memperbarui sekarang!%3$s (lihat %4$sperubahan%5$s).",
"PleaseContactYourPiwikAdministrator": "Silakan hubungi administrator Matomo Anda.",
"PleaseSpecifyValue": "Silakan tentukan nilai untuk '%s'.",
- "PleaseTryAgain": "Silahkan coba kembali.",
+ "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",
@@ -378,6 +388,7 @@
"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)",
+ "Reasons": "Alasan",
"Recommended": "Direkomendasikan",
"RecordsToPlot": "Rekaman ke alur",
"Refresh": "Penyegaran",
@@ -387,7 +398,7 @@
"Remove": "Hapus",
"Report": "Laporan",
"ReportGeneratedFrom": "Laporan ini telah dibangkitkan menggunakan data dari %s.",
- "ReportRatioTooltip": "%1$s adalah %2$sdari %3$s%4$s dari segmen %5$s dengan %6$s.",
+ "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.",
@@ -396,7 +407,7 @@
"Required2": "Diperlukan",
"ReturningVisitor": "Pengunjung Kembali",
"ReturningVisitorAllVisits": "Tampilkan semua kunjngan",
- "RowEvolutionRowActionTooltip": "Lihat bagaimana metrik untuk untuk perubahan ini berubah sepanjang waktu",
+ "RowEvolutionRowActionTooltip": "Lihat bagaimana metrik untuk baris ini berubah seiring waktu",
"RowEvolutionRowActionTooltipTitle": "Buka Perubahan Mentah",
"Rows": "Baris",
"RowsToDisplay": "Baris ke tampilan",
@@ -464,7 +475,7 @@
"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 menggunakan format yang sesuai, mohon gunakan format %2$s.",
+ "ValidatorErrorInvalidDateTimeFormat": "Tanggal \"%1$s\" tidak memiliki format yang benar, silakan gunakan %2$s",
"ValidatorErrorNoValidRegex": "%sbukan merupakan regex yang valid.",
"ValidatorErrorNotANumber": "Nilai tidak berupa angka.",
"ValidatorErrorNotEmailLike": "%sbukan merupakan alamat email yang valid.",
@@ -474,6 +485,7 @@
"ValidatorErrorXNotWhitelisted": "%1$stidak diizinkan, gunakan salah satu dari format: %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",
@@ -494,7 +506,8 @@
"VisitsWith": "Kunjungan dengan %s",
"VisualizationDoesNotSupportComparison": "Grafik ini tidak mendukung perbandingan antar segmen/periode.",
"Warning": "Peringatan",
- "WarningDebugOnDemandEnabled": "Mode pelacak %1$s telah diaktifkan. Untuk asalan keamanan hal ini harus diaktifkan hanya dalam waktu singkat. Untuk mematikannya setel %2$s ke %3$s dalam %4$s.",
+ "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.",
"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.",
"WarningFileIntegrityNoMd5file": "Pemeriksaan integritas berkas tak dapat diselesaikan sebab fungsi md5_file() tak ditemukan.",
@@ -516,7 +529,7 @@
"YearsDays": "%1$s tahun %2$s hari",
"Yes": "Ya",
"YouAreCurrentlyUsing": "Anda saat ini menggunakan Matomo %s.",
- "YouAreViewingDemoMessage": "Anda sedang melihat demonstrasi Matomo %1$s versi %2$s.",
+ "YouAreViewingDemoMessage": "Anda sedang melihat demo Matomo %1$s versi %2$s",
"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.",
@@ -550,7 +563,7 @@
"HowtoDeleteAnAccount": "Tekan lama untuk menghapus sebuah akun.",
"HowtoDeleteAnAccountOniOS": "Tukar kiri ke kanan untuk menghapus sebuah akun",
"HowtoExitAndroid": "Mohon klik lagi KEMBALI untuk keluar",
- "HowtoLoginAnonymous": "Biarkan nama dan sandi kosong untuk masuk-log anonim.",
+ "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?",
"HttpTimeout": "HTTP Kehabisan waktu",
"IgnoreSslError": "Abaikan Galat SSL",
@@ -576,8 +589,8 @@
"NoVisitorsShort": "Tidak Ada Pengunjung",
"NoWebsiteFound": "Tidak ada situs",
"NoWebsitesShort": "Tidak Ada Situs Web",
- "PossibleSslError": "Kemungkinan kesalahan sertifikat SSL.",
- "PossibleSslErrorExplanation": "Galat terjadi dengan kemungkinan sertifikat salah atau tanda tangan sendiri: \"%s\". Masuk-log mungkin berhasil untuk bila Anda mengabaikan pengesahan SSL, tapi akan lebih kurang aman. Anda dapat mengubah pengesahan SSL kapan saja di pengaturan",
+ "PossibleSslError": "Kemungkinan kesalahan sertifikat SSL",
+ "PossibleSslErrorExplanation": "Terjadi kesalahan yang dapat disebabkan oleh sertifikat yang tidak valid atau ditandatangani sendiri: \"%s\". Login mungkin berhasil untuk Anda saat mengabaikan validasi SSL tetapi kurang aman. Anda dapat mengubah validasi SSL kapan saja di pengaturan.",
"PullDownToRefresh": "Tekan untuk menyegarkan...",
"RatingDontRemindMe": "Jangan ingatkan lagi",
"RatingNotNow": "Jangan sekarang",
@@ -588,7 +601,7 @@
"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.",
- "SaveSuccessError": "Silakan memeriksa pengaturan",
+ "SaveSuccessError": "URL Matomo atau nama pengguna dan kata sandi Matomo salah.",
"SearchWebsite": "Pencarian situs",
"ShowAll": "Tampilkan semua",
"ShowLess": "Tampilkan sedikit",
@@ -603,7 +616,7 @@
},
"RowEvolution": {
"AvailableMetrics": "Metrik yang tersedia",
- "CompareDocumentation": "Klik tautan di bawah dan buka bingkai sembul ini untuk baris lain dari tabel yang sama untuk membandingkan banyak catatan.<br />Gunakan shift-klik untuk menadai baris untuk dibandingkan tanpa membuka bingkai sembul ini.",
+ "CompareDocumentation": "Klik tautan di bawah ini dan buka popup ini untuk baris lainnya dari tabel yang sama untuk membandingkan beberapa catatan.<br>Gunakan shift-klik untuk menandai baris sebagai perbandingan tanpa membuka popup ini.",
"CompareRows": "Bandingkan catatan",
"ComparingRecords": "Membandingkan %s baris",
"Documentation": "Klik metrik untuk menampilkan grafik perubahan besar. Gunakan shift-klik untuk menampikan banyak grafik sekaligus.",
diff --git a/lang/it.json b/lang/it.json
index 102b4914b0..8293570104 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -149,6 +149,7 @@
"Description": "Descrizione",
"Desktop": "Desktop",
"Details": "Dettagli",
+ "Disabled": "Disabilitato",
"Discount": "Sconto",
"DisplaySimpleTable": "Visualizza una tabella semplice",
"DisplayTableWithGoalMetrics": "Visualizza una tabella con le metriche dei Goal (Obiettivi)",
diff --git a/lang/ja.json b/lang/ja.json
index 7e9853b98f..cd78a06682 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -149,6 +149,7 @@
"Description": "説明",
"Desktop": "デスクトップ",
"Details": "詳細",
+ "Disabled": "無効",
"Discount": "ディスカウント",
"DisplaySimpleTable": "シンプルなテーブル表示",
"DisplayTableWithGoalMetrics": "目標メトリックを含むテーブル表示",
diff --git a/lang/nb.json b/lang/nb.json
index e17e9c1930..f5b232002b 100644
--- a/lang/nb.json
+++ b/lang/nb.json
@@ -149,6 +149,7 @@
"Description": "Beskrivelse",
"Desktop": "Skrivebord",
"Details": "Detaljer",
+ "Disabled": "Avskrudd",
"Discount": "Rabatt",
"DisplaySimpleTable": "Vis enkel tabell",
"DisplayTableWithGoalMetrics": "Vis en tabell med måltall for mål",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 26bfe269fe..38929b0532 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -149,6 +149,7 @@
"Description": "Descrição",
"Desktop": "Desktop",
"Details": "Detalhes",
+ "Disabled": "Desabilitado",
"Discount": "Desconto",
"DisplaySimpleTable": "Exibir tabela simples",
"DisplayTableWithGoalMetrics": "Exibir uma tabela com métricas das metas",
diff --git a/lang/ru.json b/lang/ru.json
index 342e171005..588ef9faf0 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -92,10 +92,13 @@
"ColumnVisitDuration": "Продолжительность посещения (секунд)",
"ColumnVisitsWithConversions": "Повторные посещения",
"CompareDatesParamMustMatchComparePeriods": "Длина параметра запроса %1$s должна соответствовать длине параметра запроса %2$s.",
- "CompareTo": "сравнить с",
+ "CompareTo": "Сравнить с:",
+ "ComparisonCardTooltip1": "«%1$s» на %2$s содержит %3$s всех посещений (%4$s из %5$s всего).",
+ "ComparisonCardTooltip2": "Количество посещений отличается на %1$s по сравнению с %2$s на %3$s.",
+ "ComparisonRatioTooltip": "Это изменение на %1$s по сравнению с сегментом «%2$s» на %3$s.",
"Comparisons": "Сравнение",
"ComputedMetricAverage": "Ср. %1$s для %2$s",
- "ComputedMetricAverageDocumentation": "Среднее значение «%1$s» для «%2$s»",
+ "ComputedMetricAverageDocumentation": "Среднее значение «%1$s» для «%2$s».",
"ComputedMetricAverageShortDocumentation": "Среднее значение для «%1$s».",
"ComputedMetricCountDocumentation": "Число %s",
"ComputedMetricCountWithValue": "Вхождений %s",
@@ -134,11 +137,11 @@
"DateRange": "Диапазон дат:",
"DateRangeFrom": "С",
"DateRangeFromTo": "С %1$s по %2$s",
- "DateRangeInPeriodList": "диапазон дат:",
+ "DateRangeInPeriodList": "диапазон дат",
"DateRangeTo": "До",
"DaysHours": "%1$s дн. %2$s час",
"DaysSinceFirstVisit": "Дней с момента первого посещения",
- "DaysSinceLastEcommerceOrder": "Дней с момента последнего электронного заказа.",
+ "DaysSinceLastEcommerceOrder": "Дней с момента последнего электронного заказа",
"DaysSinceLastVisit": "Дней прошло с момента последнего посещения",
"Default": "По умолчанию",
"DefaultAppended": "(по умолчанию)",
@@ -146,6 +149,7 @@
"Description": "Описание",
"Desktop": "Desktop-приложение",
"Details": "Детали",
+ "Disabled": "Выключено",
"Discount": "Скидки",
"DisplaySimpleTable": "Показать пример таблицы",
"DisplayTableWithGoalMetrics": "Показать таблицу с метрикой целей",
@@ -169,6 +173,7 @@
"Error": "Ошибка",
"ErrorRequest": "Ой... возникла проблема во время выполнения запроса. Возможно причиной тому временная проблема на сервере, или Вами был запрошен отчет, содержащий большой объем данных. Пожалуйста, повторите попытку. Если ошибка повторяется, пожалуйста %1$sсвяжитесь с администратором Matomo%2$s.",
"ErrorRequestFaqLink": "Посмотрите шаги решения этой проблемы в FAQ.",
+ "ErrorTryAgain": "Ошибка. Пожалуйста, повторите попытку позже.",
"Errors": "Ошибки",
"EvolutionOverPeriod": "Изменения за период",
"EvolutionSummaryGeneric": "%1$s в %2$s по сравнению с %3$s в %4$s. Изменения: %5$s",
@@ -177,7 +182,7 @@
"ExceptionConfigurationFileExistsButNotReadable": "Файл конфигурации %s, похоже, существует, но Matomo не смог его прочитать.",
"ExceptionConfigurationFileNotFound": "Конфигурационный файл {%s} не может быть найден.",
"ExceptionConfigurationFilePleaseCheckReadableByUser": "Пожалуйста, проверьте, что %1$s читается пользователем «%2$s».",
- "ExceptionContactSupportGeneric": "Если вы продолжаете получать эту ошибку, пожалуйста, %1$sобратитесь к администратору Matomo%2$s за помощью.",
+ "ExceptionContactSupportGeneric": "Если вы продолжаете получать эту ошибку то, пожалуйста, %1$sобратитесь к администратору Matomo%2$s за помощью.",
"ExceptionDatabaseAccess": "Доступ к базе данных отклонён",
"ExceptionDatabaseUnavailable": "MySQL-сервер недоступен",
"ExceptionDatabaseVersion": "Версия вашего %1$s — %2$s, но Matomo требует хотя бы %3$s.",
@@ -244,6 +249,7 @@
"GraphHelp": "Больше информации про отображение графиков в Matomo.",
"HelloUser": "Привет, %s!",
"Help": "Помощь",
+ "HelpReport": "Нажмите, чтобы отобразить справочную информацию об этом отчёте",
"HelpResources": "Справочные ресурсы",
"HelpTranslatePiwik": "Возможно, вы захотите %1$sпомочь нам улучшить переводы в Matomo%2$s?",
"Hide": "скрыть",
@@ -251,6 +257,7 @@
"IP": "IP",
"Id": "Id",
"IfArchivingIsFastYouCanSetupCronRunMoreOften": "Предполагая, что архивирование выполняется быстро, вы можете настроить crontab для более частой работы.",
+ "IncompletePeriod": "Неполный период",
"InfoFor": "Информация для %s",
"Installed": "Установлено",
"InvalidDateRange": "Неверный период, пожалуйста, попробуйте снова",
@@ -310,7 +317,7 @@
"Next": "Далее",
"No": "Нет",
"NoDataForGraph": "Нет данных для построения графика.",
- "NoDataForTagCloud": "Нет данных по этим тегам",
+ "NoDataForTagCloud": "Нет данных по этим тегам.",
"NotDefined": "%s не определено",
"NotInstalled": "Не установлено",
"NotPossibleWithoutHttps": "Внимание: выполнение этого без настройки SSL-сертификата для использования HTTPS приведет к поломке Matomo.",
@@ -409,14 +416,14 @@
"Search": "Поиск",
"SearchNoResults": "Нет результатов",
"SecondsSinceFirstVisit": "Прошло секунд с момента первого посещения",
- "SecondsSinceLastEcommerceOrder": "Секунд с момента последнего электронного заказа.",
+ "SecondsSinceLastEcommerceOrder": "Секунд с момента последнего электронного заказа",
"SecondsSinceLastVisit": "Прошло секунд с момента последнего посещения",
"Security": "Безопасность",
"SeeAll": "просмотреть всё",
"SeeTheOfficialDocumentationForMoreInformation": "Смотрите %1$sофициальную документацию%2$s чтобы узнать больше.",
"SeeThisFaq": "Посмотрите %1$sэти частые вопросы%2$s.",
"Segment": "Сегмент",
- "SelectYesIfYouWantToSendEmailsViaServer": "Выберите «Да», если вы хотите отсылать e-mail письма через определённый сервер, вместо использования локальной mail функции.",
+ "SelectYesIfYouWantToSendEmailsViaServer": "Выберите «Да», если вы хотите отсылать e-mail письма через определённый сервер, вместо использования локальной mail функции",
"Settings": "Настройки",
"Shipping": "Доставка",
"Show": "показать",
@@ -458,7 +465,7 @@
"UniquePurchases": "Уникальные покупки",
"Unknown": "Неизвестно",
"Upload": "Закачать",
- "UsePlusMinusIconsDocumentation": "Используйте иконки плюс и минус слева для навигации",
+ "UsePlusMinusIconsDocumentation": "Используйте иконки плюс и минус слева для навигации.",
"UseSMTPServerForEmail": "Использовать SMTP сервер для e-mail",
"UseSSLInstall": "Мы рекомендуем использовать Matomo только через безопасные SSL-соединения. Пожалуйста, %1$sнажмите здесь, чтобы продолжить процесс установки через SSL%2$s.",
"UserId": "ID пользователя",
@@ -473,12 +480,12 @@
"ValidatorErrorNotANumber": "Значение не является числом.",
"ValidatorErrorNotEmailLike": "Значение «%s» не похоже на email.",
"ValidatorErrorNotUrlLike": "Значение «%s» не похоже на URL.",
- "ValidatorErrorNumberTooHigh": "Значение «%1$s» слишком велико. Это значение должно быть не больше %2$s.",
+ "ValidatorErrorNumberTooHigh": "Значение «%1$s» слишком велико. Это значение должно быть не больше %2$s",
"ValidatorErrorNumberTooLow": "Значение «%1$s» слишком мало. Это значение должно быть не меньше %2$s.",
"ValidatorErrorXNotWhitelisted": "Значение «%1$s» не допускается, используйте одно из: %2$s.",
"Value": "Значение",
"View": "Смотреть",
- "ViewAccessRequired": "Используемый token_auth наделен слишком большими правами, чтобы быть использованным в non-API URL запросах. Пожалуйста, используйте особый пароль приложения для пользователей, имеющих только доступ на просмотр.",
+ "ViewAccessRequired": "Используемый token_auth имеет слишком большой доступ для использования в URL запроса, не относящегося к API. Пожалуйста, используйте пароль, специфичный для приложения, для пользователя, имеющего доступ только для просмотра.",
"ViewDocumentationFor": "Смотреть документацию для %1$s",
"Visit": "Посещение",
"VisitConvertedGoal": "Посещение, сконвертированное как минимум одной целью",
@@ -519,7 +526,7 @@
"XFromY": "%1$s – %2$s",
"YearlyReport": "ежегодно",
"YearlyReports": "Ежегодные отчеты",
- "YearsDays": "%1$s г. %2$s дн.",
+ "YearsDays": "%1$s лет %2$s дней",
"Yes": "Да",
"YouAreCurrentlyUsing": "Вы используете версию Matomo %s.",
"YouAreViewingDemoMessage": "Вы просматриваете демо %1$sMatomo%2$s",
@@ -554,7 +561,7 @@
"ExceptionNoViewAccess": "Пожалуйста, проверьте свои имя и пароль и убедитесь, что у вас есть доступ %s, по крайней мере, к одному сайту.",
"HelpUsToImprovePiwikMobile": "Вы хотите включить анонимное отслеживание использования в Matomo Mobile?",
"HowtoDeleteAnAccount": "Нажмите и удерживайте для удаления аккаунта.",
- "HowtoDeleteAnAccountOniOS": "Проведите справа налево, чтобы удалить учётную запись.",
+ "HowtoDeleteAnAccountOniOS": "Проведите справа налево, чтобы удалить учётную запись",
"HowtoExitAndroid": "Пожалуйста, нажмите НАЗАД еще раз, чтобы выйти",
"HowtoLoginAnonymous": "Оставьте имя пользователя и пароль пустым для анонимного входа",
"HttpIsNotSecureWarning": "Ваш токен авторизации в Matomo (token_auth) отправляется в незащищенном виде, если Вы используете \"HTTP\". Поэтому мы рекомендуем HTTPS для безопасности передачи информации по интернету. Желаете продолжить?",
@@ -594,7 +601,7 @@
"RequestTimedOutShort": "Ошибка времени ожидания в сети",
"RestrictedCompatibility": "Ограниченная совместимость",
"RestrictedCompatibilityExplanation": "Используемая версия Matomo %s не полностью поддерживается Matomo Mobile 2. Возможны ошибки во время работы. Мы рекомендуем либо обновить Matomo до последней версии, либо использовать Matomo Mobile 1.",
- "SaveSuccessError": "Пожалуйста, проверьте настройки",
+ "SaveSuccessError": "Пожалуйста, проверьте настройки (URL, имя пользователя или пароль).",
"SearchWebsite": "Искать сайты",
"ShowAll": "Показать все",
"ShowLess": "Показать меньше",
diff --git a/lang/sq.json b/lang/sq.json
index 9360a33465..05849c399c 100644
--- a/lang/sq.json
+++ b/lang/sq.json
@@ -14,9 +14,9 @@
"AllowPiwikArchivingToTriggerBrowser": "Arkivoji raportet kur shihen që nga shfletuesi",
"And": "dhe",
"Apply": "Zbatoje",
- "ArchivingInlineHelp": "Për sajte me trafik mesatar ose të shumtë këshillohet të çaktivizohet vënia në punë e arkivimit nga Matomo prej shfletuesit. Në vend të kësaj këshillojmë të rregulloni një akt cron që të përpunoni raporte Matomo çdo orë.",
- "ArchivingTriggerDescription": "E këshilluar për instalime më të ngarkuara të Matomo-s, lypset të %1$s rregulloni një akt cron-i%2$s që të përpunohen raportet automatikisht.",
- "ArchivingTriggerSegment": "Përdorimi i Segmenteve Vetjake prapë do të shkaktojë përpunimin e arkivave.",
+ "ArchivingInlineHelp": "Për sajte me trafik mesatar ose të shumtë, këshillohet të çaktivizohet vënia në punë e arkivimit nga Matomo prej shfletuesit. Në vend të kësaj këshillojmë të rregulloni një akt cron që të përpunoni raporte Matomo çdo orë.",
+ "ArchivingTriggerDescription": "E rekomanduar për instalime më të ngarkuara të Matomo-s, lypset të %1$sujdisni një akt cron-i%2$s që të përpunohen raportet automatikisht.",
+ "ArchivingTriggerSegment": "Përdorimi i Segmenteve Vetjake prapë do të shkaktojë përpunim arkivash.",
"AuthenticationMethodSmtp": "Metodë mirëfilltësimi për SMTP",
"AverageOrderValue": "Vlerë Mesatare Porosie",
"AveragePrice": "Çmim Mesatar",
@@ -33,15 +33,15 @@
"ChooseDate": "Zgjidhni datë, data e përzgjedhur tani është: %s",
"ChooseLanguage": "Zgjidhni gjuhën",
"ChoosePeriod": "Zgjidhni periudhë",
- "Clear": "Pastroje",
- "ClickHere": "Për më tepër të dhëna, klikoni këtu.",
+ "Clear": "Spastroje",
+ "ClickHere": "Për më tepër hollësi, klikoni këtu.",
"ClickToRemoveComp": "Klikoni që të hiqet ky krahasim.",
"ClickToSearch": "Klikoni për kërkim",
"Close": "Mbylle",
"ColumnActionsPerVisit": "Veprime për Vizitë",
"ColumnActionsPerVisitDocumentation": "Numri mesatar i veprimeve (parje faqesh, shkarkime ose klikime lidhjesh për jashtë) që janë kryer gjatë vizitave.",
"ColumnAverageGenerationTime": "Kohë mesatare krijimi",
- "ColumnAverageGenerationTimeDocumentation": "Koha mesatare që u desh për krijimin e faqes. Kjo vlerë përfshin kohën që iu desh shërbyesit të prodhojë faqen web, plus kohën që iu desh vizitorit të shkarkojë përgjigjen nga shërbyesi. Një 'Kohë mesatare krijimi' e ulët nënkupton një sajt më të shpejtë për vizitorët tuaj!",
+ "ColumnAverageGenerationTimeDocumentation": "Koha mesatare që u desh për krijimin e faqes. Ky numër përfshin kohën që iu desh shërbyesit të prodhojë faqen web, plus kohën që iu desh vizitorit të shkarkojë përgjigjen nga shërbyesi. Një 'Kohë mesatare krijimi' e ulët nënkupton një sajt më të shpejtë për vizitorët tuaj!",
"ColumnAverageTimeOnPage": "Kohë mesatarisht në faqe",
"ColumnAverageTimeOnPageDocumentation": "Sasia mesatare e kohës që vizitorët harxhuan në këtë faqe (vetëm te faqja, jo në krejt sajtin).",
"ColumnAvgTimeOnSite": "Kohë Mesatare te Sajti",
@@ -69,9 +69,9 @@
"ColumnNbUniqVisitors": "Vizitorë unikë",
"ColumnNbUniqVisitorsDocumentation": "Numri i vizitorëve të papërsëdytur që vijnë në sajtin tuaj. Çdo përdorues numërohet vetëm një herë, edhe nëse e vizitojnë sajtin tuaj disa herë në ditë.",
"ColumnNbUsers": "Përdorues",
- "ColumnNbUsersDocumentation": "Numri i vizitorëve që kanë bërë hyrjen e autorizuar në sajtin tuaj. Ky është numri i përdoruesve unikë aktivë që kanë të caktuar një ID Përdoruesi (përmes funksionit për kod Ndjekjeje 'setUserId').",
+ "ColumnNbUsersDocumentation": "Numri i vizitorëve që kanë bërë hyrjen në llogari në sajtin tuaj. Ky është numri i përdoruesve unikë aktivë që kanë të ujdisur një ID Përdoruesi (përmes funksionit për kod Ndjekjeje 'setUserId').",
"ColumnNbVisits": "Vizita",
- "ColumnNbVisitsDocumentation": "Nëse një vizitor vjen te sajti juaj për herë të parë ose nëse e viziton një faqe më vonë se 30 minuta pas parjes së fundit të faqes, kjo do të regjistrohet si vizitë e re.",
+ "ColumnNbVisitsDocumentation": "Nëse një vizitor vjen te sajti juaj për herë të parë, ose nëse e viziton një faqe më vonë se 30 minuta pas parjes së fundit të faqes, kjo do të regjistrohet si vizitë e re.",
"ColumnPageBounceRateDocumentation": "Përqindje vizitash që zunë fill në këtë faqe dhe e braktisën sajtin menjëherë.",
"ColumnPageGenerationTime": "Kohë Prodhimi Faqeje",
"ColumnPageviews": "Parje faqesh",
@@ -86,20 +86,20 @@
"ColumnUniquePageviews": "Parje Unike Faqesh",
"ColumnUniquePageviewsDocumentation": "Numër vizitash që përfshinë edhe këtë faqe. Nëse një faqe qe parë disa herë gjatë një vizite, numërohet vetëm një herë.",
"ColumnValuePerVisit": "Të ardhura për Vizitë",
- "ColumnViewedAfterSearch": "Përfundime kërkimi të klikuara",
- "ColumnViewedAfterSearchDocumentation": "Numri i herëve që kjo Faqe qe vizituar nga një vizitor, pasi kreu një kërkim mbi sajtin tuaj, dhe klikoi mbi këtë faqe te përfundimet e kërkimit.",
+ "ColumnViewedAfterSearch": "Klikuar te përfundime kërkimi",
+ "ColumnViewedAfterSearchDocumentation": "Numri i herëve që kjo Faqe qe vizituar nga një vizitor, pasi kreu një kërkim mbi sajtin tuaj dhe klikoi mbi këtë faqe te përfundimet e kërkimit.",
"ColumnViewsWithGenerationTime": "Parje Faqesh me kohë prodhimi",
"ColumnVisitDuration": "Kohëzgjatje Vizite (në sekonda)",
"ColumnVisitsWithConversions": "Vizita me Shndërrime",
"CompareDatesParamMustMatchComparePeriods": "Gjatësia e parametrit të kërkesës %1$s duhet të përputhet me gjatësinë e parametrit të kërkesës %2$s.",
"CompareTo": "Krahasoje me:",
"ComparisonCardTooltip1": "'%1$s' në %2$s përmban %3$s të krejt vizitave (%4$s nga %5$s gjithsej).",
- "ComparisonCardTooltip2": "Numri i vizitave është i ndryshëm me %1$s krahasyar me %2$s gjatë %3$s.",
+ "ComparisonCardTooltip2": "Numri i vizitave është i ndryshëm me %1$s krahasuar me %2$s gjatë %3$s.",
"ComparisonRatioTooltip": "Ky është %1$s ndryshim krahasuar me segmentin '%2$s' në %3$s.",
"Comparisons": "Krahasime",
"ComputedMetricAverage": "%1$s mesatare për %2$s",
- "ComputedMetricAverageDocumentation": "Vlera mesatare e \"%1$s\" për \"%2$s\".",
- "ComputedMetricAverageShortDocumentation": "Vlerë mesatare e \"%1$s\".",
+ "ComputedMetricAverageDocumentation": "Vlera mesatare e “%1$s” për “%2$s”.",
+ "ComputedMetricAverageShortDocumentation": "Vlerë mesatare e “%1$s”.",
"ComputedMetricCountDocumentation": "Numri i %s",
"ComputedMetricCountWithValue": "Zëra me %s",
"ComputedMetricCountWithValueDocumentation": "Numri i zërave që kanë një vlerë të caktuar për %s",
@@ -108,13 +108,13 @@
"ComputedMetricMin": "Minimum %s",
"ComputedMetricMinDocumentation": "Vlera minimum për %s",
"ComputedMetricRate": "Shkallë %s",
- "ComputedMetricRateDocumentation": "Përpjesëtimi i \"%1$s\" nga \"%2$s\" gjithsej.",
- "ComputedMetricRateShortDocumentation": "Përqindja e \"%1$s\".",
+ "ComputedMetricRateDocumentation": "Përpjesëtimi i “%1$s” nga “%2$s” gjithsej.",
+ "ComputedMetricRateShortDocumentation": "Përqindja e “%1$s”.",
"ComputedMetricSum": "%s gjithsej",
"ComputedMetricSumDocumentation": "Numri gjithsej (shuma) e %s",
"ComputedMetricUniqueCount": "%s unik",
"ComputedMetricUniqueCountDocumentation": "Numër unik i %s",
- "ConfigFileIsNotWritable": "Kartela për formësimin e Matomo-s %1$s s’është e shkrueshme, disa nga ndryshimet tuaja mund të mos ruhen dot. %2$s Ju lutemi, ndryshoni lejet mbi kartelën e formësimit për ta bërë të shkrueshshme.",
+ "ConfigFileIsNotWritable": "Kartela për formësimin e Matomo-s %1$s s’është e shkrueshme, disa nga ndryshimet tuaja mund të mos ruhen dot. %2$s Ju lutemi, ndryshoni lejet mbi kartelën e formësimit, për ta bërë të shkrueshshme.",
"Confirm": "Ripohojeni",
"Continue": "Vazhdo",
"ContinueToPiwik": "Vazhdoni te Matomo",
@@ -124,21 +124,21 @@
"CurrentMonth": "Muaji i Tanishëm",
"CurrentWeek": "Java e Tanishme",
"CurrentYear": "Viti i Tanishëm",
- "CurrentlyUsingUnsecureHttp": "Po e përdorni Matomo-n përmes HTTP-je jo të sigurt. Kjo mund ta bëjë Matomo-n tuaj të cenueshëm kundrejt shfrytëzimit të kësaj për komprometim të sigurisë. Mundet të gjendeni edhe në rrethana shkeljeje të ligjeve mbi privatësinë, ngaqë disa veçori, përfshi <em>cookies</em> për <em>opt-out</em> s’do të funksionojnë. Për siguri të përmirësuar, këshillojmë ta ujdisni Matomo-n të përdorë SSL (HTTPS).",
+ "CurrentlyUsingUnsecureHttp": "Po e përdorni Matomo-n përmes HTTP-je jo të sigurt. Kjo mund ta bëjë Matomo-n tuaj të cenueshëm kundrejt shfrytëzimit të kësaj për komprometim të sigurisë. Mundet të gjendeni edhe në rrethana shkeljeje të ligjeve mbi privatësinë, ngaqë disa veçori, përfshi “cookies” për lënie jashtë nga ndjekja, s’do të funksionojnë. Për siguri më të mirë, këshillojmë ta ujdisni Matomo-n të përdorë SSL (HTTPS).",
"Custom": "Vetjake",
"Daily": "Përditë",
"DailyReport": "përditë",
"DailyReports": "Raporte të përditshme",
"DailySum": "shumë ditore",
"DashboardForASpecificWebsite": "Pult për një sajt të caktuar",
- "DataForThisGraphHasBeenPurged": "Të dhënat e këtij grafiku janë më të vjetra se %s muaj dhe u fshinë.",
- "DataForThisTagCloudHasBeenPurged": "Të dhënat për këtë re etiketash janë më të vjetra se %s muaj dhe u fshinë.",
+ "DataForThisGraphHasBeenPurged": "Të dhënat e këtij grafiku janë më të vjetra se %s muaj dhe u spastruan.",
+ "DataForThisTagCloudHasBeenPurged": "Të dhënat për këtë re etiketash janë më të vjetra se %s muaj dhe u spastruan.",
"Date": "Datë",
"DateRange": "Interval datash:",
"DateRangeFrom": "Prej",
"DateRangeFromTo": "Nga %1$s në %2$s",
"DateRangeInPeriodList": "interval datash",
- "DateRangeTo": "Për",
+ "DateRangeTo": "Në",
"DaysHours": "%1$s ditë %2$s orë",
"DaysSinceFirstVisit": "Ditë që nga vizita e parë",
"DaysSinceLastEcommerceOrder": "Ditë që nga porosia e parë E-tregti",
@@ -149,52 +149,54 @@
"Description": "Përshkrim",
"Desktop": "Desktop",
"Details": "Hollësi",
+ "Disabled": "E çaktivizuar",
"Discount": "Ulje Çmimi",
"DisplaySimpleTable": "Shfaq një tabelë të thjeshtë",
"DisplayTableWithGoalMetrics": "Shfaq një tabelë me vlera Objektivash",
- "DisplayTableWithMoreMetrics": "Shfaq një tabelë me më tepër vlera",
+ "DisplayTableWithMoreMetrics": "Shfaq një tabelë me vlera angazhimi Vizitorësh",
"Documentation": "Dokumentim",
"Donate": "Dhurime",
"Done": "U bë",
"DoubleClickToChangePeriod": "Dyklikoni që të zbatohet kjo periudhë.",
"Download": "Shkarkojeni",
"DownloadFail_FileExists": "Kartela %s ekziston!",
- "DownloadFail_FileExistsContinue": "Po përpiqet të vazhdojë shkarkimin e %s, por ka tashmë një kartelë të shkarkuar plotësisht!",
- "DownloadFail_HttpRequestFail": "Kartela s’u shkarkua dot! Diçka mund të jetë gabim te sajti prej të cilit po shkarkoni. Mund të riprovoni më vonë ose ta merrni vetë kartelën.",
+ "DownloadFail_FileExistsContinue": "Po provohet të vazhdohet shkarkimi i %s, por ka tashmë një kartelë të shkarkuar plotësisht!",
+ "DownloadFail_HttpRequestFail": "Kartela s’u shkarkua dot! Diçka mund të jetë gabim te sajti prej të cilit po shkarkoni. Mund të riprovoni më vonë, ose ta merrni vetë kartelën.",
"DownloadFullVersion": "%1$sShkarkoni%2$s versionin e plotë! Shihni %3$s",
"DownloadPleaseRemoveExisting": "Nëse doni të zëvendësohet, ju lutemi, hiqni kartelën ekzistuese.",
"Downloads": "Shkarkime",
"EcommerceOrders": "Porosi E-tregtie",
- "EcommerceVisitStatusDesc": "Shihni gjendjen e E-tregtisë në fund të vizitës",
+ "EcommerceVisitStatusDesc": "Shihni gjendje E-tregtie në fund të vizitës",
"EcommerceVisitStatusEg": "Për shembull, për të përzgjedhur krejt vizitat që janë bërë një porosi E-tregti, kërkesa API do të duhej të përmbante %s",
"Edit": "Përpunojeni",
"EncryptedSmtpTransport": "Jepni fshehtëzimin e shtresës së mbartjes siç e kërkon shërbyesi juaj SMTP.",
"Error": "Gabim",
"ErrorRequest": "Hëm… pati një problem gjatë kërkesës. Ndoshta shërbyesi pati një problem të përkohshëm, ose ndoshta kërkuat një raport me shumë të dhëna. Ju lutemi, riprovoni. Nëse ky gabim përsëritet vazhdimisht, ju lutemi, %1$slidhuni me përgjegjësin e Matomo-s tuaj%2$s për asistencë.",
"ErrorRequestFaqLink": "Shihni te PBR hapat për të zgjidhur këtë problem.",
+ "ErrorTryAgain": "Gabim. Ju lutemi, riprovoni më vonë.",
"Errors": "Gabime",
"EvolutionOverPeriod": "Zhvillime përgjatë periudhës",
"EvolutionSummaryGeneric": "%1$s në %2$s krahasuar me %3$s te %4$s. Evolucion: %5$s",
"ExceptionCapabilityAccessWebsite": "S’mund të përdorni këtë burim, ngaqë kjo lyp aftësi %1$s për sajtin id = %2$d.",
"ExceptionCheckUserHasSuperUserAccessOrIsTheUser": "Përdoruesi duhet të jetë ose Superpërdorues, ose vetë përdoruesi '%s'.",
"ExceptionConfigurationFileExistsButNotReadable": "Kartela e formësimit %s duket se ekziston, por Matomo s’e lexoi dot.",
- "ExceptionConfigurationFileNotFound": "S’u gjet kartela {%s} e formësimit.",
+ "ExceptionConfigurationFileNotFound": "S’u gjet kartela {%s} e formësimit, ose s’u lexua dot.",
"ExceptionConfigurationFilePleaseCheckReadableByUser": "Ju lutemi, kontrolloni që %1$s është e lexueshme nga përdoruesi '%2$s'.",
"ExceptionContactSupportGeneric": "Nëse ky problem mbetet, ju lutemi, %1$slidhuni me përgjegjësin e Matomo- tuaj%2$s për asistencë.",
"ExceptionDatabaseAccess": "U mohua hyrje në bazë të dhënash",
"ExceptionDatabaseUnavailable": "Shërbyesi MySQL s’është në punë",
- "ExceptionDatabaseVersion": "Versioni juaj për %1$s është %2$s por Matomo lyp të paktën %3$s.",
- "ExceptionDatabaseVersionNewerThanCodebase": "Kodi bazë i Matomo-s tuaj xhiron versionin e vjetër %1$s dhe kemi gjetur se Baza juaj e të Dhënave Matomo është përmirësuar tashmë me versionin më të ri %2$s.",
+ "ExceptionDatabaseVersion": "Versioni juaj për %1$s është %2$s, por Matomo lyp të paktën %3$s.",
+ "ExceptionDatabaseVersionNewerThanCodebase": "Kodi bazë i Matomo-s tuaj xhiron versionin e vjetër %1$s dhe kemi pikasur se Baza juaj e të Dhënave Matomo është përmirësuar tashmë me versionin më të ri %2$s.",
"ExceptionDatabaseVersionNewerThanCodebaseWait": "Ndoshta përgjegjësit e Matomo-s tuaj janë duke përfunduar procesin e përmirësimit. Ju lutemi, riprovoni pas pak minutash.",
- "ExceptionDirectoryToDelete": "Drejtori që duhen fshirë: %s",
+ "ExceptionDirectoryToDelete": "Drejtori për fshirje: %s",
"ExceptionFileIntegrity": "Kontrolli i pacenueshmërisë dështoi: %s",
"ExceptionFileToDelete": "Kartelë për t’u fshirë: %s",
"ExceptionFilesizeMismatch": "Mospërputhje madhësie kartelash: %1$s (pritej gjatësi: %2$s, u gjet: %3$s)",
- "ExceptionIncompatibleClientServerVersions": "Versioni i klientit tuaj për %1$s është %2$s çka është e papërputhshme me versionin e shërbyesit %3$s.",
+ "ExceptionIncompatibleClientServerVersions": "Versioni i klientit tuaj për %1$s është %2$s, çka është e papërputhshme me versionin e shërbyesit %3$s.",
"ExceptionInvalidAggregateReportsFormat": "Formati '%1$s' për raporte të grumbulluar s’është i vlefshëm. Provoni më mirë ndonjë nga vijuesit: %2$s.",
"ExceptionInvalidArchiveTimeToLive": "Jetëgjatësia e arkivit për sot duhet të jetë një numër sekondash më i madh se zero",
"ExceptionInvalidDateBeforeFirstWebsite": "Data '%1$s' bie përpara se sajti i parë të qe në internet. Provoni një datë që bie pas %2$s (vulë kohore %3$s).",
- "ExceptionInvalidDateFormat": "Formati i datës duhet të jetë: %1$s ose çfarëdo fjalëkyçi që funksioni %2$s e mbulon (për më tepër të dhëna, shihni %3$s)",
+ "ExceptionInvalidDateFormat": "Formati i datës duhet të jetë: %1$s ose çfarëdo fjalëkyçi që funksioni %2$s e mbulon (për më tepër hollësi, shihni %3$s)",
"ExceptionInvalidDateRange": "Data '%1$s' s’është interval i saktë datash. Ky do të duhej të kishte formatin vijues: %2$s.",
"ExceptionInvalidPeriod": "Nuk mbulohet periudha '%1$s'. Provoni më mirë ndonjë nga vijueset: %2$s",
"ExceptionInvalidRendererFormat": "Formati '%1$s' për vizatuesin s’është i vlefshëm. Provoni më mirë ndonjë nga vijuesit: %2$s.",
@@ -202,7 +204,7 @@
"ExceptionInvalidStaticGraphType": "Lloji '%1$s' për grafik statik s’është i vlefshëm. Provoni më mirë ndonjë nga vijuesit: %2$s.",
"ExceptionInvalidToken": "Token-i s’është i vlefshëm.",
"ExceptionLanguageFileNotFound": "S’u gjet kartela e gjuhës '%s'.",
- "ExceptionMethodNotFound": "Metoda '%1$s' s’ekziston ose s’është e mundshme në modulin '%2$s'.",
+ "ExceptionMethodNotFound": "Metoda '%1$s' s’ekziston, ose s’është e passhme te moduli '%2$s'.",
"ExceptionMissingFile": "Kartelë që mungon: %s",
"ExceptionNonceMismatch": "S’u verifikua dot token-i i sigurisë në këtë formular.",
"ExceptionNotSupportedBrowserText": "Shfletuesi juaj nuk mbulohet, për shkak arsyesh sigurie. Ju lutemi, përmirësojeni me një version të ri.",
@@ -214,38 +216,40 @@
"ExceptionReportNotFound": "Raporti i kërkuar s’ekziston.",
"ExceptionUnableToStartSession": "S’arrihet të niset sesion.",
"ExceptionUndeletableFile": "S’arrihet të fshihet %s",
- "ExceptionUnexpectedDirectory": "U gjetën drejtori te Matomo juaj, por s’pritnim të tilla.",
- "ExceptionUnexpectedDirectoryPleaseDelete": "Ju lutemi, fshijini këto drejtori që të parandalohen gabime.",
- "ExceptionUnexpectedFile": "U gjetën kartela në Matomo-n tuaj, por nuk prisnim të tilla.",
- "ExceptionUnexpectedFilePleaseDelete": "Ju lutemi, fshijini këto kartela që të parandalohet gabime.",
+ "ExceptionUnexpectedDirectory": "Te Matomo juaj u gjetën drejtori, por s’pritnim të tilla.",
+ "ExceptionUnexpectedDirectoryPleaseDelete": "Ju lutemi, fshijini këto drejtori, që të parandalohen gabime.",
+ "ExceptionUnexpectedFile": "Te Matomo juaj u gjetën kartela, por s’pritnim të tilla.",
+ "ExceptionUnexpectedFilePleaseDelete": "Ju lutemi, fshijini këto kartela, që të parandalohet gabime.",
"ExceptionUnreadableFileDisabledMethod": "S’u lexua dot kartela {%1$s} e formësimit. Streha juaj mund të ketë çaktivizuar %2$s.",
"ExceptionWidgetNotEnabled": "Widget-i i domosdoshëm s’është i instaluar. Kjo do të thotë zakonisht se ose shtojca përcakton që widget-i të jetë i çaktivizuar, ose që ju s’keni leje të mjaftueshme për të përdorur këtë widget.",
"ExceptionWidgetNotFound": "Widget-i i kërkuar s’ekziston.",
"ExpandDataTableFooter": "Ndryshoni vizualizimin ose formësoni raportin",
- "Export": "Eksporto",
+ "Export": "Eksportim",
"ExportAsImage": "Eksportoje si Figurë",
"ExportThisReport": "Eksportojeni këtë grup të dhënash në formate të tjerë",
"Faq": "PBR",
"FileIntegrityWarning": "Kontrolli i pacenueshmërisë së kartelës dështoi dhe dha disa gabime. Duhet ta ndreqni këtë problem dhe mandej të rifreskoni këtë faqe deri sa të mos shfaqë më gabime.",
- "FileIntegrityWarningReupload": "Gabimet më poshtë mund të kenë ardhur nga një ngarkim i pjesshëm ose i dështuar kartelash Matomo.",
+ "FileIntegrityWarningReupload": "Gabimet më poshtë mund të kenë ardhur nga një ngarkim i pjesshëm, ose i dështuar kartelash Matomo.",
"FileIntegrityWarningReuploadBis": "Provoni të ringarkoni krejt kartelat e Matomo-s në mënyrën DYORE.",
"First": "I pari",
"Flatten": "Sheshoje",
"ForExampleShort": "p.sh.",
- "ForceSSLRecommended": "Këshillojmë përdorimin e Matomo-s vetëm përmes lidhjesh SSL të sigurta. Për të parandaluar hyrje përmes http-je të pasiguruara, shtoni %1$s te ndarja %2$s në kartelën tuaj config/config.ini.php të Matomo-s.",
- "ForcedSSL": "Lidhje SSL e Detyrueshme",
+ "ForceSSLRecommended": "Rekomandojmë përdorimin e Matomo-s vetëm përmes lidhjesh SSL të sigurta. Për të parandaluar hyrje përmes http-je të pasiguruar, shtoni %1$s te ndarja %2$s në kartelën tuaj config/config.ini.php të Matomo-s.",
+ "ForcedSSL": "Lidhje SSL e Detyruar",
"Forums": "Forume",
"FromReferrer": "prej",
- "GeneralInformation": "Të dhëna të Përgjithshme",
+ "GeneralInformation": "Hollësi të Përgjithshme",
"GeneralSettings": "Rregullime të përgjithshme",
- "GetStarted": "Si t’ia fillohet",
+ "Generic": "Elementare",
+ "GetStarted": "Fillojani",
"GiveUsYourFeedback": "Jepnani Përshtypjet!",
"GoTo": "Shko te %s",
"GoTo2": "Shko te",
"Goal": "Objektiv",
- "GraphHelp": "Më tepër të dhëna rreth shfaqjes së grafikëve në Matomo.",
+ "GraphHelp": "Më tepër hollësi rreth shfaqjes së grafikëve në Matomo.",
"HelloUser": "Tungjatjeta, %s!",
"Help": "Ndihmë",
+ "HelpReport": "Klikoni që të shfaqen hollësi ndihme rreth këtij raporti",
"HelpResources": "Burime ndihme",
"HelpTranslatePiwik": "Ndoshta do të donit të %1$sna ndihmonit të përmirësojmë përkthimet e Matomo-s%2$s?",
"Hide": "fshihe",
@@ -253,7 +257,8 @@
"IP": "IP",
"Id": "Id",
"IfArchivingIsFastYouCanSetupCronRunMoreOften": "Duke pranuar që arkivimi në instancën tuaj është i shpejtë, mund ta rregulloni crontab-in të xhirojë më shpesh.",
- "InfoFor": "Të dhëna për %s",
+ "IncompletePeriod": "Periudhë Jo e Plotë",
+ "InfoFor": "Hollësi për %s",
"Installed": "E instaluar",
"InvalidDateRange": "Interval i Pavlefshëm Datash, Ju lutemi, Riprovoni",
"InvalidResponse": "Të dhënat e marra janë të pavlefshme.",
@@ -265,21 +270,21 @@
"LastDaysShort": "%s ditët e fundit",
"LearnMore": "%1$smësoni më tepër%2$s",
"Live": "Live",
- "Loading": "Po ngarkohet...",
- "LoadingData": "Po ngarkohen të dhënat...",
- "LoadingPopover": "Po ngarkohet %s...",
+ "Loading": "Po ngarkohet…",
+ "LoadingData": "Po ngarkohen të dhënat…",
+ "LoadingPopover": "Po ngarkohet %s…",
"LoadingPopoverFor": "Po ngarkohet %s për",
"Locale": "sq_AL.UTF-8",
"Logout": "Dilni",
"MainMetrics": "Vlerat kryesore",
"Matches": "Përputhje",
- "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, njohur dikur si Piwik, është një projekt i sjellë për ju nga anëtarët e %7$sekipit të Matomo-s%8$s, si dhe nga mjaft ndihmëtarë anembanë rruzullit. <br/> Nëse jeni fan i Matomo-s, mund të ndihmoni: shihni se %3$sSi të merrni pjesë te Matomo%4$s, ose %5$sdhuroni tani%6$s që të ndihmoni në financimin e hedhjes pasuese në qarkullim të fuqishme të Matomo-s!",
+ "MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, njohur dikur si Piwik, është një projekt i sjellë për ju nga anëtarët e %7$sekipit të Matomo-s%8$s, si dhe nga mjaft ndihmëtarë anembanë rruzullit. <br> Nëse ju pëlqen Matomo-ja, mund të ndihmoni: shihni se %3$sSi të merrni pjesë te Matomo%4$s, ose %5$sdhuroni tani%6$s, që të ndihmoni në financimin e hedhjes pasuese të fuqishme në qarkullim të Matomo-s!",
"MaximumNumberOfPeriodsComparedIs": "Numri maksimum i periudhave që mund të krahasohen në të njëjtën kohë është %s.",
"MaximumNumberOfSegmentsComparedIs": "Numri maksimum i segmenteve që mund të krahasohen në të njëjtën kohë është %s.",
"Measurable": "E matshme",
"MeasurableId": "ID e Matshme",
"Measurables": "Të matshme",
- "MediumToHighTrafficItIsRecommendedTo": "Për sajte me trafik të shumtë, këshillojmë t’i përpunoni raportet për ditën e sotme e shumta çdo gjysmë ore (%1$s sekonda) ose çdo një orë (%2$s sekonda).",
+ "MediumToHighTrafficItIsRecommendedTo": "Për sajte me trafik të shumtë, këshillojmë t’i përpunoni raportet për ditën e sotme e shumta çdo gjysmë ore (%1$s sekonda), ose çdo një orë (%2$s sekonda).",
"Metadata": "Tejtëdhëna",
"Metric": "Vlerë",
"MetricToPlot": "Vlerë për t’u hedhur në grafik",
@@ -287,8 +292,8 @@
"MetricsToPlot": "Vlera për t’u hedhur në grafik",
"MinutesSeconds": "%1$s minuta %2$ss",
"Mobile": "Celular",
- "Monthly": "Përmuaj",
- "MonthlyReport": "përmuaj",
+ "Monthly": "Çdo muaj",
+ "MonthlyReport": "çdo muaj",
"MonthlyReports": "Raporte të përmuajshëm",
"More": "Më tepër",
"MoreDetails": "Më Tepër Hollësi",
@@ -315,7 +320,7 @@
"NoDataForTagCloud": "Pa të dhëna për këtë re etiketash.",
"NotDefined": "%s pa u përkufizuar",
"NotInstalled": "E painstaluar",
- "NotPossibleWithoutHttps": "Kujdes: Kryerja e kësaj pa patur rregulluar një dëshmi SSL për përdorim të HTTPS-ës do të nxjerrë jashtë funksionimi Matomo-n.",
+ "NotPossibleWithoutHttps": "Kujdes: Kryerja e kësaj pa pasur të rregulluar një dëshmi SSL për përdorim të HTTPS-ës, do të nxjerrë jashtë funksionimi Matomo-n.",
"NotRecommended": "jo e këshillueshme",
"NotValid": "%s s’është e vlefshme",
"Note": "Shënim",
@@ -339,7 +344,7 @@
"OperationLessThan": "Më e vogël se",
"OperationNotEquals": "Jo e barabartë me",
"OperationStartsWith": "Fillon me",
- "OptionalSmtpPort": "Opsionale. Parazgjedhjet janë 25 për të pafshehtëzuarat dhe TLS SMTP, dhe 465 për SSL SMTP.",
+ "OptionalSmtpPort": "Opsionale. Parazgjedhjet janë 25 për të pafshehtëzuarat dhe TLS SMTP, si dhe 465 për SSL SMTP.",
"Options": "Mundësi",
"Or": "ose",
"OrCancel": "ose %1$s Anulojeni %2$s",
@@ -355,7 +360,7 @@
"ParameterMustIntegerBetween": "Parametri %1$s duhet të jetë një numër i plotë nga %2$s në %3$s.",
"Password": "Fjalëkalim",
"Period": "Periudhë",
- "Piechart": "Qarkore",
+ "Piechart": "Grafik qarkor",
"PiwikCannotBeUpgradedBecausePhpIsTooOld": "Matomo s’përmirësohet dot me versionin më të ri kryesor, ngaqë versioni juaj për PHP-në është shumë i vjetër.",
"PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s është gati. Ju lutemi, njoftoni %2$spërgjegjësin e Matomo-s%3$s.",
"PiwikXIsAvailablePleaseUpdateNow": "Mund të kihet Matomo %1$s. %2$s Ju lutemi, përditësojeni tani!%3$s (shihni %4$s ndryshimet%5$s).",
@@ -363,7 +368,7 @@
"PleaseSpecifyValue": "Ju lutemi, përcaktoni një vlerë për '%s'.",
"PleaseTryAgain": "Ju lutemi, riprovoni",
"PleaseUpdatePiwik": "Ju lutemi, përditësoni Matomo-n tuaj",
- "PleaseUpgradeYourPhpVersionSoYourPiwikDataStaysSecure": "Ju lutemi, përmirësoni versionin tuaj për PHP-në të paktën me PHP %s që kështu të dhënat tuaja analitike Matomo të mbeten të sigurta.",
+ "PleaseUpgradeYourPhpVersionSoYourPiwikDataStaysSecure": "Ju lutemi, përmirësoni versionin tuaj për PHP-në të paktën me PHP %s, që kështu të dhënat tuaja analitike Matomo të mbeten të siguruara.",
"Plugin": "Shtojcë",
"Plugins": "Shtojca",
"PoweredBy": "Bazuar në",
@@ -395,8 +400,8 @@
"ReportGeneratedFrom": "Ky raport u prodhua duke përdorur të dhëna nga %s.",
"ReportRatioTooltip": "'%1$s' përfaqëson %2$s e %3$s %4$s në segmentin %5$s me %6$s.",
"Reports": "Raporte",
- "ReportsContainingTodayWillBeProcessedAtMostEvery": "Raportet për ditën e sotme (ose për çfarëdo Intervali Datash që përfshin ditën e sotme) do të përpunohen e shumta çdo",
- "ReportsWillBeProcessedAtMostEveryHour": "Ndaj raportet do të përpunohen e shumta çdo një orë.",
+ "ReportsContainingTodayWillBeProcessedAtMostEvery": "Arkivo raporte e shumta çdo X sekonda",
+ "ReportsWillBeProcessedAtMostEveryHour": "Prandaj raportet do të përpunohen e shumta çdo një orë.",
"RequestTimedOut": "Kërkesës për të dhëna te %s i mbaroi koha. Ju lutemi, riprovoni.",
"Required": "%s i domosdoshëm",
"Required2": "I domosdoshëm",
@@ -407,7 +412,7 @@
"Rows": "Rreshta",
"RowsToDisplay": "Rreshta për shfaqje",
"Save": "Ruaje",
- "SaveImageOnYourComputer": "Për ta ruajtur figurën në kompjuterin tuaj, djathtasklikoni mbi figurën dhe përzgjidhni \"Ruajeni Figurën Si...\"",
+ "SaveImageOnYourComputer": "Për ta ruajtur figurën në kompjuterin tuaj, djathtasklikoni mbi figurën dhe përzgjidhni “Ruajeni Figurën Si…”",
"Search": "Kërko",
"SearchNoResults": "S’ka përfundime",
"SecondsSinceFirstVisit": "Sekonda që nga vizita e parë",
@@ -415,25 +420,25 @@
"SecondsSinceLastVisit": "Sekonda që nga vizita e fundit",
"Security": "Siguri",
"SeeAll": "shihini krejt",
- "SeeTheOfficialDocumentationForMoreInformation": "Për më tepër të dhëna, shihni %1$sdokumentimin zyrtar%2$s.",
+ "SeeTheOfficialDocumentationForMoreInformation": "Për më tepër hollësi, shihni %1$sdokumentimin zyrtar%2$s.",
"SeeThisFaq": "Shihni %1$skëto PBR%2$s.",
"Segment": "Segment",
- "SelectYesIfYouWantToSendEmailsViaServer": "Përzgjidhni \"Po\", nëse doni të dërgoni, ose keni për të dërguar, email përmes një shërbyesi të emërtuar, në vend se përmes të një funksioni vendor poste",
+ "SelectYesIfYouWantToSendEmailsViaServer": "Përzgjidhni “Po”, nëse doni të dërgoni, ose keni për të dërguar, email përmes një shërbyesi të emërtuar, në vend se përmes të një funksioni vendor poste",
"Settings": "Rregullime",
- "Shipping": "Dërgesë",
+ "Shipping": "Dërgim",
"Show": "shfaqe",
"SingleWebsitesDashboard": "Pult Sajti Njësh",
- "SmallTrafficYouCanLeaveDefault": "Për sajte me trafik të pakët, mund të lini parazgjedhjen prej %s sekondash, dhe të konsultoni krejt raportet në kohë reale.",
+ "SmallTrafficYouCanLeaveDefault": "Për sajte me trafik të pakët, mund të lini parazgjedhjen prej %s sekondash dhe të konsultoni krejt raportet aty për aty.",
"SmtpEncryption": "Fshehtëzim SMTP-je",
"SmtpFromAddress": "Adresë SMTP Nga",
- "SmtpFromEmailHelp": "Vlera parazgjedhje është noreply@{DOMAIN}, ku {DOMAIN} do të zëvendësohet me përkatësinë tuaj Matomo \"%1$s\".<br>Nëse dërgimi i email-eve nuk funksionon për ju, mundet t’ju duhet ta caktoni këtë adresë që të përputhet me emrin tuaj të përdoruesit SMTP.",
+ "SmtpFromEmailHelp": "Vlera parazgjedhje është noreply@{DOMAIN}, ku {DOMAIN} do të zëvendësohet me përkatësinë tuaj Matomo “%1$s”.<br>Nëse dërgimi i email-eve nuk funksionon për ju, mundet t’ju duhet ta caktoni këtë adresë që të përputhet me emrin tuaj të përdoruesit SMTP.",
"SmtpFromName": "Emër SMTP Nga",
"SmtpPassword": "Fjalëkalim SMTP",
"SmtpPort": "Portë SMTP",
"SmtpServerAddress": "Adresë shërbyesi SMTP",
"SmtpUsername": "Emër përdoruesi SMTP",
"Source": "Burim",
- "StatisticsAreNotRecorded": "Ndjekja e Vizitorëve nga Matomo është i çaktivizuar! Riaktivizojeni ndjekjen duke dhënë vlerën record_statistics = 1 te kartela juaj config/config.ini.php.",
+ "StatisticsAreNotRecorded": "Ndjekja e Vizitorëve nga Matomo është e çaktivizuar! Riaktivizojeni ndjekjen duke dhënë vlerën record_statistics = 1 te kartela juaj config/config.ini.php.",
"Subtotal": "Nënshumë",
"Summary": "Përmbledhje",
"Table": "Tabelë",
@@ -455,7 +460,7 @@
"TrackingScopePage": "Faqe",
"TrackingScopeVisit": "Vizitë",
"TransitionsRowActionTooltip": "Shihni se ç’bënë vizitorët para dhe pas parjes së kësaj faqeje",
- "TransitionsRowActionTooltipTitle": "Hap Shpërnguljet",
+ "TransitionsRowActionTooltipTitle": "Hap Tranzicione",
"TranslatorName": "Besnik Bleta",
"UniquePurchases": "Blerje Unike",
"Unknown": "I panjohur",
@@ -467,17 +472,17 @@
"UserIds": "ID-ra përdoruesish",
"Username": "Emër përdoruesi",
"VBarGraph": "Grafik me shtylla vertikale",
- "ValidatorErrorCharacterTooLong": "Vlera përmban \"%1$s\" shenja, por duhet të përmbajë të paktën %2$s shenja.",
- "ValidatorErrorCharacterTooShort": "Vlera përmban \"%1$s\" shenja, por duhet të përmbajë të paktën %2$s shenja.",
+ "ValidatorErrorCharacterTooLong": "Vlera përmban “%1$s” shenja, por duhet të përmbajë të paktën %2$s shenja.",
+ "ValidatorErrorCharacterTooShort": "Vlera përmban “%1$s” shenja, por duhet të përmbajë të paktën %2$s shenja.",
"ValidatorErrorEmptyValue": "Duhet dhënë një vlerë.",
- "ValidatorErrorInvalidDateTimeFormat": "Data \"%1$s\" s’është në formatin e saktë, ju lutemi, përdorni %2$s",
- "ValidatorErrorNoValidRegex": "Vlera \"%s\" s’është një shprehje e rregullt e vlefshme.",
+ "ValidatorErrorInvalidDateTimeFormat": "Data “%1$s” s’është në formatin e saktë, ju lutemi, përdorni %2$s",
+ "ValidatorErrorNoValidRegex": "Vlera “%s” s’është një shprehje e rregullt e vlefshme.",
"ValidatorErrorNotANumber": "Vlera s’është numër.",
- "ValidatorErrorNotEmailLike": "Vlera \"%s\" s’duket si email i vlefshëm.",
- "ValidatorErrorNotUrlLike": "Vlera \"%s\" s’duket si URL.",
- "ValidatorErrorNumberTooHigh": "Vlera \"%1$s\" është shumë e madhe. Vlera duhet të jetë e shumta %2$s",
- "ValidatorErrorNumberTooLow": "Vlera \"%1$s\" është shumë e vogël. Vlera duhet të jetë të paktën %2$s.",
- "ValidatorErrorXNotWhitelisted": "Vlera \"%1$s\" s’është e lejuar, përdorni një nga: %2$s.",
+ "ValidatorErrorNotEmailLike": "Vlera “%s” s’duket si email i vlefshëm.",
+ "ValidatorErrorNotUrlLike": "Vlera “%s” s’duket si URL.",
+ "ValidatorErrorNumberTooHigh": "Vlera “%1$s” është shumë e madhe. Vlera duhet të jetë e shumta %2$s",
+ "ValidatorErrorNumberTooLow": "Vlera “%1$s” është shumë e vogël. Vlera duhet të jetë të paktën %2$s.",
+ "ValidatorErrorXNotWhitelisted": "Vlera “%1$s” s’është e lejuar, përdorni një nga: %2$s.",
"Value": "Vlerë",
"View": "Pamje",
"ViewAccessRequired": "token_auth i përdorur ka shumë fuqi hyrjeje për t’u përdorur në një URL kërkese jo API. Ju lutemi, përdorni një fjalëkalim specifik për aplikacionin për një përdorues që ka vetëm leje parjesh.",
@@ -499,34 +504,34 @@
"VisitorSettings": "Rregullimet për Vizitor",
"Visitors": "Vizitorë",
"VisitsWith": "Vizita me %s",
- "VisualizationDoesNotSupportComparison": "Ky vizualizim nuk mbulon krahasime përgjatë segmentesh/periudhash.",
+ "VisualizationDoesNotSupportComparison": "Ky vizualizim s’mbulon krahasime përgjatë segmentesh/periudhash.",
"Warning": "Sinjalizim",
"WarningDebugOnDemandEnabled": "Mënyra ndjekës %1$s është e aktivizuar. Për arsye sigurie, kjo do të duhej të aktivizohej vetëm për një kohë të shkurtër. Që ta çaktivizoni, caktojeni %2$s si %3$s te %4$s",
"WarningDevelopmentModeOnButNotGitInstalled": "Jeni duke përdorur Matomo-n nën mënyrën zhvillim, por s’qe instaluar përmes git-i. Nuk rekomandohet të përdoret Matomo-ja nën mënyrën zhvillim në një mjedis funksionimi faktik.",
"WarningFileIntegrityNoManifest": "Kontrolli i pacenueshmërisë së kartelës s’u krye dot për shkak të mungesës së manifest.inc.php.",
"WarningFileIntegrityNoManifestDeployingFromGit": "Nëse po kryeni instalim të Matomo-s nga Git, ky mesazh është normal.",
- "WarningFileIntegrityNoMd5file": "Kontrolli i pacenueshmërisë së kartelës s’u plotësua dot për shkak të mungesës së funksionit md5_file().",
+ "WarningFileIntegrityNoMd5file": "Kontrolli i pacenueshmërisë së kartelës s’u plotësua dot, për shkak të mungesës së funksionit md5_file().",
"WarningPasswordStored": "%1$sKujdes:%2$s Ky fjalëkalim do të depozitohet te kartela e formësimit që është e dukshme karshi kujtdo që mund të mbërrijë deri te ajo.",
"WarningPhpVersionXIsTooOld": "Versioni PHP %s që po përdorni, ka mbërritur në Fundin e Vet (EOL). Këshilloheni me forcë ta përmirësoni me një version të tanishëm, ngaqë përdorimi i këtij versioni mund t’ju lërë zbuluar përballë cenueshmërish sigurie dhe të metash që janë ndrequr në versione më të rinj të PHP-së.",
"WarningPiwikWillStopSupportingPHPVersion": "Matomo do të reshtë së mbuluari PHP %1$s në versionin pasues të rëndësishëm. Përmirësojeni PHP-në tuaj të paktën me PHP %2$s, para se të jetë shumë vonë!",
"Warnings": "Sinjalizime",
"Website": "Sajt",
- "Weekly": "Përjavë",
- "WeeklyReport": "përjavë",
+ "Weekly": "Çdo javë",
+ "WeeklyReport": "çdo javë",
"WeeklyReports": "Raporte të përjavshëm",
"WellDone": "Ju lumtë!",
"Widget": "Widget",
"Widgets": "Widget-e",
"XComparedToY": "%1$s krahasuar me %2$s",
"XFromY": "%1$s nga %2$s",
- "YearlyReport": "përvit",
+ "YearlyReport": "çdo vit",
"YearlyReports": "Raporte të përvitshëm",
- "YearsDays": "%1$s vite %2$s ditë",
+ "YearsDays": "%1$s vjet %2$s ditë",
"Yes": "Po",
"YouAreCurrentlyUsing": "Jeni duke përdorur Matomo %s.",
"YouAreViewingDemoMessage": "Po shihni demonstrimin e %1$sMatomo%2$s",
"YouMustBeLoggedIn": "Që të përdorni këtë funksion, duhet të keni bërë hyrjen.",
- "YouMustUpgradePhpVersionToReceiveLatestPiwik": "Që të merrni përditësimin më të ri të Matomo-s duhet të përmirësoni versionin tuaj të PHP-së.",
+ "YouMustUpgradePhpVersionToReceiveLatestPiwik": "Që të merrni përditësimin më të ri të Matomo-s, duhet të përmirësoni versionin tuaj të PHP-së.",
"YourChangesHaveBeenSaved": "Ndryshimet tuaja u ruajtën.",
"YourSessionHasExpired": "Sesioni juaj ka skaduar për shkak plogështie. Që të vazhdohet, ju lutemi, bëni hyrjen."
},
@@ -550,30 +555,30 @@
"EmailUs": "Dërgonani email",
"EnableGraphsLabel": "Shfaq grafikë",
"EnterAuthCode": "Jepni kod mirëfilltësimi",
- "EnterAuthCodeExplanation": "Duket sikur mund të jeni duke përdorur mirëfilltësim dyfaktorësh. Ju lutemi, jepni kodin gjashtëshifror që të hyni në llogarinë tuaj.",
+ "EnterAuthCodeExplanation": "Duket sikur mund të jeni duke përdorur mirëfilltësim dyfaktorësh. Ju lutemi, që të hyni në llogarinë tuaj, jepni kodin gjashtëshifror.",
"EnterCorrectAuthCode": "Jepni kod të saktë mirëfilltësimi",
"EvolutionGraph": "Grafik i Dikurshëm",
"ExceptionNoViewAccess": "Ju lutemi, kontrolloni emrin tuaj të përdoruesit dhe fjalëkalimin dhe sigurohuni se keni hyrje %s për të paktën një sajt.",
- "HelpUsToImprovePiwikMobile": "Do të donit të aktivizonit ndjekje anonime përdorimi në Matomo Mobile?",
- "HowtoDeleteAnAccount": "Që të hiqni një llogari, shtypeni për pak çaste.",
- "HowtoDeleteAnAccountOniOS": "Rrëshqitni gishtin nga e djathta në të majtë që të fshihni një llogari",
- "HowtoExitAndroid": "Ju lutemi, riklikoni mbi BACK që të dilet",
+ "HelpUsToImprovePiwikMobile": "Do të donit të aktivizonit ndjekje anonime përdorimi në Matomo për Celular?",
+ "HowtoDeleteAnAccount": "Që të hiqni një llogari, shtypeni paksa më gjatë.",
+ "HowtoDeleteAnAccountOniOS": "Fërkojeni me gisht nga e djathta në të majtë që të fshihni një llogari",
+ "HowtoExitAndroid": "Ju lutemi, riklikoni mbi MBRAPSHT që të dilet",
"HowtoLoginAnonymous": "Për hyrje anonime, lërini të zbrazëta fushat për emrin e përdoruesit dhe fjalëkalimin",
"HttpIsNotSecureWarning": "Token-i juaj i autorizimit Matomo (token_auth) dërgohet si tekst i dukshëm, nëse përdorni 'HTTP'. Për këtë arsye këshillojmë HTTPS-në për transport të sigurt të të dhënave nëpër internet. Doni të vazhdohet?",
"HttpTimeout": "Mbarim kohe për HTTP-në",
"IgnoreSslError": "Shpërfille Gabimin SSL",
- "IncompatiblePiwikVersion": "Versioni Matomo që përdorni është i papërputhshëm me Matomo Mobile 2. Përditësoni instalimin tuaj të Matomo-s dhe riprovoni, ose instaloni Matomo Mobile 1.",
+ "IncompatiblePiwikVersion": "Versioni Matomo që përdorni është i papërputhshëm me Matomo për Celular 2. Përditësoni instalimin tuaj të Matomo-s dhe riprovoni, ose instaloni Matomo për Celular 1.",
"LastUpdated": "Përditësuar Së Fundi Më: %s",
"LoadingReport": "Po ngarkohet %s",
"LoginCredentials": "Kredenciale",
- "LoginToPiwikToChangeSettings": "Hyni te shërbyesi juaj Matomo që të krijoni dhe përditësoni sajte, përdorues ose për të ndryshuar Rregullime të Përgjithshme, të tilla si \"Raport për ngarkim si parazgjedhje\".",
+ "LoginToPiwikToChangeSettings": "Hyni te shërbyesi juaj Matomo që të krijoni dhe përditësoni sajte apo përdorues, ose për të ndryshuar Rregullime të Përgjithshme, të tilla si “Raport për ngarkim si parazgjedhje”.",
"LoginUseHttps": "Përdor https",
"MatomoMarketplace": "Matomo Marketplace",
"MatomoMobile": "Aplikacioni Matomo Për Celular",
"MultiChartLabel": "Shfaq grafikë vijëzorë",
"NavigationBack": "Mbrapsht",
"NetworkError": "Gabim Rrjeti",
- "NetworkErrorWithStatusCode": "Pati një gabim \"%1$s\". Kërkesa pati si përgjigje gjendjen \"%2$s\". URL-ja qe \"%3$s\". Për më tepër të dhëna rreth gabimit dhe se si të zgjidhet, ju lutemi, kontrolloni URL-në që dhatë dhe regjistrat e gabimeve në këtë shërbyes.",
+ "NetworkErrorWithStatusCode": "Pati një gabim “%1$s”. Kërkesa pati si përgjigje gjendjen “%2$s”. URL-ja qe “%3$s”. Për më tepër të dhëna rreth gabimit dhe se si të zgjidhet, ju lutemi, kontrolloni URL-në që dhatë dhe regjistrat e gabimeve në këtë shërbyes.",
"NetworkErrorWithStatusCodeShort": "Gabim Rrjeti %s",
"NetworkNotReachable": "Rrjet i pakapshëm",
"NoAccountIsSelected": "Duhet të përzgjidhni një llogari. Shtoni një llogari të re, nëse s’keni formësuar një të tillë.",
@@ -584,19 +589,19 @@
"NoVisitorsShort": "S’ka Vizitorë",
"NoWebsiteFound": "S’u gjet sajt",
"NoWebsitesShort": "S’ka Sajte",
- "PossibleSslError": "Mundet të bëhet fjalë për gabim dëshmie SSL",
- "PossibleSslErrorExplanation": "Ndodhi një gabim që mund të jetë shkaktuar nga një dëshmi e pavlefshme ose e vetënënshkruar: \"%s\". Mund të arrini të bëni hyrjen, kur shpërfillni vleftësimin SSL, por është më pak i sigurt. Zgjedhjen për vleftësime SSL mund ta ndryshoni kur të doni, te Rregullimet.",
+ "PossibleSslError": "Mundet të ketë gabim dëshmie SSL",
+ "PossibleSslErrorExplanation": "Ndodhi një gabim që mund të jetë shkaktuar nga një dëshmi e pavlefshme ose e vetënënshkruar: “%s”. Mund të arrini të bëni hyrjen, kur shpërfillni vleftësimin SSL, por është më pak i sigurt. Zgjedhjen për vleftësime SSL mund ta ndryshoni kur të doni, te Rregullimet.",
"PullDownToRefresh": "Tërhiqeni poshtë që të rifreskohet…",
"RatingDontRemindMe": "Mos ma kujto",
"RatingNotNow": "Jo tani",
"RatingNow": "OK, do ta vlerësoj tani",
- "RatingPleaseRateUs": "Aplikacioni Matomo Mobile është Software i Lirë, do ta vlerësonim vërtet, nëse ndaleni një minutë që ta vlerësoni këtë aplikacion te %1$s. Nëse keni sugjerime për veçori të reja ose njoftime të metash, ju lutemi, lidhuni me %2$s",
+ "RatingPleaseRateUs": "Aplikacioni Matomo për Celular është Software i Lirë, do ta vlerësonim vërtet, nëse ndaleni një minutë që ta vlerësoni këtë aplikacion te %1$s. Nëse keni sugjerime për veçori të reja ose njoftime të metash, ju lutemi, lidhuni me %2$s",
"ReleaseToRefresh": "Lëshojeni që të rifreskohet…",
"Reloading": "Po ringarkohet…",
"RequestTimedOutShort": "Gabim Mbarimi Kohe Rrjeti",
"RestrictedCompatibility": "Përputhshmëri e kufizuar",
- "RestrictedCompatibilityExplanation": "Versioni %s i Matomo-s që po përdorni nuk mbulohet plotësisht nga Matomo Mobile 2. Mund të hasni në të meta. Ju këshillojmë ose ta përditësoni Matomo-n me versionin më të ri, ose të përdorni Matomo Mobile 1.",
- "SaveSuccessError": "URL-ja Matomo ose dyshja emër përdoruesi dhe fjalëkalim është e gabuar.",
+ "RestrictedCompatibilityExplanation": "Versioni %s i Matomo-s që po përdorni s’mbulohet plotësisht nga Matomo për Celular 2. Mund të hasni në të meta. Ju këshillojmë ose ta përditësoni Matomo-n me versionin më të ri, ose të përdorni Matomo për Celular 1.",
+ "SaveSuccessError": "URL-ja Matomo, ose dyshja emër përdoruesi dhe fjalëkalim është e gabuar.",
"SearchWebsite": "Kërkoni sajte",
"ShowAll": "Shfaqi krejt",
"ShowLess": "Shfaq më pak",
@@ -611,10 +616,10 @@
},
"RowEvolution": {
"AvailableMetrics": "Vlera të mundshme",
- "CompareDocumentation": "Që të krahasoni disa zëra njëherësh, klikoni mbi lidhjen më poshtë dhe hapeni këtë flluskë për një tjetër rresht nga e njëjta tabelë.<br />Përdorni ndërthurjen Shift-klikim që t’i vini shenjë rreshtit për krahasim, pa hapur këtë flluskë.",
- "CompareRows": "Krahasoni regjistrime",
+ "CompareDocumentation": "Që të krahasoni disa zëra njëherësh, klikoni mbi lidhjen më poshtë dhe hapeni këtë flluskë për një tjetër rresht nga e njëjta tabelë.<br>Që t’i vini shenjë rreshtit për krahasim, pa hapur këtë flluskë, përdorni ndërthurjen Shift-klikim.",
+ "CompareRows": "Krahasoni zëra",
"ComparingRecords": "Po krahasohen %s rreshta",
- "Documentation": "Klikoni mbi vlerat që t’i shfaqni në grafik të mëdhenj evolucioni. Përdorni Shift-klikim që të shfaqni disa vlera njëherësh.",
+ "Documentation": "Klikoni mbi vlerat që t’i shfaqni në grafik të mëdhenj evolucioni. Që të shfaqni disa vlera njëherësh, përdorni Shift-klikim.",
"MetricBetweenText": "nga %1$s në %2$s",
"MetricChangeText": "%s ndryshim përgjatë periudhës",
"MetricMinMax": "%1$s lëvizi mes %2$s dhe %3$s përgjatë periudhës",
diff --git a/lang/sv.json b/lang/sv.json
index c51524e42f..9ff9fe09f9 100644
--- a/lang/sv.json
+++ b/lang/sv.json
@@ -11,11 +11,12 @@
"AfterEntry": "efter att ha anlänt hit",
"All": "Allt",
"AllWebsitesDashboard": "Alla webbplatsers instrumentpanel",
- "AllowPiwikArchivingToTriggerBrowser": "Arkivera rapporter när de visas i den här webbläsaren",
+ "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 det 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 det att du %1$ssätter upp ett cron-jobb%2$s för att behandla rapporterna automatiskt.",
+ "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.",
+ "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",
"AveragePrice": "Genomsnittligt pris",
@@ -148,6 +149,7 @@
"Description": "Beskrivning",
"Desktop": "Stationär",
"Details": "Detaljer",
+ "Disabled": "Inaktiverad",
"Discount": "Rabatt",
"DisplaySimpleTable": "Visa enkel tabell",
"DisplayTableWithGoalMetrics": "Visa en tabell med mer statistik för mål",
@@ -170,6 +172,7 @@
"EncryptedSmtpTransport": "Ange kryptering för transportlagret som krävs för din SMTP-server.",
"Error": "Fel",
"ErrorRequest": "Hoppsan! Ett fel inträffade. Detta kan ha orsakats av ett temporärt serverfel, eller också innehöll rapporten du försökte skapa för mycket data. Vänligen försök igen. Återupprepas felet så %1$skontakta din Matomo-administratör%2$s för hjälp.",
+ "ErrorRequestFaqLink": "Se stegen för att lösa det här problemet i FAQ.",
"ErrorTryAgain": "Fel. Försök igen senare.",
"Errors": "Fel",
"EvolutionOverPeriod": "Utveckling under perioden",
@@ -179,8 +182,9 @@
"ExceptionConfigurationFileExistsButNotReadable": "Konfigurationsfilen %s verkar finnas men Matomo kunde inte läsa in den.",
"ExceptionConfigurationFileNotFound": "Konfigurationsfilen {%s} hittades inte.",
"ExceptionConfigurationFilePleaseCheckReadableByUser": "Kontrollera så att %1$s är läsbar av användare '%2$s'.",
- "ExceptionContactSupportGeneric": "Om detta fel består, %1$skontakta din Matomoadministratör%2$s för hjälp.",
+ "ExceptionContactSupportGeneric": "Om du fortfarande har detta fel, %1$skontakta din Matomoadministratör%2$s för hjälp.",
"ExceptionDatabaseAccess": "Databasåtkomst nekad",
+ "ExceptionDatabaseUnavailable": "MYSQL-servern är inte nåbar",
"ExceptionDatabaseVersion": "Din %1$s version är %2$s men Matomo kräver åtminstone %3$s.",
"ExceptionDatabaseVersionNewerThanCodebase": "Din Matomoinstallation använder den gamla versionen %1$s och vi har upptäckt att din Matomodatabas redan har uppdaterats till den nyare versionen %2$s.",
"ExceptionDatabaseVersionNewerThanCodebaseWait": "Det är möjligt att din Matomoadministratör håller på att uppdatera systemet. Försök igen om några minuter.",
@@ -203,6 +207,7 @@
"ExceptionMethodNotFound": "Metoden '%1$s' finns inte eller är inte tillgänglig i denna modulen '%2$s'.",
"ExceptionMissingFile": "Fil saknas: %s",
"ExceptionNonceMismatch": "Kunde inte verifiera säkerhetsbeviset på detta formulär.",
+ "ExceptionNotSupportedBrowserText": "På grund av säkerhetsproblem stöds inte din webbläsare. Uppgradera till en nyare version.",
"ExceptionNotSupportedBrowserTitle": "Din webbläsare stöds ej.",
"ExceptionPrivilege": "Du kan inte komma åt denna resurs eftersom det kräver %s tillträde.",
"ExceptionPrivilegeAccessWebsite": "Du kommer inte åt den här resursen eftersom det kräver %1$s-behörighet på webbplatsen med ID %2$d.",
@@ -244,6 +249,7 @@
"GraphHelp": "Mer information för visning av grafer i Matomo.",
"HelloUser": "Hej %s",
"Help": "Hjälp",
+ "HelpReport": "Klicka för att visa hjälpinformation om denna rapport",
"HelpResources": "Hjälpresurser",
"HelpTranslatePiwik": "Du kanske vill %1$shjälpa oss att förbättra Matomos översättning%2$s?",
"Hide": "dölj",
@@ -251,6 +257,7 @@
"IP": "IP",
"Id": "Id",
"IfArchivingIsFastYouCanSetupCronRunMoreOften": "Om arkivering går snabbt på din installation, kan du ställa in cron-tabellen att köra oftare.",
+ "IncompletePeriod": "Ofullständig period",
"InfoFor": "Info för %s",
"Installed": "Installerad",
"InvalidDateRange": "Felaktigt datumintervall, försök igen",
@@ -381,6 +388,7 @@
"ReadThisToLearnMore": "%1$sLäs det här för att lära dig mer.%2$s",
"RealTime": "Realtid",
"RearchiveTimeIntervalOnlyForTodayReports": "Detta påverkar endast rapporter för dagens datum (eller andra datumintervall som inkluderar idag)",
+ "Reasons": "Orsaker",
"Recommended": "Rekommenderat",
"RecordsToPlot": "Poster att plotta",
"Refresh": "Uppdatera",
@@ -499,6 +507,7 @@
"VisualizationDoesNotSupportComparison": "Den här visualiseringen stödjer inte jämförelse av segment eller perioder.",
"Warning": "Varning",
"WarningDebugOnDemandEnabled": "Spårningsläge %1$s är aktiverat. Av säkerhetsskäl bör detta endast vara aktiverat under en kortare period. För att avaktivera det, ställ in %2$s till %3$s i %4$s",
+ "WarningDevelopmentModeOnButNotGitInstalled": "Du använder för närvarande Matomo i utvecklingsläge, men det var inte installerat via git. Det rekommenderas att inte använda Matomo i utvecklingsläge i produktionsmiljö.",
"WarningFileIntegrityNoManifest": "Filintegriteten kunde inte kontrolleras eftersom att filen manifest.inc.php saknades.",
"WarningFileIntegrityNoManifestDeployingFromGit": "Om du utvecklar Matomo från Git, är det här meddelandet normalt.",
"WarningFileIntegrityNoMd5file": "Filintegriteten kunde inte slutföras eftersom att funktionen md5_file() saknas.",
diff --git a/lang/zh-cn.json b/lang/zh-cn.json
index 0f7f109c8f..777631fc64 100644
--- a/lang/zh-cn.json
+++ b/lang/zh-cn.json
@@ -149,6 +149,7 @@
"Description": "简介",
"Desktop": "桌面",
"Details": "详情",
+ "Disabled": "关闭",
"Discount": "折扣",
"DisplaySimpleTable": "显示简单报表",
"DisplayTableWithGoalMetrics": "显示目标报表",
diff --git a/matomo.js b/matomo.js
index 4949fc7ca8..c65a25a880 100644
--- a/matomo.js
+++ b/matomo.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
@@ -59,7 +59,7 @@ if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.h
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.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);
+})};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()
diff --git a/phpcs.xml b/phpcs.xml
index 65da90b5b5..daa162365b 100644
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -10,6 +10,7 @@
<file>tests/PHPUnit</file>
<exclude-pattern>tests/PHPUnit/proxy/*</exclude-pattern>
+ <exclude-pattern>tests/javascript/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/libs/*</exclude-pattern>
@@ -26,6 +27,17 @@
<!-- Forbid inline control structures -->
<rule ref="Generic.ControlStructures.InlineControlStructure" />
+ <!-- Forbid unused use statements -->
+ <rule ref="SlevomatCodingStandard.Namespaces.UnusedUses">
+ <properties>
+ <property name="searchAnnotations" value="true"/>
+ <property name="ignoredAnnotations" type="array">
+ <element value="@group"/>
+ <element value="@api"/>
+ </property>
+ </properties>
+ </rule>
+
<!-- Forbid some functions that should not be used (directly) -->
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
diff --git a/piwik.js b/piwik.js
index 4949fc7ca8..c65a25a880 100644
--- a/piwik.js
+++ b/piwik.js
@@ -35,7 +35,7 @@ if(dv===dt){return true}if(dt.slice(0,1)==="."){if(dv===dt.slice(1)){return true
du<aC.length;du++){dt=O(aC[du].toLowerCase());if(dw===dt){return true}if(dt.slice(0,1)==="."){if(dw===dt.slice(1)){return true}dv=dw.length-dt.length;if((dv>0)&&(dw.slice(dv)===dt)){return true}}}return false}function cv(dt,dv){dt=dt.replace("send_image=0","send_image=1");var du=new Image(1,1);du.onload=function(){H=0;if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:true})}};du.onerror=function(){if(typeof dv==="function"){dv({request:dt,trackerUrl:aI,success:false})}};du.src=aI+(aI.indexOf("?")<0?"?":"&")+dt}function cM(dt){if(dj==="POST"){return true}return dt&&(dt.length>2000||dt.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dx,dA,dz){var dv=aP();if(!dv){return false}var dw={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dB=false;var du=aI;try{var dt=new Blob([dx],dw);if(dz&&!cM(dx)){dt=new Blob([],dw);du=du+(du.indexOf("?")<0?"?":"&")+dx}dB=g.sendBeacon(du,dt)}catch(dy){return false
}if(dB&&typeof dA==="function"){dA({request:dx,trackerUrl:aI,success:true,isSendBeacon:true})}return dB}function de(du,dv,dt){if(!M(dt)||null===dt){dt=true}if(m&&bc(du,dv,dt)){return}setTimeout(function(){if(m&&bc(du,dv,dt)){return}var dy;try{var dx=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dx.open("POST",aI,true);dx.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dz=m&&bc(du,dv,dt);if(!dz&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dv==="function")){dv({request:du,trackerUrl:aI,success:true,xhr:this})}}};dx.setRequestHeader("Content-Type",cE);dx.withCredentials=true;dx.send(du)}catch(dw){dy=m&&bc(du,dv,dt);if(!dy&&dt){cv(du,dv)}else{if(typeof dv==="function"){dv({request:du,trackerUrl:aI,success:false})}}}},50)}function cl(du){var dt=new Date();var dv=dt.getTime()+du;if(!r||dv>r){r=dv}}function bg(){bi=true;
cF=new Date().getTime()}function dm(){var dt=new Date().getTime();return !cF||(dt-cF)>bb}function aD(){if(dm()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dm()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dq(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dm()){bX()}}})}function cK(dx){var du=new Date();var dt=du.getTime();c8=dt;if(cJ&&dt<cJ){var dv=cJ-dt;setTimeout(dx,dv);cl(dv+50);cJ+=50;return}if(cJ===false){var dw=800;cJ=dt+dw}dx()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(du,dt,dv){aT();if(!bJ){cT.push(du);return}aA=true;if(!cY&&du){if(cI&&bJ){du+="&consent=1"}cK(function(){if(c5&&bc(du,dv,true)){cl(100);return}if(cM(du)){de(du,dv)}else{cv(du,dv)}cl(dt)})}if(!aS){dq()}}function cq(dt){if(cY){return false}return(dt&&dt.length)}function dd(dt,dx){if(!dx||dx>=dt.length){return[dt]}var du=0;var dv=dt.length;var dw=[];
-for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-86400,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
+for(du;du<dv;du+=dx){dw.push(dt.slice(du,du+dx))}return dw}function dp(du,dt){if(!cq(du)){return}if(!bJ){cT.push(du);return}aA=true;cK(function(){var dx=dd(du,50);var dv=0,dw;for(dv;dv<dx.length;dv++){dw='{"requests":["?'+dx[dv].join('","?')+'"],"send_image":0}';if(c5&&bc(dw,null,false)){cl(100)}else{de(dw,null,false)}}cl(dt)})}function aY(dt){return bq+dt+"."+cc+"."+bv}function b5(dv,du,dt){dn(dv,"",-129600000,du,dt)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dt=bq+"testcookie";dn(dt,"1",undefined,bw,c7,bY,aN);var du=aH(dt)==="1"?"1":"0";b5(dt);return du}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var du,dw,dx={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(du in dx){if(Object.prototype.hasOwnProperty.call(dx,du)){dw=g.mimeTypes[dx[du]];
dh[du]=(dw&&dw.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dv=parseInt(ab.width,10);var dt=parseInt(ab.height,10);dh.res=parseInt(dv,10)+"x"+parseInt(dt,10);return dh}function b3(){var du=aY("cvar"),dt=aH(du);if(dt&&dt.length){dt=W.JSON.parse(dt);if(Z(dt)){return dt}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var dt=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dt)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var du=bl();var dv=aF();var dt=String(du)+dv;return dt}function dc(dv){dv=String(dv);var dy=aF();var dw=dy.length;var dx=dv.substr(-1*dw,dw);
var du=parseInt(dv.substr(0,dv.length-dw),10);if(du&&dx&&dx===dy){var dt=bl();if(a5<=0){return true}if(dt>=du&&dt<=(du+a5)){return true}}return false}function dr(dt){if(!cV){return""}var dx=e(dt,az);if(!dx){return""}dx=String(dx);var dv=new RegExp("^[a-zA-Z0-9]+$");if(dx.length===32&&dv.test(dx)){var du=dx.substr(16,32);if(dc(du)){var dw=dx.substr(0,16);return dw}}return""}function cW(){if(!bU){bU=dr(bT)}var dv=new Date(),dt=Math.round(dv.getTime()/1000),du=aY("id"),dy=aH(du),dx,dw;if(dy){dx=dy.split(".");dx.unshift("0");if(bU.length){dx[1]=bU}return dx}if(bU.length){dw=bU}else{if("0"===cb()){dw=""}else{dw=cZ()}}dx=["1",dw,dt];return dx}function a4(){var dw=cW(),du=dw[0],dv=dw[1],dt=dw[2];return{newVisitor:du,uuid:dv,createTs:dt}}function aL(){var dw=new Date(),du=dw.getTime(),dx=a4().createTs;var dt=parseInt(dx,10);var dv=(dt*1000)+cS-du;return dv}function aR(dt){if(!cc){return}var dv=new Date(),du=Math.round(dv.getTime()/1000);if(!M(dt)){dt=a4()}var dw=dt.uuid+"."+dt.createTs+".";dn(aY("id"),dw,aL(),bw,c7,bY,aN)
}function bS(){var dt=aH(aY("ref"));if(dt.length){try{dt=W.JSON.parse(dt);if(Z(dt)){return dt}}catch(du){}}return["","",0,""]}function bD(dv){var du=bq+"testcookie_domain";var dt="testvalue";dn(du,dt,10000,null,dv,bY,aN);if(aH(du)===dt){b5(du,null,dv);return true}return false}function aJ(){var du=bs;bs=false;var dt,dv;for(dt=0;dt<bB.length;dt++){dv=aY(bB[dt]);if(dv!==cU&&dv!==bj&&0!==aH(dv)){b5(dv,bw,c7)}}bs=du}function b9(dt){cc=dt}function ds(dx){if(!dx||!Z(dx)){return}var dw=[];var dv;for(dv in dx){if(Object.prototype.hasOwnProperty.call(dx,dv)){dw.push(dv)}}var dy={};dw.sort();var dt=dw.length;var du;for(du=0;du<dt;du++){dy[dw[du]]=dx[dw[du]]}return dy}function ci(){dn(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dw="";var du="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dv=du.length;var dt;for(dt=0;dt<6;dt++){dw+=du.charAt(Math.floor(Math.random()*dv))}return dw}function aE(du){if(ct!==""){du+=ct;bn=true;return du}if(!h){return du}var dv=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
@@ -59,7 +59,7 @@ if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.h
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.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);
+})};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()
diff --git a/piwik.min.js b/piwik.min.js
new file mode 100644
index 0000000000..13bbab70ad
--- /dev/null
+++ b/piwik.min.js
@@ -0,0 +1,72 @@
+/*!!!
+ * Matomo - free/libre analytics platform
+ *
+ * JavaScript tracking client
+ *
+ * @link https://piwik.org
+ * @source https://github.com/matomo-org/matomo/blob/master/js/piwik.js
+ * @license https://piwik.org/free-software/bsd/ BSD-3 Clause (also in js/LICENSE.txt)
+ * @license magnet:?xt=urn:btih:c80d50af7d3db9be66a4d0a86db0286e4fd33292&dn=bsd-3-clause.txt BSD-3-Clause
+ */
+;if(typeof _paq!=="object"){_paq=[]}if(typeof window.Matomo!=="object"){window.Matomo=window.Piwik=(function(){var bj,bz={},bb={},aR=document,bu=navigator,a9=screen,aw=window,bt=aw.performance||aw.mozPerformance||aw.msPerformance||aw.webkitPerformance,bh=aw.encodeURIComponent,ax=aw.decodeURIComponent,bq=unescape,aN=[],aV,bg,aP=[],bc=0,a1=0,av=0,bo=false;function bl(a){try{return ax(a)}catch(b){return unescape(a)}}function aL(b){var a=typeof b;return a!=="undefined"}function a5(a){return typeof a==="function"}function at(a){return typeof a==="object"}function bd(a){return typeof a==="string"||a instanceof String}function aQ(a){return typeof a==="number"||a instanceof Number
+}function a7(a){return aL(a)&&(aQ(a)||(bd(a)&&a.length))}function a3(c){if(!c){return true}var a;var b=true;for(a in c){if(Object.prototype.hasOwnProperty.call(c,a)){b=false}}return b}function aJ(a){var b=typeof console;if(b!=="undefined"&&console&&console.error){console.error(a)}}function aT(){var j,a,h,d,e;for(j=0;j<arguments.length;j+=1){e=null;if(arguments[j]&&arguments[j].slice){e=arguments[j].slice()}d=arguments[j];h=d.shift();var i,c;var b=bd(h)&&h.indexOf("::")>0;if(b){i=h.split("::");c=i[0];h=i[1];if("object"===typeof bg[c]&&"function"===typeof bg[c][h]){bg[c][h].apply(bg[c],d)}else{if(e){aP.push(e)}}}else{for(a=0;a<aN.length;a++){if(bd(h)){c=aN[a];var g=h.indexOf(".")>0;if(g){i=h.split(".");if(c&&"object"===typeof c[i[0]]){c=c[i[0]];h=i[1]}else{if(e){aP.push(e);break}}}if(c[h]){c[h].apply(c,d)}else{var f="The method '"+h+'\' was not found in "_paq" variable. Please have a look at the Matomo tracker documentation: https://developer.matomo.org/api-reference/tracking-javascript';
+aJ(f);if(!g){throw new TypeError(f)}}if(h==="addTracker"){break}if(h==="setTrackerUrl"||h==="setSiteId"){break}}else{h.apply(aN[a],d)}}}}}function aD(b,c,d,a){if(b.addEventListener){b.addEventListener(c,d,a);return true}if(b.attachEvent){return b.attachEvent("on"+c,d)}b["on"+c]=d}function bn(a){if(aR.readyState==="complete"){a()}else{if(aw.addEventListener){aw.addEventListener("load",a,false)}else{if(aw.attachEvent){aw.attachEvent("onload",a)}}}}function bk(b){var a=false;if(aR.attachEvent){a=aR.readyState==="complete"}else{a=aR.readyState!=="loading"}if(a){b();return}var c;if(aR.addEventListener){aD(aR,"DOMContentLoaded",function d(){aR.removeEventListener("DOMContentLoaded",d,false);if(!a){a=true;b()}})}else{if(aR.attachEvent){aR.attachEvent("onreadystatechange",function d(){if(aR.readyState==="complete"){aR.detachEvent("onreadystatechange",d);if(!a){a=true;b()}}});if(aR.documentElement.doScroll&&aw===aw.top){(function d(){if(!a){try{aR.documentElement.doScroll("left")}catch(e){setTimeout(d,0);
+return}a=true;b()}}())}}}aD(aw,"load",function(){if(!a){a=true;b()}},false)}function aZ(h,b,e){if(!h){return""}var a="",f,g,d,c;for(f in bz){if(Object.prototype.hasOwnProperty.call(bz,f)){c=bz[f]&&"function"===typeof bz[f][h];if(c){g=bz[f][h];d=g(b||{},e);if(d){a+=d}}}}return a}function aM(){var a;bo=true;aZ("unload");a=new Date();var b=a.getTimeAlias();if((bj-b)>3000){bj=b+3000}if(bj){do{a=new Date()}while(a.getTimeAlias()<bj)}}function bm(b,c){var a=aR.createElement("script");a.type="text/javascript";a.src=b;if(a.readyState){a.onreadystatechange=function(){var d=this.readyState;if(d==="loaded"||d==="complete"){a.onreadystatechange=null;c()}}}else{a.onload=c}aR.getElementsByTagName("head")[0].appendChild(a)}function aI(){var a="";try{a=aw.top.document.referrer}catch(b){if(aw.parent){try{a=aw.parent.document.referrer}catch(c){a=""}}}if(a===""){a=aR.referrer}return a}function bi(a){var b=new RegExp("^([a-z]+):"),c=b.exec(a);return c?c[1]:null}function bx(a){var b=new RegExp("^(?:(?:https?|ftp):)/*(?:[^@]+@)?([^:/#]+)"),c=b.exec(a);
+return c?c[1]:a}function aX(a){return(/^[0-9][0-9]*(\.[0-9]+)?$/).test(a)}function aC(c,b){var a={},d;for(d in c){if(c.hasOwnProperty(d)&&b(c[d])){a[d]=c[d]}}return a}function a6(b){var a={},c;for(c in b){if(b.hasOwnProperty(c)){if(aX(b[c])){a[c]=Math.round(b[c])}else{throw new Error('Parameter "'+c+'" provided value "'+b[c]+'" is not valid. Please provide a numeric value.')}}}return a}function bp(c){var b="",a;for(a in c){if(c.hasOwnProperty(a)){b+="&"+bh(a)+"="+bh(c[a])}}return b}function aK(b,a){b=String(b);return b.lastIndexOf(a,0)===0}function ay(b,a){b=String(b);return b.indexOf(a,b.length-a.length)!==-1}function a8(b,a){b=String(b);return b.indexOf(a)!==-1}function bv(b,a){b=String(b);return b.substr(0,b.length-a)}function aS(e,f,c){e=String(e);if(!c){c=""}var a=e.indexOf("#");var b=e.length;if(a===-1){a=b}var d=e.substr(0,a);var g=e.substr(a,b-a);if(d.indexOf("?")===-1){d+="?"}else{if(!ay(d,"?")){d+="&"}}return d+bh(f)+"="+bh(c)+g}function br(d,c){d=String(d);if(d.indexOf("?"+c+"=")===-1&&d.indexOf("&"+c+"=")===-1){return d
+}var b=d.indexOf("?");if(b===-1){return d}var e=d.substr(b+1);var i=d.substr(0,b);if(e){var h="";var f=e.indexOf("#");if(f!==-1){h=e.substr(f+1);e=e.substr(0,f)}var a;var j=e.split("&");var k=j.length-1;for(k;k>=0;k--){a=j[k].split("=")[0];if(a===c){j.splice(k,1)}}var g=j.join("&");if(g){i=i+"?"+g}if(h){i+="#"+h}}return i}function bw(d,e){var a="[\\?&#]"+e+"=([^&#]*)";var b=new RegExp(a);var c=b.exec(d);return c?bl(c[1]):""}function bA(a){if(a&&String(a)===a){return a.replace(/^\s+|\s+$/g,"")}return a}function aY(a){return unescape(bh(a))}function aF(g){var l=function(u,v){return(u<<v)|(u>>>(32-v))},f=function(u){var w="",v,x;for(v=7;v>=0;v--){x=(u>>>(v*4))&15;w+=x.toString(16)}return w},e,b,c,n=[],r=1732584193,t=4023233417,d=2562383102,h=271733878,j=3285377520,i,k,m,p,q,a,o,s=[];g=aY(g);o=g.length;for(b=0;b<o-3;b+=4){c=g.charCodeAt(b)<<24|g.charCodeAt(b+1)<<16|g.charCodeAt(b+2)<<8|g.charCodeAt(b+3);s.push(c)}switch(o&3){case 0:b=2147483648;break;case 1:b=g.charCodeAt(o-1)<<24|8388608;break;
+case 2:b=g.charCodeAt(o-2)<<24|g.charCodeAt(o-1)<<16|32768;break;case 3:b=g.charCodeAt(o-3)<<24|g.charCodeAt(o-2)<<16|g.charCodeAt(o-1)<<8|128;break}s.push(b);while((s.length&15)!==14){s.push(0)}s.push(o>>>29);s.push((o<<3)&4294967295);for(e=0;e<s.length;e+=16){for(b=0;b<16;b++){n[b]=s[e+b]}for(b=16;b<=79;b++){n[b]=l(n[b-3]^n[b-8]^n[b-14]^n[b-16],1)}i=r;k=t;m=d;p=h;q=j;for(b=0;b<=19;b++){a=(l(i,5)+((k&m)|(~k&p))+q+n[b]+1518500249)&4294967295;q=p;p=m;m=l(k,30);k=i;i=a}for(b=20;b<=39;b++){a=(l(i,5)+(k^m^p)+q+n[b]+1859775393)&4294967295;q=p;p=m;m=l(k,30);k=i;i=a}for(b=40;b<=59;b++){a=(l(i,5)+((k&m)|(k&p)|(m&p))+q+n[b]+2400959708)&4294967295;q=p;p=m;m=l(k,30);k=i;i=a}for(b=60;b<=79;b++){a=(l(i,5)+(k^m^p)+q+n[b]+3395469782)&4294967295;q=p;p=m;m=l(k,30);k=i;i=a}r=(r+i)&4294967295;t=(t+k)&4294967295;d=(d+m)&4294967295;h=(h+p)&4294967295;j=(j+q)&4294967295}a=f(r)+f(t)+f(d)+f(h)+f(j);return a.toLowerCase()}function a2(b,a,c){if(!b){b=""}if(!a){a=""}if(b==="translate.googleusercontent.com"){if(c===""){c=a
+}a=bw(a,"u");b=bx(a)}else{if(b==="cc.bingj.com"||b==="webcache.googleusercontent.com"||b.slice(0,5)==="74.6."){a=aR.links[0].href;b=bx(a)}}return[b,a,c]}function aH(b){var a=b.length;if(b.charAt(--a)==="."){b=b.slice(0,a)}if(b.slice(0,2)==="*."){b=b.slice(1)}if(b.indexOf("/")!==-1){b=b.substr(0,b.indexOf("/"))}return b}function aG(b){b=b&&b.text?b.text:b;if(!bd(b)){var a=aR.getElementsByTagName("title");if(a&&aL(a[0])){b=a[0].text}}return b}function aA(a){if(!a){return[]}if(!aL(a.children)&&aL(a.childNodes)){return a.children}if(aL(a.children)){return a.children}return[]}function au(b,a){if(!b||!a){return false}if(b.contains){return b.contains(a)}if(b===a){return true}if(b.compareDocumentPosition){return !!(b.compareDocumentPosition(a)&16)}return false}function aE(c,b){if(c&&c.indexOf){return c.indexOf(b)}if(!aL(c)||c===null){return -1}if(!c.length){return -1}var a=c.length;if(a===0){return -1}var d=0;while(d<a){if(c[d]===b){return d}d++}return -1}function bs(c){if(!c){return false}function a(f,e){if(aw.getComputedStyle){return aR.defaultView.getComputedStyle(f,null)[e]
+}if(f.currentStyle){return f.currentStyle[e]}}function b(e){e=e.parentNode;while(e){if(e===aR){return true}e=e.parentNode}return false}function d(l,f,e,i,k,h,j){var m=l.parentNode,g=1;if(!b(l)){return false}if(9===m.nodeType){return true}if("0"===a(l,"opacity")||"none"===a(l,"display")||"hidden"===a(l,"visibility")){return false}if(!aL(f)||!aL(e)||!aL(i)||!aL(k)||!aL(h)||!aL(j)){f=l.offsetTop;k=l.offsetLeft;i=f+l.offsetHeight;e=k+l.offsetWidth;h=l.offsetWidth;j=l.offsetHeight}if(c===l&&(0===j||0===h)&&"hidden"===a(l,"overflow")){return false}if(m){if(("hidden"===a(m,"overflow")||"scroll"===a(m,"overflow"))){if(k+g>m.offsetWidth+m.scrollLeft||k+h-g<m.scrollLeft||f+g>m.offsetHeight+m.scrollTop||f+j-g<m.scrollTop){return false}}if(l.offsetParent===m){k+=m.offsetLeft;f+=m.offsetTop}return d(m,f,e,i,k,h,j)}return true}return d(c)}var aU={htmlCollectionToArray:function(b){var a=[],c;if(!b||!b.length){return a}for(c=0;c<b.length;c++){a.push(b[c])}return a},find:function(a){if(!document.querySelectorAll||!a){return[]
+}var b=document.querySelectorAll(a);return this.htmlCollectionToArray(b)},findMultiple:function(c){if(!c||!c.length){return[]}var d,b;var a=[];for(d=0;d<c.length;d++){b=this.find(c[d]);a=a.concat(b)}a=this.makeNodesUnique(a);return a},findNodesByTagName:function(c,a){if(!c||!a||!c.getElementsByTagName){return[]}var b=c.getElementsByTagName(a);return this.htmlCollectionToArray(b)},makeNodesUnique:function(a){var b=[].concat(a);a.sort(function(j,h){if(j===h){return 0}var g=aE(b,j);var i=aE(b,h);if(g===i){return 0}return g>i?-1:1});if(a.length<=1){return a}var f=0;var d=0;var c=[];var e;e=a[f++];while(e){if(e===a[f]){d=c.push(f)}e=a[f++]||null}while(d--){a.splice(c[d],1)}return a},getAttributeValueFromNode:function(b,d){if(!this.hasNodeAttribute(b,d)){return}if(b&&b.getAttribute){return b.getAttribute(d)}if(!b||!b.attributes){return}var c=(typeof b.attributes[d]);if("undefined"===c){return}if(b.attributes[d].value){return b.attributes[d].value}if(b.attributes[d].nodeValue){return b.attributes[d].nodeValue
+}var e;var a=b.attributes;if(!a){return}for(e=0;e<a.length;e++){if(a[e].nodeName===d){return a[e].nodeValue}}return null},hasNodeAttributeWithValue:function(c,a){var b=this.getAttributeValueFromNode(c,a);return !!b},hasNodeAttribute:function(b,a){if(b&&b.hasAttribute){return b.hasAttribute(a)}if(b&&b.attributes){var c=(typeof b.attributes[a]);return"undefined"!==c}return false},hasNodeCssClass:function(b,a){if(b&&a&&b.className){var c=typeof b.className==="string"?b.className.split(" "):[];if(-1!==aE(c,a)){return true}}return false},findNodesHavingAttribute:function(c,e,a){if(!a){a=[]}if(!c||!e){return a}var d=aA(c);if(!d||!d.length){return a}var f,b;for(f=0;f<d.length;f++){b=d[f];if(this.hasNodeAttribute(b,e)){a.push(b)}a=this.findNodesHavingAttribute(b,e,a)}return a},findFirstNodeHavingAttribute:function(b,c){if(!b||!c){return}if(this.hasNodeAttribute(b,c)){return b}var a=this.findNodesHavingAttribute(b,c);if(a&&a.length){return a[0]}},findFirstNodeHavingAttributeWithValue:function(b,c){if(!b||!c){return
+}if(this.hasNodeAttributeWithValue(b,c)){return b}var a=this.findNodesHavingAttribute(b,c);if(!a||!a.length){return}var d;for(d=0;d<a.length;d++){if(this.getAttributeValueFromNode(a[d],c)){return a[d]}}},findNodesHavingCssClass:function(d,e,a){if(!a){a=[]}if(!d||!e){return a}if(d.getElementsByClassName){var c=d.getElementsByClassName(e);return this.htmlCollectionToArray(c)}var f=aA(d);if(!f||!f.length){return[]}var g,b;for(g=0;g<f.length;g++){b=f[g];if(this.hasNodeCssClass(b,e)){a.push(b)}a=this.findNodesHavingCssClass(b,e,a)}return a},findFirstNodeHavingClass:function(b,c){if(!b||!c){return}if(this.hasNodeCssClass(b,c)){return b}var a=this.findNodesHavingCssClass(b,c);if(a&&a.length){return a[0]}},isLinkElement:function(d){if(!d){return false}var a=String(d.nodeName).toLowerCase();var b=["a","area"];var c=aE(b,a);return c!==-1},setAnyAttribute:function(c,a,b){if(!c||!a){return}if(c.setAttribute){c.setAttribute(a,b)}else{c[a]=b}}};var be={CONTENT_ATTR:"data-track-content",CONTENT_CLASS:"matomoTrackContent",LEGACY_CONTENT_CLASS:"piwikTrackContent",CONTENT_NAME_ATTR:"data-content-name",CONTENT_PIECE_ATTR:"data-content-piece",CONTENT_PIECE_CLASS:"matomoContentPiece",LEGACY_CONTENT_PIECE_CLASS:"piwikContentPiece",CONTENT_TARGET_ATTR:"data-content-target",CONTENT_TARGET_CLASS:"matomoContentTarget",LEGACY_CONTENT_TARGET_CLASS:"piwikContentTarget",CONTENT_IGNOREINTERACTION_ATTR:"data-content-ignoreinteraction",CONTENT_IGNOREINTERACTION_CLASS:"matomoContentIgnoreInteraction",LEGACY_CONTENT_IGNOREINTERACTION_CLASS:"piwikContentIgnoreInteraction",location:undefined,findContentNodes:function(){var d="."+this.CONTENT_CLASS;
+var c="."+this.LEGACY_CONTENT_CLASS;var a="["+this.CONTENT_ATTR+"]";var b=aU.findMultiple([d,c,a]);return b},findContentNodesWithinNode:function(b){if(!b){return[]}var d=aU.findNodesHavingCssClass(b,this.CONTENT_CLASS);d=aU.findNodesHavingCssClass(b,this.LEGACY_CONTENT_CLASS,d);var a=aU.findNodesHavingAttribute(b,this.CONTENT_ATTR);if(a&&a.length){var c;for(c=0;c<a.length;c++){d.push(a[c])}}if(aU.hasNodeAttribute(b,this.CONTENT_ATTR)){d.push(b)}else{if(aU.hasNodeCssClass(b,this.CONTENT_CLASS)){d.push(b)}else{if(aU.hasNodeCssClass(b,this.LEGACY_CONTENT_CLASS)){d.push(b)}}}d=aU.makeNodesUnique(d);return d},findParentContentNode:function(c){if(!c){return}var b=c;var a=0;while(b&&b!==aR&&b.parentNode){if(aU.hasNodeAttribute(b,this.CONTENT_ATTR)){return b}if(aU.hasNodeCssClass(b,this.CONTENT_CLASS)){return b}if(aU.hasNodeCssClass(b,this.LEGACY_CONTENT_CLASS)){return b}b=b.parentNode;if(a>1000){break}a++}},findPieceNode:function(b){var a;a=aU.findFirstNodeHavingAttribute(b,this.CONTENT_PIECE_ATTR);
+if(!a){a=aU.findFirstNodeHavingClass(b,this.CONTENT_PIECE_CLASS)}if(!a){a=aU.findFirstNodeHavingClass(b,this.LEGACY_CONTENT_PIECE_CLASS)}if(a){return a}return b},findTargetNodeNoDefault:function(a){if(!a){return}var b=aU.findFirstNodeHavingAttributeWithValue(a,this.CONTENT_TARGET_ATTR);if(b){return b}b=aU.findFirstNodeHavingAttribute(a,this.CONTENT_TARGET_ATTR);if(b){return b}b=aU.findFirstNodeHavingClass(a,this.CONTENT_TARGET_CLASS);if(b){return b}b=aU.findFirstNodeHavingClass(a,this.LEGACY_CONTENT_TARGET_CLASS);if(b){return b}},findTargetNode:function(a){var b=this.findTargetNodeNoDefault(a);if(b){return b}return a},findContentName:function(e){if(!e){return}var b=aU.findFirstNodeHavingAttributeWithValue(e,this.CONTENT_NAME_ATTR);if(b){return aU.getAttributeValueFromNode(b,this.CONTENT_NAME_ATTR)}var a=this.findContentPiece(e);if(a){return this.removeDomainIfIsInLink(a)}if(aU.hasNodeAttributeWithValue(e,"title")){return aU.getAttributeValueFromNode(e,"title")}var d=this.findPieceNode(e);
+if(aU.hasNodeAttributeWithValue(d,"title")){return aU.getAttributeValueFromNode(d,"title")}var c=this.findTargetNode(e);if(aU.hasNodeAttributeWithValue(c,"title")){return aU.getAttributeValueFromNode(c,"title")}},findContentPiece:function(d){if(!d){return}var b=aU.findFirstNodeHavingAttributeWithValue(d,this.CONTENT_PIECE_ATTR);if(b){return aU.getAttributeValueFromNode(b,this.CONTENT_PIECE_ATTR)}var a=this.findPieceNode(d);var c=this.findMediaUrlInNode(a);if(c){return this.toAbsoluteUrl(c)}},findContentTarget:function(c){if(!c){return}var b=this.findTargetNode(c);if(aU.hasNodeAttributeWithValue(b,this.CONTENT_TARGET_ATTR)){return aU.getAttributeValueFromNode(b,this.CONTENT_TARGET_ATTR)}var d;if(aU.hasNodeAttributeWithValue(b,"href")){d=aU.getAttributeValueFromNode(b,"href");return this.toAbsoluteUrl(d)}var a=this.findPieceNode(c);if(aU.hasNodeAttributeWithValue(a,"href")){d=aU.getAttributeValueFromNode(a,"href");return this.toAbsoluteUrl(d)}},isSameDomain:function(a){if(!a||!a.indexOf){return false
+}if(0===a.indexOf(this.getLocation().origin)){return true}var b=a.indexOf(this.getLocation().host);if(8>=b&&0<=b){return true}return false},removeDomainIfIsInLink:function(b){var c="^https?://[^/]+";var a="^.*//[^/]+";if(b&&b.search&&-1!==b.search(new RegExp(c))&&this.isSameDomain(b)){b=b.replace(new RegExp(a),"");if(!b){b="/"}}return b},findMediaUrlInNode:function(d){if(!d){return}var f=["img","embed","video","audio"];var a=d.nodeName.toLowerCase();if(-1!==aE(f,a)&&aU.findFirstNodeHavingAttributeWithValue(d,"src")){var e=aU.findFirstNodeHavingAttributeWithValue(d,"src");return aU.getAttributeValueFromNode(e,"src")}if(a==="object"&&aU.hasNodeAttributeWithValue(d,"data")){return aU.getAttributeValueFromNode(d,"data")}if(a==="object"){var c=aU.findNodesByTagName(d,"param");if(c&&c.length){var g;for(g=0;g<c.length;g++){if("movie"===aU.getAttributeValueFromNode(c[g],"name")&&aU.hasNodeAttributeWithValue(c[g],"value")){return aU.getAttributeValueFromNode(c[g],"value")}}}var b=aU.findNodesByTagName(d,"embed");
+if(b&&b.length){return this.findMediaUrlInNode(b[0])}}},trim:function(a){return bA(a)},isOrWasNodeInViewport:function(b){if(!b||!b.getBoundingClientRect||b.nodeType!==1){return true}var c=b.getBoundingClientRect();var d=aR.documentElement||{};var e=c.top<0;if(e&&b.offsetTop){e=(b.offsetTop+c.height)>0}var f=d.clientWidth;if(aw.innerWidth&&f>aw.innerWidth){f=aw.innerWidth}var a=d.clientHeight;if(aw.innerHeight&&a>aw.innerHeight){a=aw.innerHeight}return((c.bottom>0||e)&&c.right>0&&c.left<f&&((c.top<a)||e))},isNodeVisible:function(c){var a=bs(c);var b=this.isOrWasNodeInViewport(c);return a&&b},buildInteractionRequestParams:function(a,e,d,c){var b="";if(a){b+="c_i="+bh(a)}if(e){if(b){b+="&"}b+="c_n="+bh(e)}if(d){if(b){b+="&"}b+="c_p="+bh(d)}if(c){if(b){b+="&"}b+="c_t="+bh(c)}if(b){b+="&ca=1"}return b},buildImpressionRequestParams:function(a,d,c){var b="c_n="+bh(a)+"&c_p="+bh(d);if(c){b+="&c_t="+bh(c)}if(b){b+="&ca=1"}return b},buildContentBlock:function(c){if(!c){return}var a=this.findContentName(c);
+var d=this.findContentPiece(c);var b=this.findContentTarget(c);a=this.trim(a);d=this.trim(d);b=this.trim(b);return{name:a||"Unknown",piece:d||"Unknown",target:b||""}},collectContent:function(b){if(!b||!b.length){return[]}var c=[];var a,d;for(a=0;a<b.length;a++){d=this.buildContentBlock(b[a]);if(aL(d)){c.push(d)}}return c},setLocation:function(a){this.location=a},getLocation:function(){var a=this.location||aw.location;if(!a.origin){a.origin=a.protocol+"//"+a.hostname+(a.port?":"+a.port:"")}return a},toAbsoluteUrl:function(c){if((!c||String(c)!==c)&&c!==""){return c}if(""===c){return this.getLocation().href}if(c.search(/^\/\//)!==-1){return this.getLocation().protocol+c}if(c.search(/:\/\//)!==-1){return c}if(0===c.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+c}if(0===c.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+c}if(0===c.search("^[a-zA-Z]{2,11}:")){return c}if(c.search(/^\//)!==-1){return this.getLocation().origin+c}var a="(.*/)";
+var b=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(a))[0];return b+c},isUrlToCurrentDomain:function(c){var b=this.toAbsoluteUrl(c);if(!b){return false}var a=this.getLocation().origin;if(a===b){return true}if(0===String(b).indexOf(a)){if(":"===String(b).substr(a.length,1)){return false}return true}return false},setHrefAttribute:function(b,a){if(!b||!a){return}aU.setAnyAttribute(b,"href",a)},shouldIgnoreInteraction:function(a){if(aU.hasNodeAttribute(a,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(aU.hasNodeCssClass(a,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(aU.hasNodeCssClass(a,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function ba(e,b){if(b){return b}e=be.toAbsoluteUrl(e);if(a8(e,"?")){var c=e.indexOf("?");e=e.slice(0,c)}if(ay(e,"matomo.php")){e=bv(e,"matomo.php".length)}else{if(ay(e,"piwik.php")){e=bv(e,"piwik.php".length)}else{if(ay(e,".php")){var a=e.lastIndexOf("/");var d=1;e=e.slice(0,a+d)}}}if(ay(e,"/js/")){e=bv(e,"js/".length)
+}return e}function aB(h){var f="Matomo_Overlay";var d=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=[^&]*)?");var c=d.exec(aR.referrer);if(c){var a=c[1];if(a!==String(h)){return false}var i=c[2],e=c[3],b=c[4];if(!b){b=""}else{if(b.indexOf("&segment=")===0){b=b.substr("&segment=".length)}}aw.name=f+"###"+i+"###"+e+"###"+b}var g=aw.name.split("###");return g.length===4&&g[0]===f}function a4(h,b,g){var c=aw.name.split("###"),e=c[1],a=c[2],f=c[3],d=ba(h,b);bm(d+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(d,g,e,a,f)})}function bf(){var b;try{b=aw.frameElement}catch(c){return true}if(aL(b)){return(b&&String(b.nodeName).toLowerCase()==="iframe")?true:false}try{return aw.self!==aw.top}catch(a){return true}}function az(R,V){var dL=this,cp="mtm_consent",co="mtm_cookie_consent",an="mtm_consent_removed",aa=a2(aR.domain,aw.location.href,aI()),dI=aH(aa[0]),dC=bl(aa[1]),ak=bl(aa[2]),dN=false,N="GET",r=N,ep="application/x-www-form-urlencoded; charset=UTF-8",dc=ep,et=R||"",dM="",dq="",H="",Y=V||"",dW="",dA="",di,cd="",u=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ez=[dI],dV=[],M=[],dH=[],cz=[],dJ=500,dD=true,cc,dg,dr,dy,dz,E=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],dO=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],cb="_pk_",dk="pk_vid",d=180,dx,ah,dp=false,eo="Lax",ao=false,af,cn,dZ,ar=33955200000,G=1800000,v=15768000000,a=true,dQ=false,ci=false,du=false,d9=false,T,ei={},I={},am={},d1=200,dj={},A={},t={},U=[],Q=false,cr=false,dw=false,s=false,al=false,ef=false,cs=bf(),da=null,dv=null,d6,dT,X=aF,ai,ej,dU=false,D=0,d0=["id","ses","cvar","ref"],cu=false,dS=null,ap=[],B=[],eA=av++,eB=false,dB=true;
+try{cd=aR.title}catch(cy){cd=""}function eu(bB){if(ao){return 0}var bD=new RegExp("(^|;)[ ]*"+bB+"=([^;]*)"),bC=bD.exec(aR.cookie);return bC?ax(bC[2]):0}dS=!eu(an);function n(bJ,bI,bF,bG,bC,bB,bH){if(ao&&bJ!==an){return}var bD;if(bF){bD=new Date();bD.setTime(bD.getTime()+bF)}if(!bH){bH="Lax"}aR.cookie=bJ+"="+bh(bI)+(bF?";expires="+bD.toGMTString():"")+";path="+(bG||"/")+(bC?";domain="+bC:"")+(bB?";secure":"")+";SameSite="+bH;if((!bF||bF>=0)&&eu(bJ)!==String(bI)){var bE="There was an error setting cookie `"+bJ+"`. Please check domain and path.";aJ(bE)}}function d7(bD){var bB,bC;bD=br(bD,dk);for(bC=0;bC<M.length;bC++){bD=br(bD,M[bC])}if(dy){bB=new RegExp("#.*");return bD.replace(bB,"")}return bD}function ek(bC,bE){var bB=bi(bE),bD;if(bB){return bE}if(bE.slice(0,1)==="/"){return bi(bC)+"://"+bx(bC)+bE}bC=d7(bC);bD=bC.indexOf("?");if(bD>=0){bC=bC.slice(0,bD)}bD=bC.lastIndexOf("/");if(bD!==bC.length-1){bC=bC.slice(0,bD+1)}return bC+bE}function cf(bB,bD){var bC;bB=String(bB).toLowerCase();bD=String(bD).toLowerCase();
+if(bB===bD){return true}if(bD.slice(0,1)==="."){if(bB===bD.slice(1)){return true}bC=bB.length-bD.length;if((bC>0)&&(bB.slice(bC)===bD)){return true}}return false}function J(bC){var bB=document.createElement("a");if(bC.indexOf("//")!==0&&bC.indexOf("http")!==0){if(bC.indexOf("*")===0){bC=bC.substr(1)}if(bC.indexOf(".")===0){bC=bC.substr(1)}bC="http://"+bC}bB.href=be.toAbsoluteUrl(bC);if(bB.pathname){return bB.pathname}return""}function eC(bC,bD){if(!aK(bD,"/")){bD="/"+bD}if(!aK(bC,"/")){bC="/"+bC}var bB=(bD==="/"||bD==="/*");if(bB){return true}if(bC===bD){return true}bD=String(bD).toLowerCase();bC=String(bC).toLowerCase();if(ay(bD,"*")){bD=bD.slice(0,-1);bB=(!bD||bD==="/");if(bB){return true}if(bC===bD){return true}return bC.indexOf(bD)===0}if(!ay(bC,"/")){bC+="/"}if(!ay(bD,"/")){bD+="/"}return bC.indexOf(bD)===0}function ds(bD,bB){var bG,bH,bF,bE,bC;for(bG=0;bG<ez.length;bG++){bE=aH(ez[bG]);bC=J(ez[bG]);if(cf(bD,bE)&&eC(bB,bC)){return true}}return false}function h(bB){var bD,bE,bC;for(bD=0;
+bD<ez.length;bD++){bE=aH(ez[bD].toLowerCase());if(bB===bE){return true}if(bE.slice(0,1)==="."){if(bB===bE.slice(1)){return true}bC=bB.length-bE.length;if((bC>0)&&(bB.slice(bC)===bE)){return true}}}return false}function F(bD,bB){bD=bD.replace("send_image=0","send_image=1");var bC=new Image(1,1);bC.onload=function(){aV=0;if(typeof bB==="function"){bB({request:bD,trackerUrl:et,success:true})}};bC.onerror=function(){if(typeof bB==="function"){bB({request:bD,trackerUrl:et,success:false})}};bC.src=et+(et.indexOf("?")<0?"?":"&")+bD}function cl(bB){if(r==="POST"){return true}return bB&&(bB.length>2000||bB.indexOf('{"requests"')===0)}function el(){return"object"===typeof bu&&"function"===typeof bu.sendBeacon&&"function"===typeof Blob}function de(bJ,bG,bH){var bC=el();if(!bC){return false}var bB={type:"application/x-www-form-urlencoded; charset=UTF-8"};var bF=false;var bD=et;try{var bE=new Blob([bJ],bB);if(bH&&!cl(bJ)){bE=new Blob([],bB);bD=bD+(bD.indexOf("?")<0?"?":"&")+bJ}bF=bu.sendBeacon(bD,bE)
+}catch(bI){return false}if(bF&&typeof bG==="function"){bG({request:bJ,trackerUrl:et,success:true,isSendBeacon:true})}return bF}function w(bC,bB,bD){if(!aL(bD)||null===bD){bD=true}if(bo&&de(bC,bB,bD)){return}setTimeout(function(){if(bo&&de(bC,bB,bD)){return}var bE;try{var bF=aw.XMLHttpRequest?new aw.XMLHttpRequest():aw.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;bF.open("POST",et,true);bF.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var bH=bo&&de(bC,bB,bD);if(!bH&&bD){F(bC,bB)}else{if(typeof bB==="function"){bB({request:bC,trackerUrl:et,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof bB==="function")){bB({request:bC,trackerUrl:et,success:true,xhr:this})}}};bF.setRequestHeader("Content-Type",dc);bF.withCredentials=true;bF.send(bC)}catch(bG){bE=bo&&de(bC,bB,bD);if(!bE&&bD){F(bC,bB)}else{if(typeof bB==="function"){bB({request:bC,trackerUrl:et,success:false})}}}},50)}function P(bC){var bD=new Date();var bB=bD.getTime()+bC;
+if(!bj||bB>bj){bj=bB}}function cw(){cs=true;da=new Date().getTime()}function o(){var bB=new Date().getTime();return !da||(bB-da)>dg}function ey(){if(o()){dr()}}function i(){if(aR.visibilityState==="hidden"&&o()){dr()}else{if(aR.visibilityState==="visible"){da=new Date().getTime()}}}function l(){if(ef||!dg){return}ef=true;aD(aw,"focus",cw);aD(aw,"blur",ey);aD(aw,"visibilitychange",i);a1++;bg.addPlugin("HeartBeat"+a1,{unload:function(){if(ef&&o()){dr()}}})}function cq(bB){var bE=new Date();var bF=bE.getTime();dv=bF;if(cr&&bF<cr){var bD=cr-bF;setTimeout(bB,bD);P(bD+50);cr+=50;return}if(cr===false){var bC=800;cr=bF+bC}bB()}function ec(){if(eu(an)){dS=false}else{if(eu(cp)){dS=true}}}function dP(bC,bD,bB){ec();if(!dS){ap.push(bC);return}eB=true;if(!af&&bC){if(cu&&dS){bC+="&consent=1"}cq(function(){if(dD&&de(bC,bB,true)){P(100);return}if(cl(bC)){w(bC,bB)}else{F(bC,bB)}P(bD)})}if(!ef){l()}}function K(bB){if(af){return false}return(bB&&bB.length)}function x(bF,bB){if(!bB||bB>=bF.length){return[bF]
+}var bE=0;var bD=bF.length;var bC=[];for(bE;bE<bD;bE+=bB){bC.push(bF.slice(bE,bE+bB))}return bC}function m(bB,bC){if(!K(bB)){return}if(!dS){ap.push(bB);return}eB=true;cq(function(){var bD=x(bB,50);var bF=0,bE;for(bF;bF<bD.length;bF++){bE='{"requests":["?'+bD[bF].join('","?')+'"],"send_image":0}';if(dD&&de(bE,null,false)){P(100)}else{w(bE,null,false)}}P(bC)})}function d3(bB){return cb+bB+"."+Y+"."+ai}function ed(bB,bC,bD){n(bB,"",-86400,bC,bD)}function Z(){if(ao){return"0"}if(!aL(aw.showModalDialog)&&aL(bu.cookieEnabled)){return bu.cookieEnabled?"1":"0"}var bC=cb+"testcookie";n(bC,"1",undefined,ah,dx,dp,eo);var bB=eu(bC)==="1"?"1":"0";ed(bC);return bB}function cg(){ai=X((dx||dI)+(ah||"/")).slice(0,4)}function ce(){if(!dB){return{}}if(aL(t.res)){return t}var bE,bC,bB={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(bu.userAgent))){if(bu.mimeTypes&&bu.mimeTypes.length){for(bE in bB){if(Object.prototype.hasOwnProperty.call(bB,bE)){bC=bu.mimeTypes[bB[bE]];
+t[bE]=(bC&&bC.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(bu.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&aL(bu.javaEnabled)&&bu.javaEnabled()){t.java="1"}if(!aL(aw.showModalDialog)&&aL(bu.cookieEnabled)){t.cookie=bu.cookieEnabled?"1":"0"}else{t.cookie=Z()}}var bD=parseInt(a9.width,10);var bF=parseInt(a9.height,10);t.res=parseInt(bD,10)+"x"+parseInt(bF,10);return t}function eg(){var bB=d3("cvar"),bC=eu(bB);if(bC&&bC.length){bC=aw.JSON.parse(bC);if(at(bC)){return bC}}return{}}function cj(){if(d9===false){d9=eg()}}function ad(){var bB=ce();return X((bu.userAgent||"")+(bu.platform||"")+aw.JSON.stringify(bB)+(new Date()).getTime()+Math.random()).slice(0,16)}function ew(){var bB=ce();return X((bu.userAgent||"")+(bu.platform||"")+aw.JSON.stringify(bB)).slice(0,6)}function cm(){return Math.floor((new Date()).getTime()/1000)}function en(){var bC=cm();var bB=ew();var bD=String(bC)+bB;return bD}function y(bE){bE=String(bE);var bB=ew();var bD=bB.length;var bC=bE.substr(-1*bD,bD);
+var bF=parseInt(bE.substr(0,bE.length-bD),10);if(bF&&bC&&bC===bB){var bG=cm();if(d<=0){return true}if(bG>=bF&&bG<=(bF+d)){return true}}return false}function k(bF){if(!al){return""}var bB=bw(bF,dk);if(!bB){return""}bB=String(bB);var bD=new RegExp("^[a-zA-Z0-9]+$");if(bB.length===32&&bD.test(bB)){var bE=bB.substr(16,32);if(y(bE)){var bC=bB.substr(0,16);return bC}}return""}function aj(){if(!dA){dA=k(dC)}var bE=new Date(),bG=Math.round(bE.getTime()/1000),bF=d3("id"),bB=eu(bF),bC,bD;if(bB){bC=bB.split(".");bC.unshift("0");if(dA.length){bC[1]=dA}return bC}if(dA.length){bD=dA}else{if("0"===Z()){bD=""}else{bD=ad()}}bC=["1",bD,bG];return bC}function e(){var bB=aj(),bD=bB[0],bC=bB[1],bE=bB[2];return{newVisitor:bD,uuid:bC,createTs:bE}}function eq(){var bC=new Date(),bE=bC.getTime(),bB=e().createTs;var bF=parseInt(bB,10);var bD=(bF*1000)+ar-bE;return bD}function eh(bE){if(!Y){return}var bC=new Date(),bD=Math.round(bC.getTime()/1000);if(!aL(bE)){bE=e()}var bB=bE.uuid+"."+bE.createTs+".";n(d3("id"),bB,eq(),ah,dx,dp,eo)
+}function dF(){var bC=eu(d3("ref"));if(bC.length){try{bC=aw.JSON.parse(bC);if(at(bC)){return bC}}catch(bB){}}return["","",0,""]}function dY(bB){var bC=cb+"testcookie_domain";var bD="testvalue";n(bC,bD,10000,null,bB,dp,eo);if(eu(bC)===bD){ed(bC,null,bB);return true}return false}function es(){var bC=ao;ao=false;var bD,bB;for(bD=0;bD<d0.length;bD++){bB=d3(d0[bD]);if(bB!==an&&bB!==cp&&0!==eu(bB)){ed(bB,ah,dx)}}ao=bC}function d5(bB){Y=bB}function j(bC){if(!bC||!at(bC)){return}var bD=[];var bE;for(bE in bC){if(Object.prototype.hasOwnProperty.call(bC,bE)){bD.push(bE)}}var bB={};bD.sort();var bG=bD.length;var bF;for(bF=0;bF<bG;bF++){bB[bD[bF]]=bC[bD[bF]]}return bB}function S(){n(d3("ses"),"1",G,ah,dx,dp,eo)}function ck(){var bB="";var bD="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var bC=bD.length;var bE;for(bE=0;bE<6;bE++){bB+=bD.charAt(Math.floor(Math.random()*bC))}return bB}function ex(bC){if(H!==""){bC+=H;ci=true;return bC}if(!bt){return bC}var bB=(typeof bt.timing==="object")&&bt.timing?bt.timing:undefined;
+if(!bB){bB=(typeof bt.getEntriesByType==="function")&&bt.getEntriesByType("navigation")?bt.getEntriesByType("navigation")[0]:undefined}if(!bB){return bC}var bD="";if(bB.connectEnd&&bB.fetchStart){if(bB.connectEnd<bB.fetchStart){return}bD+="&pf_net="+Math.round(bB.connectEnd-bB.fetchStart)}if(bB.responseStart&&bB.requestStart){if(bB.responseStart<bB.requestStart){return}bD+="&pf_srv="+Math.round(bB.responseStart-bB.requestStart)}if(bB.responseStart&&bB.responseEnd){if(bB.responseEnd<bB.responseStart){return}bD+="&pf_tfr="+Math.round(bB.responseEnd-bB.responseStart)}if(aL(bB.domLoading)){if(bB.domInteractive&&bB.domLoading){if(bB.domInteractive<bB.domLoading){return}bD+="&pf_dm1="+Math.round(bB.domInteractive-bB.domLoading)}}else{if(bB.domInteractive&&bB.responseEnd){if(bB.domInteractive<bB.responseEnd){return}bD+="&pf_dm1="+Math.round(bB.domInteractive-bB.responseEnd)}}if(bB.domComplete&&bB.domInteractive){if(bB.domComplete<bB.domInteractive){return}bD+="&pf_dm2="+Math.round(bB.domComplete-bB.domInteractive)
+}if(bB.loadEventEnd&&bB.loadEventStart){if(bB.loadEventEnd<bB.loadEventStart){return}bD+="&pf_onl="+Math.round(bB.loadEventEnd-bB.loadEventStart)}return bC+bD}function C(bV,bH,bG){var bI,bX=new Date(),b1=Math.round(bX.getTime()/1000),bN,bK,bT=1024,bB,b0,bL=d9,bR=d3("ses"),bP=d3("ref"),bU=d3("cvar"),bS=eu(bR),bJ=dF(),bF=di||dC,b3,bZ;if(ao){es()}if(af){return""}var bQ=e();var bW=aR.characterSet||aR.charset;if(!bW||bW.toLowerCase()==="utf-8"){bW=null}b3=bJ[0];bZ=bJ[1];bN=bJ[2];bK=bJ[3];if(!bS){if(!dZ||!b3.length){for(bI in E){if(Object.prototype.hasOwnProperty.call(E,bI)){b3=bw(bF,E[bI]);if(b3.length){break}}}for(bI in dO){if(Object.prototype.hasOwnProperty.call(dO,bI)){bZ=bw(bF,dO[bI]);if(bZ.length){break}}}}bB=bx(ak);b0=bK.length?bx(bK):"";if(bB.length&&!h(bB)&&(!dZ||!b0.length||h(b0))){bK=ak}if(bK.length||b3.length){bN=b1;bJ=[b3,bZ,bN,d7(bK.slice(0,bT))];n(bP,aw.JSON.stringify(bJ),v,ah,dx,dp,eo)}}bV+="&idsite="+Y+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+bX.getHours()+"&m="+bX.getMinutes()+"&s="+bX.getSeconds()+"&url="+bh(d7(bF))+(ak.length?"&urlref="+bh(d7(ak)):"")+(a7(dW)?"&uid="+bh(dW):"")+"&_id="+bQ.uuid+"&_idn="+bQ.newVisitor+(b3.length?"&_rcn="+bh(b3):"")+(bZ.length?"&_rck="+bh(bZ):"")+"&_refts="+bN+(String(bK).length?"&_ref="+bh(d7(bK.slice(0,bT))):"")+(bW?"&cs="+bh(bW):"")+"&send_image=0";
+var bC=ce();for(bI in bC){if(Object.prototype.hasOwnProperty.call(bC,bI)){bV+="&"+bI+"="+bC[bI]}}var bD=[];if(bH){for(bI in bH){if(Object.prototype.hasOwnProperty.call(bH,bI)&&/^dimension\d+$/.test(bI)){var bO=bI.replace("dimension","");bD.push(parseInt(bO,10));bD.push(String(bO));bV+="&"+bI+"="+bh(bH[bI]);delete bH[bI]}}}if(bH&&a3(bH)){bH=null}for(bI in dj){if(Object.prototype.hasOwnProperty.call(dj,bI)){bV+="&"+bI+"="+bh(dj[bI])}}for(bI in am){if(Object.prototype.hasOwnProperty.call(am,bI)){var bY=(-1===aE(bD,bI));if(bY){bV+="&dimension"+bI+"="+bh(am[bI])}}}if(bH){bV+="&data="+bh(aw.JSON.stringify(bH))}else{if(dz){bV+="&data="+bh(aw.JSON.stringify(dz))}}function b2(b6,b5){var b4=aw.JSON.stringify(b6);if(b4.length>2){return"&"+b5+"="+bh(b4)}return""}var bE=j(ei);var bM=j(I);bV+=b2(bE,"cvar");bV+=b2(bM,"e_cvar");if(d9){bV+=b2(d9,"_cvar");for(bI in bL){if(Object.prototype.hasOwnProperty.call(bL,bI)){if(d9[bI][0]===""||d9[bI][1]===""){delete d9[bI]}}}if(du){n(bU,aw.JSON.stringify(d9),G,ah,dx,dp,eo)
+}}if(a&&dQ&&!ci){bV=ex(bV);ci=true}if(ej){bV+="&pv_id="+ej}eh(bQ);S();bV+=aZ(bG,{tracker:dL,request:bV});if(dq.length){bV+="&"+dq}if(a5(T)){bV=T(bV)}return bV}dr=function db(){var bB=new Date();bB=bB.getTime();if(!dv){return false}if(dv+dg<=bB){dL.ping();return true}return false};function ae(bB,bC,bI,bL,bE,bF){var bJ="idgoal=0",bD=new Date(),bH=[],bG,bK=String(bB).length;if(bK){bJ+="&ec_id="+bh(bB)}bJ+="&revenue="+bC;if(String(bI).length){bJ+="&ec_st="+bI}if(String(bL).length){bJ+="&ec_tx="+bL}if(String(bE).length){bJ+="&ec_sh="+bE}if(String(bF).length){bJ+="&ec_dt="+bF}if(A){for(bG in A){if(Object.prototype.hasOwnProperty.call(A,bG)){if(!aL(A[bG][1])){A[bG][1]=""}if(!aL(A[bG][2])){A[bG][2]=""}if(!aL(A[bG][3])||String(A[bG][3]).length===0){A[bG][3]=0}if(!aL(A[bG][4])||String(A[bG][4]).length===0){A[bG][4]=1}bH.push(A[bG])}}bJ+="&ec_items="+bh(aw.JSON.stringify(bH))}bJ=C(bJ,dz,"ecommerce");dP(bJ,dJ);if(bK){A={}}}function ee(bG,bC,bD,bE,bF,bB){if(String(bG).length&&aL(bC)){ae(bG,bC,bD,bE,bF,bB)
+}}function ab(bB){if(aL(bB)){ae("",bB,"","","","")}}function eb(bD,bB,bC){if(!dU){ej=ck()}var bE=C("action_name="+bh(aG(bD||cd)),bB,"log");if(a&&!ci){bE=ex(bE)}dP(bE,dJ,bC)}function c(bC,bD){var bB,bE="(^| )(piwik[_-]"+bD+"|matomo[_-]"+bD;if(bC){for(bB=0;bB<bC.length;bB++){bE+="|"+bC[bB]}}bE+=")( |$)";return new RegExp(bE)}function d2(bB){return(et&&bB&&0===String(bB).indexOf(et))}function df(bD,bH,bC,bG){if(d2(bH)){return 0}var bE=c(dH,"download"),bF=c(cz,"link"),bB=new RegExp("\\.("+u.join("|")+")([?&#]|$)","i");if(bF.test(bD)){return"link"}if(bG||bE.test(bD)||bB.test(bH)){return"download"}if(bC){return 0}return"link"}function dm(bB){var bC;bC=bB.parentNode;while(bC!==null&&aL(bC)){if(aU.isLinkElement(bB)){break}bB=bC;bC=bB.parentNode}return bB}function p(bC){bC=dm(bC);if(!aU.hasNodeAttribute(bC,"href")){return}if(!aL(bC.href)){return}var bE=aU.getAttributeValueFromNode(bC,"href");var bH=bC.pathname||J(bC.href);var bB=bC.hostname||bx(bC.href);var bD=bB.toLowerCase();var bG=bC.href.replace(bB,bD);
+var bF=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!bF.test(bG)){var bI=df(bC.className,bG,ds(bD,bH),aU.hasNodeAttribute(bC,"download"));if(bI){return{type:bI,href:bG}}}}function ea(bF,bE,bD,bC){var bB=be.buildInteractionRequestParams(bF,bE,bD,bC);if(!bB){return}return C(bB,null,"contentInteraction")}function ct(bD,bC){if(!bD||!bC){return false}var bB=be.findTargetNode(bD);if(be.shouldIgnoreInteraction(bB)){return false}bB=be.findTargetNodeNoDefault(bD);if(bB&&!au(bB,bC)){return false}return true}function dh(bD,bE,bB){if(!bD){return}var bF=be.findParentContentNode(bD);if(!bF){return}if(!ct(bF,bD)){return}var bC=be.buildContentBlock(bF);if(!bC){return}if(!bC.target&&bB){bC.target=bB}return be.buildInteractionRequestParams(bE,bC.name,bC.piece,bC.target)}function g(bC){if(!U||!U.length){return false}var bD,bB;for(bD=0;bD<U.length;bD++){bB=U[bD];if(bB&&bB.name===bC.name&&bB.piece===bC.piece&&bB.target===bC.target){return true}}return false}function f(bB){return function(bD){if(!bB){return
+}var bF=be.findParentContentNode(bB);var bG;if(bD){bG=bD.target||bD.srcElement}if(!bG){bG=bB}if(!ct(bF,bG)){return}if(!bF){return false}var bC=be.findTargetNode(bF);if(!bC||be.shouldIgnoreInteraction(bC)){return false}var bE=p(bC);if(s&&bE&&bE.type){return bE.type}return dL.trackContentInteractionNode(bG,"click")}}function d8(bB){if(!bB||!bB.length){return}var bD,bC;for(bD=0;bD<bB.length;bD++){bC=be.findTargetNode(bB[bD]);if(bC&&!bC.contentInteractionTrackingSetupDone){bC.contentInteractionTrackingSetupDone=true;aD(bC,"click",f(bC))}}}function dX(bD,bC){if(!bD||!bD.length){return[]}var bF,bE;for(bF=0;bF<bD.length;bF++){if(g(bD[bF])){bD.splice(bF,1);bF--}else{U.push(bD[bF])}}if(!bD||!bD.length){return[]}d8(bC);var bB=[];for(bF=0;bF<bD.length;bF++){bE=C(be.buildImpressionRequestParams(bD[bF].name,bD[bF].piece,bD[bF].target),undefined,"contentImpressions");if(bE){bB.push(bE)}}return bB}function cv(bB){var bC=be.collectContent(bB);return dX(bC,bB)}function cx(bB){if(!bB||!bB.length){return[]
+}var bC;for(bC=0;bC<bB.length;bC++){if(!be.isNodeVisible(bB[bC])){bB.splice(bC,1);bC--}}if(!bB||!bB.length){return[]}return cv(bB)}function er(bC,bE,bD){var bB=be.buildImpressionRequestParams(bC,bE,bD);return C(bB,null,"contentImpression")}function q(bB,bD){if(!bB){return}var bE=be.findParentContentNode(bB);var bC=be.buildContentBlock(bE);if(!bC){return}if(!bD){bD="Unknown"}return ea(bD,bC.name,bC.piece,bC.target)}function ag(bD,bB,bE,bC){return"e_c="+bh(bD)+"&e_a="+bh(bB)+(aL(bE)?"&e_n="+bh(bE):"")+(aL(bC)?"&e_v="+bh(bC):"")+"&ca=1"}function dn(bF,bD,bH,bE,bB,bC){if(!a7(bF)||!a7(bD)){aJ("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var bG=C(ag(bF,bD,bH,bE),bB,"event");dP(bG,dJ,bC)}function W(bF,bC,bE,bB){var bD=C("search="+bh(bF)+(bC?"&search_cat="+bh(bC):"")+(aL(bE)?"&search_count="+bE:""),bB,"sitesearch");dP(bD,dJ)}function dK(bF,bB,bC,bD){var bE=C("idgoal="+bF+(bB?"&revenue="+bB:""),bC,"goal");dP(bE,dJ,bD)}function z(bF,bI,bE,bB,bG){var bC=bI+"="+bh(d7(bF));
+var bH=dh(bG,"click",bF);if(bH){bC+="&"+bH}var bD=C(bC,bE,"link");dP(bD,dJ,bB)}function em(bB,bC){if(bB!==""){return bB+bC.charAt(0).toUpperCase()+bC.slice(1)}return bC}function O(bB){var bC,bG,bD=["","webkit","ms","moz"],bE;if(!cn){for(bG=0;bG<bD.length;bG++){bE=bD[bG];if(Object.prototype.hasOwnProperty.call(aR,em(bE,"hidden"))){if(aR[em(bE,"visibilityState")]==="prerender"){bC=true}break}}}if(bC){aD(aR,bE+"visibilitychange",function bF(){aR.removeEventListener(bE+"visibilitychange",bF,false);bB()});return}bB()}function ac(){var bB=dL.getVisitorId();var bC=en();return bB+bC}function L(bD){if(!bD){return}if(!aU.hasNodeAttribute(bD,"href")){return}var bC=aU.getAttributeValueFromNode(bD,"href");if(!bC||d2(bC)){return}if(!dL.getVisitorId()){return}bC=br(bC,dk);var bB=ac();bC=aS(bC,dk,bB);aU.setAnyAttribute(bD,"href",bC)}function aq(bC){var bB=aU.getAttributeValueFromNode(bC,"href");if(!bB){return false}bB=String(bB);var bE=bB.indexOf("//")===0||bB.indexOf("http://")===0||bB.indexOf("https://")===0;
+if(!bE){return false}var bF=bC.pathname||J(bC.href);var bD=(bC.hostname||bx(bC.href)).toLowerCase();if(ds(bD,bF)){if(!cf(dI,aH(bD))){return true}return false}return false}function ch(bC){var bB=p(bC);if(bB&&bB.type){bB.href=bl(bB.href);z(bB.href,bB.type,undefined,null,bC);return}if(al){bC=dm(bC);if(aq(bC)){L(bC)}}}function dd(){return aR.all&&!aR.addEventListener}function dG(bD){var bB=bD.which;var bC=(typeof bD.button);if(!bB&&bC!=="undefined"){if(dd()){if(bD.button&1){bB=1}else{if(bD.button&2){bB=3}else{if(bD.button&4){bB=2}}}}else{if(bD.button===0||bD.button==="0"){bB=1}else{if(bD.button&1){bB=2}else{if(bD.button&2){bB=3}}}}}return bB}function dl(bB){switch(dG(bB)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function b(bB){return bB.target||bB.srcElement}function dE(bB){return bB==="A"||bB==="AREA"}function ev(bC){function bB(bF){var bE=b(bF);var bD=bE.nodeName;var bG=c(dV,"ignore");while(!dE(bD)&&bE&&bE.parentNode){bE=bE.parentNode;bD=bE.nodeName}if(bE&&dE(bD)&&!bG.test(bE.className)){return bE
+}}return function(bE){bE=bE||aw.event;var bD=bB(bE);if(!bD){return}var bF=dl(bE);if(bE.type==="click"){var bG=false;if(bC&&bF==="middle"){bG=true}if(bD&&!bG){ch(bD)}}else{if(bE.type==="mousedown"){if(bF==="middle"&&bD){d6=bF;dT=bD}else{d6=dT=null}}else{if(bE.type==="mouseup"){if(bF===d6&&bD===dT){ch(bD)}d6=dT=null}else{if(bE.type==="contextmenu"){ch(bD)}}}}}}function dt(bB,bC,bE){var bD=typeof bC;if(bD==="undefined"){bC=true}aD(bB,"click",ev(bC),bE);if(bC){aD(bB,"mouseup",ev(bC),bE);aD(bB,"mousedown",ev(bC),bE);aD(bB,"contextmenu",ev(bC),bE)}}function d4(bG,bD,bC){if(Q){return true}Q=true;var bB=false;var bE,bF;function bH(){bB=true}bn(function(){function bJ(bK){setTimeout(function(){if(!Q){return}bB=false;bC.trackVisibleContentImpressions();bJ(bK)},bK)}function bI(bK){setTimeout(function(){if(!Q){return}if(bB){bB=false;bC.trackVisibleContentImpressions()}bI(bK)},bK)}if(bG){bE=["scroll","resize"];for(bF=0;bF<bE.length;bF++){if(aR.addEventListener){aR.addEventListener(bE[bF],bH,false)}else{aw.attachEvent("on"+bE[bF],bH)
+}}bI(100)}if(bD&&bD>0){bD=parseInt(bD,10);bJ(bD)}})}var dR={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var bB=this.requests;this.requests=[];if(bB.length===1){dP(bB[0],dJ)}else{m(bB,dJ)}},canQueue:function(){return !bo&&this.enabled},pushMultiple:function(bB){if(!this.canQueue()){m(bB,dJ);return}var bC;for(bC=0;bC<bB.length;bC++){this.push(bB[bC])}},push:function(bC){if(!bC){return}if(!this.canQueue()){dP(bC,dJ);return}dR.requests.push(bC);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){dR.timeout=null;dR.sendRequests()},dR.interval);var bB="RequestQueue"+eA;if(!Object.prototype.hasOwnProperty.call(bz,bB)){bz[bB]={unload:function(){if(dR.timeout){clearTimeout(dR.timeout)}dR.sendRequests()}}}}};cg();eh();this.hasConsent=function(){return dS};this.getVisitorId=function(){return e().uuid};this.getVisitorInfo=function(){return aj()};this.getAttributionInfo=function(){return dF()};this.getAttributionCampaignName=function(){return dF()[0]
+};this.getAttributionCampaignKeyword=function(){return dF()[1]};this.getAttributionReferrerTimestamp=function(){return dF()[2]};this.getAttributionReferrerUrl=function(){return dF()[3]};this.setTrackerUrl=function(bB){et=bB};this.getTrackerUrl=function(){return et};this.getMatomoUrl=function(){return ba(this.getTrackerUrl(),dM)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(bB,bC){if(!aL(bB)||null===bB){bB=this.getTrackerUrl()}var bD=new az(bB,bC);aN.push(bD);bg.trigger("TrackerAdded",[this]);return bD};this.getSiteId=function(){return Y};this.setSiteId=function(bB){d5(bB)};this.resetUserId=function(){dW=""};this.setUserId=function(bB){if(a7(bB)){dW=bB}};this.setVisitorId=function(bB){var bC=/[0-9A-Fa-f]{16}/g;if(bd(bB)&&bC.test(bB)){dA=bB}else{aJ("Invalid visitorId set"+bB)}};this.getUserId=function(){return dW};this.setCustomData=function(bC,bB){if(at(bC)){dz=bC}else{if(!dz){dz={}}dz[bC]=bB}};this.getCustomData=function(){return dz};this.setCustomRequestProcessing=function(bB){T=bB
+};this.appendToTrackingUrl=function(bB){dq=bB};this.getRequest=function(bB){return C(bB)};this.addPlugin=function(bC,bB){bz[bC]=bB};this.setCustomDimension=function(bC,bB){bC=parseInt(bC,10);if(bC>0){if(!aL(bB)){bB=""}if(!bd(bB)){bB=String(bB)}am[bC]=bB}};this.getCustomDimension=function(bB){bB=parseInt(bB,10);if(bB>0&&Object.prototype.hasOwnProperty.call(am,bB)){return am[bB]}};this.deleteCustomDimension=function(bB){bB=parseInt(bB,10);if(bB>0){delete am[bB]}};this.setCustomVariable=function(bE,bF,bB,bD){var bC;if(!aL(bD)){bD="visit"}if(!aL(bF)){return}if(!aL(bB)){bB=""}if(bE>0){bF=!bd(bF)?String(bF):bF;bB=!bd(bB)?String(bB):bB;bC=[bF.slice(0,d1),bB.slice(0,d1)];if(bD==="visit"||bD===2){cj();d9[bE]=bC}else{if(bD==="page"||bD===3){ei[bE]=bC}else{if(bD==="event"){I[bE]=bC}}}}};this.getCustomVariable=function(bC,bB){var bD;if(!aL(bB)){bB="visit"}if(bB==="page"||bB===3){bD=ei[bC]}else{if(bB==="event"){bD=I[bC]}else{if(bB==="visit"||bB===2){cj();bD=d9[bC]}}}if(!aL(bD)||(bD&&bD[0]==="")){return false
+}return bD};this.deleteCustomVariable=function(bC,bB){if(this.getCustomVariable(bC,bB)){this.setCustomVariable(bC,"","",bB)}};this.deleteCustomVariables=function(bB){if(bB==="page"||bB===3){ei={}}else{if(bB==="event"){I={}}else{if(bB==="visit"||bB===2){d9={}}}}};this.storeCustomVariablesInCookie=function(){du=true};this.setLinkTrackingTimer=function(bB){dJ=bB};this.getLinkTrackingTimer=function(){return dJ};this.setDownloadExtensions=function(bB){if(bd(bB)){bB=bB.split("|")}u=bB};this.addDownloadExtensions=function(bB){var bC;if(bd(bB)){bB=bB.split("|")}for(bC=0;bC<bB.length;bC++){u.push(bB[bC])}};this.removeDownloadExtensions=function(bB){var bC,bD=[];if(bd(bB)){bB=bB.split("|")}for(bC=0;bC<u.length;bC++){if(aE(bB,u[bC])===-1){bD.push(u[bC])}}u=bD};this.setDomains=function(bF){ez=bd(bF)?[bF]:bF;var bB=false,bD=0,bE;for(bD;bD<ez.length;bD++){bE=String(ez[bD]);if(cf(dI,aH(bE))){bB=true;break}var bC=J(bE);if(bC&&bC!=="/"&&bC!=="/*"){bB=true;break}}if(!bB){ez.push(dI)}};this.enableCrossDomainLinking=function(){al=true
+};this.disableCrossDomainLinking=function(){al=false};this.isCrossDomainLinkingEnabled=function(){return al};this.setCrossDomainLinkingTimeout=function(bB){d=bB};this.getCrossDomainLinkingUrlParameter=function(){return bh(dk)+"="+bh(ac())};this.setIgnoreClasses=function(bB){dV=bd(bB)?[bB]:bB};this.setRequestMethod=function(bB){if(bB){r=String(bB).toUpperCase()}else{r=N}if(r==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(bB){dc=bB||ep};this.setGenerationTimeMs=function(bB){aJ("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(bE,bB,bC,bH,bD,bG){var bF={pf_net:bE,pf_srv:bB,pf_tfr:bC,pf_dm1:bH,pf_dm2:bD,pf_onl:bG};try{bF=aC(bF,aL);bF=a6(bF);H=bp(bF);if(H===""){aJ("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}ci=false;dQ=true}catch(bI){aJ("setPagePerformanceTiming: "+bI.toString())
+}};this.setReferrerUrl=function(bB){ak=bB};this.setCustomUrl=function(bB){di=ek(dC,bB)};this.getCurrentUrl=function(){return di||dC};this.setDocumentTitle=function(bB){cd=bB};this.setPageViewId=function(bB){ej=bB;dU=true};this.setAPIUrl=function(bB){dM=bB};this.setDownloadClasses=function(bB){dH=bd(bB)?[bB]:bB};this.setLinkClasses=function(bB){cz=bd(bB)?[bB]:bB};this.setCampaignNameKey=function(bB){E=bd(bB)?[bB]:bB};this.setCampaignKeywordKey=function(bB){dO=bd(bB)?[bB]:bB};this.discardHashTag=function(bB){dy=bB};this.setCookieNamePrefix=function(bB){cb=bB;if(d9){d9=eg()}};this.setCookieDomain=function(bC){var bB=aH(bC);if(!ao&&!dY(bB)){aJ("Can't write cookie on domain "+bC)}else{dx=bB;cg()}};this.setExcludedQueryParams=function(bB){M=bd(bB)?[bB]:bB};this.getCookieDomain=function(){return dx};this.hasCookies=function(){return"1"===Z()};this.setSessionCookie=function(bB,bC,bD){if(!bB){throw new Error("Missing cookie name")}if(!aL(bD)){bD=G}d0.push(bB);n(d3(bB),bC,bD,ah,dx,dp,eo)};this.getCookie=function(bB){var bC=eu(d3(bB));
+if(bC===0){return null}return bC};this.setCookiePath=function(bB){ah=bB;cg()};this.getCookiePath=function(bB){return ah};this.setVisitorCookieTimeout=function(bB){ar=bB*1000};this.setSessionCookieTimeout=function(bB){G=bB*1000};this.getSessionCookieTimeout=function(){return G};this.setReferralCookieTimeout=function(bB){v=bB*1000};this.setConversionAttributionFirstReferrer=function(bB){dZ=bB};this.setSecureCookie=function(bB){if(bB&&location.protocol!=="https:"){aJ("Error in setSecureCookie: You cannot use `Secure` on http.");return}dp=bB};this.setCookieSameSite=function(bB){bB=String(bB);bB=bB.charAt(0).toUpperCase()+bB.toLowerCase().slice(1);if(bB!=="None"&&bB!=="Lax"&&bB!=="Strict"){aJ("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(bB==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{aJ("sameSite=None cannot be used on http, reverted to sameSite=Lax.");bB="Lax"}}eo=bB};this.disableCookies=function(){ao=true;if(Y){es()}};this.areCookiesEnabled=function(){return !ao
+};this.setCookieConsentGiven=function(){if(ao&&!af){ao=false;dB=true;if(Y&&eB){eh();var bB=C("ping=1",null,"ping");dP(bB,dJ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return eu(co)};this.forgetCookieConsentGiven=function(){ed(co,ah,dx);this.disableCookies()};this.rememberCookieConsentGiven=function(bB){if(bB){bB=bB*60*60*1000}else{bB=30*365*24*60*60*1000}this.setCookieConsentGiven();var bC=new Date().getTime();n(co,bC,bB,ah,dx,dp,eo)};this.deleteCookies=function(){es()};this.setDoNotTrack=function(bB){var bC=bu.doNotTrack||bu.msDoNotTrack;af=bB&&(bC==="yes"||bC==="1");if(af){this.disableCookies()}};this.alwaysUseSendBeacon=function(){dD=true};this.disableAlwaysUseSendBeacon=function(){dD=false};this.addListener=function(bB,bC){dt(bB,bC,false)};this.enableLinkTracking=function(bB){if(s){return}s=true;var bC=this;bk(function(){dw=true;var bD=aR.body;dt(bD,bB,true)
+})};this.enableJSErrorTracking=function(){if(dN){return}dN=true;var bB=aw.onerror;aw.onerror=function(bC,bE,bF,bD,bG){O(function(){var bH="JavaScript Errors";var bI=bE+":"+bF;if(bD){bI+=":"+bD}if(aE(B,bH+bI+bC)===-1){B.push(bH+bI+bC);dn(bH,bI,bC)}});if(bB){return bB(bC,bE,bF,bD,bG)}return false}};this.disablePerformanceTracking=function(){a=false};this.enableHeartBeatTimer=function(bB){bB=Math.max(bB||15,5);dg=bB*1000;if(dv!==null){l()}};this.disableHeartBeatTimer=function(){if(dg||ef){if(aw.removeEventListener){aw.removeEventListener("focus",cw);aw.removeEventListener("blur",ey);aw.removeEventListener("visibilitychange",i)}else{if(aw.detachEvent){aw.detachEvent("onfocus",cw);aw.detachEvent("onblur",ey);aw.detachEvent("visibilitychange",i)}}}dg=null;ef=false};this.killFrame=function(){if(aw.location!==aw.top.location){aw.top.location=aw.location}};this.redirectFile=function(bB){if(aw.location.protocol==="file:"){aw.location=bB}};this.setCountPreRendered=function(bB){cn=bB};this.trackGoal=function(bE,bB,bC,bD){O(function(){dK(bE,bB,bC,bD)
+})};this.trackLink=function(bD,bE,bB,bC){O(function(){z(bD,bE,bB,bC)})};this.getNumTrackedPageViews=function(){return D};this.trackPageView=function(bD,bB,bC){U=[];ap=[];B=[];if(aB(Y)){O(function(){a4(et,dM,Y)})}else{O(function(){D++;eb(bD,bB,bC)})}};this.disableBrowserFeatureDetection=function(){dB=false};this.trackAllContentImpressions=function(){if(aB(Y)){return}O(function(){bk(function(){var bC=be.findContentNodes();var bB=cv(bC);dR.pushMultiple(bB)})})};this.trackVisibleContentImpressions=function(bC,bB){if(aB(Y)){return}if(!aL(bC)){bC=true}if(!aL(bB)){bB=750}d4(bC,bB,this);O(function(){bn(function(){var bE=be.findContentNodes();var bD=cx(bE);dR.pushMultiple(bD)})})};this.trackContentImpression=function(bB,bD,bC){if(aB(Y)){return}bB=bA(bB);bD=bA(bD);bC=bA(bC);if(!bB){return}bD=bD||"Unknown";O(function(){var bE=er(bB,bD,bC);dR.push(bE)})};this.trackContentImpressionsWithinNode=function(bB){if(aB(Y)||!bB){return}O(function(){if(Q){bn(function(){var bD=be.findContentNodesWithinNode(bB);
+var bC=cx(bD);dR.pushMultiple(bC)})}else{bk(function(){var bD=be.findContentNodesWithinNode(bB);var bC=cv(bD);dR.pushMultiple(bC)})}})};this.trackContentInteraction=function(bC,bB,bE,bD){if(aB(Y)){return}bC=bA(bC);bB=bA(bB);bE=bA(bE);bD=bA(bD);if(!bC||!bB){return}bE=bE||"Unknown";O(function(){var bF=ea(bC,bB,bE,bD);if(bF){dR.push(bF)}})};this.trackContentInteractionNode=function(bB,bC){if(aB(Y)||!bB){return}var bD=null;O(function(){bD=q(bB,bC);if(bD){dR.push(bD)}});return bD};this.logAllContentBlocksOnPage=function(){var bB=be.findContentNodes();var bD=be.collectContent(bB);var bC=typeof console;if(bC!=="undefined"&&console&&console.log){console.log(bD)}};this.trackEvent=function(bF,bD,bG,bE,bB,bC){O(function(){dn(bF,bD,bG,bE,bB,bC)})};this.trackSiteSearch=function(bE,bC,bD,bB){U=[];O(function(){W(bE,bC,bD,bB)})};this.setEcommerceView=function(bB,bF,bD,bE){dj={};if(a7(bD)){bD=String(bD)}if(!aL(bD)||bD===null||bD===false||!bD.length){bD=""}else{if(bD instanceof Array){bD=aw.JSON.stringify(bD)
+}}var bC="_pkc";dj[bC]=bD;if(aL(bE)&&bE!==null&&bE!==false&&String(bE).length){bC="_pkp";dj[bC]=bE}if(!a7(bB)&&!a7(bF)){return}if(a7(bB)){bC="_pks";dj[bC]=bB}if(!a7(bF)){bF=""}bC="_pkn";dj[bC]=bF};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(A))};this.addEcommerceItem=function(bB,bF,bD,bE,bC){if(a7(bB)){A[bB]=[String(bB),bF,bD,bE,bC]}};this.removeEcommerceItem=function(bB){if(a7(bB)){bB=String(bB);delete A[bB]}};this.clearEcommerceCart=function(){A={}};this.trackEcommerceOrder=function(bG,bC,bD,bE,bF,bB){ee(bG,bC,bD,bE,bF,bB)};this.trackEcommerceCartUpdate=function(bB){ab(bB)};this.trackRequest=function(bD,bB,bC,bE){O(function(){var bF=C(bD,bB,bE);dP(bF,dJ,bC)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){dR.enabled=false};this.setRequestQueueInterval=function(bB){if(bB<1000){throw new Error("Request queue interval needs to be at least 1000ms")}dR.interval=bB};this.queueRequest=function(bB){O(function(){var bC=C(bB);
+dR.push(bC)})};this.isConsentRequired=function(){return cu};this.getRememberedConsent=function(){var bB=eu(cp);if(eu(an)){if(bB){ed(cp,ah,dx)}return null}if(!bB||bB===0){return null}return bB};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cu=true;dS=this.hasRememberedConsent();if(!dS){ao=true}bc++;bz["CoreConsent"+bc]={unload:function(){if(!dS){es()}}}};this.setConsentGiven=function(bC){dS=true;dB=true;ed(an,ah,dx);var bB,bD;for(bB=0;bB<ap.length;bB++){bD=typeof ap[bB];if(bD==="string"){dP(ap[bB],dJ)}else{if(bD==="object"){m(ap[bB],dJ)}}}ap=[];if(!aL(bC)||bC){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(bB){if(bB){bB=bB*60*60*1000}else{bB=30*365*24*60*60*1000}var bD=true;this.setConsentGiven(bD);var bC=new Date().getTime();n(cp,bC,bB,ah,dx,dp,eo)};this.forgetConsentGiven=function(){var bB=30*365*24*60*60*1000;ed(cp,ah,dx);n(an,new Date().getTime(),bB,ah,dx,dp,eo);this.forgetCookieConsentGiven();this.requireConsent()
+};this.isUserOptedOut=function(){return !dS};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};bn(function(){setTimeout(function(){dQ=true},0)});bg.trigger("TrackerSetup",[this])}function aO(){return{push:aT}}function by(c,d){var b={};var f,e;for(f=0;f<d.length;f++){var a=d[f];b[a]=1;for(e=0;e<c.length;e++){if(c[e]&&c[e][0]){var g=c[e][0];if(a===g){aT(c[e]);delete c[e];if(b[g]>1&&g!=="addTracker"&&g!=="enableLinkTracking"){aJ("The method "+g+' 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')}b[g]++}}}}return c}var a0=["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 aW(b,c){var a=new az(b,c);aN.push(a);_paq=by(_paq,a0);for(aV=0;aV<_paq.length;aV++){if(_paq[aV]){aT(_paq[aV])}}_paq=new aO();bg.trigger("TrackerAdded",[a]);return a}aD(aw,"beforeunload",aM,false);aD(aw,"online",function(){if(aL(bu.serviceWorker)){bu.serviceWorker.ready.then(function(a){if(a&&a.sync){return a.sync.register("matomoSync")}},function(){})}},false);aD(aw,"message",function(i){if(!i||!i.origin){return}var g,b,d;var f=bx(i.origin);var a=bg.getAsyncTrackers();for(b=0;b<a.length;b++){d=bx(a[b].getMatomoUrl());if(d===f){g=a[b];break}}if(!g){return}var c=null;try{c=JSON.parse(i.data)}catch(h){return}if(!c){return}function e(l){var j=aR.getElementsByTagName("iframe");for(b=0;b<j.length;b++){var k=j[b];var n=bx(k.src);if(k.contentWindow&&aL(k.contentWindow.postMessage)&&n===f){var m=JSON.stringify(l);k.contentWindow.postMessage(m,"*")}}}if(aL(c.maq_initial_value)){e({maq_opted_in:c.maq_initial_value&&g.hasConsent(),maq_url:g.getMatomoUrl(),maq_optout_by_default:g.isConsentRequired()})
+}else{if(aL(c.maq_opted_in)){a=bg.getAsyncTrackers();for(b=0;b<a.length;b++){g=a[b];if(c.maq_opted_in){g.rememberConsentGiven()}else{g.forgetConsentGiven()}}e({maq_confirm_opted_in:g.hasConsent(),maq_url:g.getMatomoUrl(),maq_optout_by_default:g.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;bg={initialized:false,JSON:aw.JSON,DOM:{addEventListener:function(c,d,e,a){var b=typeof a;if(b==="undefined"){a=false}aD(c,d,e,a)},onLoad:bn,onReady:bk,isNodeVisible:bs,isOrWasNodeVisible:be.isNodeVisible},on:function(b,a){if(!bb[b]){bb[b]=[]}bb[b].push(a)},off:function(b,c){if(!bb[b]){return}var a=0;for(a;a<bb[b].length;a++){if(bb[b][a]===c){bb[b].splice(a,1)}}},trigger:function(c,b,d){if(!bb[c]){return}var a=0;for(a;a<bb[c].length;a++){bb[c][a].apply(d||aw,b)}},addPlugin:function(a,b){bz[a]=b},getTracker:function(b,a){if(!aL(a)){a=this.getAsyncTracker().getSiteId()}if(!aL(b)){b=this.getAsyncTracker().getTrackerUrl()}return new az(b,a)},getAsyncTrackers:function(){return aN
+},addTracker:function(b,c){var a;if(!aN.length){a=aW(b,c)}else{a=aN[0].addTracker(b,c)}return a},getAsyncTracker:function(b,c){var d;if(aN&&aN.length&&aN[0]){d=aN[0]}else{return aW(b,c)}if(!c&&!b){return d}if((!aL(c)||null===c)&&d){c=d.getSiteId()}if((!aL(b)||null===b)&&d){b=d.getTrackerUrl()}var e,a=0;for(a;a<aN.length;a++){e=aN[a];if(e&&String(e.getSiteId())===String(c)&&e.getTrackerUrl()===b){return e}}},retryMissedPluginCalls:function(){var b=aP;aP=[];var a=0;for(a;a<b.length;a++){aT(b[a])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return bg});define("matomo",[],function(){return bg})}return bg}())}
+/*!!!! pluginTrackerHook */
+(function(){function c(){if("object"!==typeof _paq){return false}var a=typeof _paq.length;if("undefined"===a){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var d=0;for(d;d<window.matomoPluginAsyncInit.length;d++){if(typeof window.matomoPluginAsyncInit[d]==="function"){window.matomoPluginAsyncInit[d]()
+}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(c()){window.Matomo.addTracker()}else{_paq={push:function(b){var a=typeof console;if(a!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",b)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var b=(typeof window.AnalyticsTracker);if(b==="undefined"){window.AnalyticsTracker=window.Matomo}}());if(typeof window.piwik_log!=="function"){window.piwik_log=function(n,l,j,k){function h(b){try{if(window["piwik_"+b]){return window["piwik_"+b]
+}}catch(a){}return}var m,i=window.Matomo.getTracker(j,l);i.setDocumentTitle(n);i.setCustomData(k);m=h("tracker_pause");if(m){i.setLinkTrackingTimer(m)}m=h("download_extensions");if(m){i.setDownloadExtensions(m)}m=h("hosts_alias");if(m){i.setDomains(m)}m=h("ignore_classes");if(m){i.setIgnoreClasses(m)}i.trackPageView();if(h("install_tracker")){piwik_track=function(c,b,a,d){i.setSiteId(b);i.setTrackerUrl(a);i.trackLink(c,d)};i.enableLinkTracking()}}}
+/*!!! @license-end */; \ No newline at end of file
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 4795fc69d7..2d7241122e 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -19,16 +19,12 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\DataTable\Filter\ColumnDelete;
-use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\IP;
-use Piwik\Metrics;
use Piwik\Period;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
use Piwik\Plugins\API\DataTable\MergeDataTables;
-use Piwik\Plugins\CoreAdminHome\CustomLogo;
use Piwik\Plugins\CorePluginsAdmin\SettingsMetadata;
use Piwik\Segment;
use Piwik\Site;
diff --git a/plugins/API/Controller.php b/plugins/API/Controller.php
index 8fc0d66806..7047173e1e 100644
--- a/plugins/API/Controller.php
+++ b/plugins/API/Controller.php
@@ -14,7 +14,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\API\Renderer\Original;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/plugins/API/Filter/DataComparisonFilter.php b/plugins/API/Filter/DataComparisonFilter.php
index 2a39c607e9..015bea7463 100644
--- a/plugins/API/Filter/DataComparisonFilter.php
+++ b/plugins/API/Filter/DataComparisonFilter.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\DataTable;
use Piwik\DataTable\DataTableInterface;
-use Piwik\DataTable\Simple;
use Piwik\Http\BadRequestException;
use Piwik\Metrics;
use Piwik\Period;
@@ -22,7 +21,6 @@ use Piwik\Piwik;
use Piwik\Plugin\Report;
use Piwik\Plugins\API\Filter\DataComparisonFilter\ComparisonRowGenerator;
use Piwik\Segment;
-use Piwik\Segment\SegmentExpression;
use Piwik\Site;
/**
@@ -298,6 +296,10 @@ class DataComparisonFilter
'format_metrics' => 0,
'label' => '',
'flat' => Common::getRequestVar('flat', 0, 'int', $this->request),
+ 'filter_add_columns_when_show_all_columns' => Common::getRequestVar('filter_add_columns_when_show_all_columns', '', 'string', $this->request),
+ 'filter_update_columns_when_show_all_goals' => Common::getRequestVar('filter_update_columns_when_show_all_goals', '', 'string', $this->request),
+ 'filter_show_goal_columns_process_goals' => Common::getRequestVar('filter_show_goal_columns_process_goals', '', 'string', $this->request),
+ 'idGoal' => Common::getRequestVar('idGoal', '', 'string', $this->request),
],
$paramsToModify
);
@@ -484,7 +486,7 @@ class DataComparisonFilter
/** @var DataTable\Row[] $rows */
$rows = array_values($comparisons->getRows());
foreach ($rows as $index => $compareRow) {
- list($periodIndex, $segmentIndex) = self::getIndividualComparisonRowIndices($table, $index, $segmentCount);
+ [$periodIndex, $segmentIndex] = self::getIndividualComparisonRowIndices($table, $index, $segmentCount);
if (!$this->invertCompareChangeCompute && $index < $segmentCount) {
continue; // do not calculate for first period
@@ -502,11 +504,17 @@ class DataComparisonFilter
}
foreach ($compareRow->getColumns() as $name => $value) {
- $changeTo = $this->computeChangePercent($otherPeriodRow, $compareRow, $name);
+ [$changeTo, $trendTo] = $this->computeChangePercent($otherPeriodRow, $compareRow, $name);
$compareRow->addColumn($name . '_change', $changeTo);
+ if ($this->shouldIncludeTrendValues()) {
+ $compareRow->addColumn($name . '_trend', $trendTo);
+ }
- $changeFrom = $this->computeChangePercent($compareRow, $otherPeriodRow, $name);
+ [$changeFrom, $trendFrom] = $this->computeChangePercent($compareRow, $otherPeriodRow, $name);
$compareRow->addColumn($name . '_change_from', $changeFrom);
+ if ($this->shouldIncludeTrendValues()) {
+ $compareRow->addColumn($name . '_trend_from', $trendFrom);
+ }
}
}
}
@@ -522,8 +530,9 @@ class DataComparisonFilter
$valueToCompare = $valueToCompare ?: 0;
$change = DataTable\Filter\CalculateEvolutionFilter::calculate($value, $valueToCompare, $precision = 1, true, true);
+ $trend = $value - $valueToCompare < 0 ? -1 : ($value - $valueToCompare > 0 ? 1 : 0);
- return $change;
+ return [$change, $trend];
}
/**
@@ -580,6 +589,20 @@ class DataComparisonFilter
}
/**
+ * Returns whether to include trend values for all evolution columns or not
+ * This is requested only for sparklines
+ *
+ * @see \Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines::render()
+ *
+ * @return bool
+ * @throws \Exception
+ */
+ private function shouldIncludeTrendValues(): bool
+ {
+ return (bool) Common::getRequestVar('include_trends', 0, 'int', $this->request);
+ }
+
+ /**
* Returns the pretty series label for a specific comparison based on the currently set comparison query parameters.
*
* @param int $labelSeriesIndex The index of the comparison. Comparison series order is determined by {@see self::getReportsToCompare()}.
@@ -590,7 +613,7 @@ class DataComparisonFilter
$comparePeriods = self::getComparePeriods();
$compareDates = self::getCompareDates();
- list($periodIndex, $segmentIndex) = self::getIndividualComparisonRowIndices(null, $labelSeriesIndex, count($compareSegments));
+ [$periodIndex, $segmentIndex] = self::getIndividualComparisonRowIndices(null, $labelSeriesIndex, count($compareSegments));
$segmentObj = new Segment($compareSegments[$segmentIndex], []);
$prettySegment = $segmentObj->getStoredSegmentName(false);
@@ -610,6 +633,8 @@ class DataComparisonFilter
$mappings[$index] = $name;
$mappings[$index . '_change'] = $name . '_change';
$mappings[$index . '_change_from'] = $name . '_change_from';
+ $mappings[$index . '_trend'] = $name . '_trend';
+ $mappings[$index . '_trend_from'] = $name . '_trend_from';
}
return $mappings;
}
diff --git a/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php b/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
index e1293b9364..99545dbb0e 100644
--- a/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
+++ b/plugins/API/Filter/DataComparisonFilter/ComparisonRowGenerator.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\DataTable;
use Piwik\DataTable\DataTableInterface;
use Piwik\DataTable\Simple;
-use Piwik\Metrics;
use Piwik\Period;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/API/ProcessedReport.php b/plugins/API/ProcessedReport.php
index 607134095f..d401caa3fa 100644
--- a/plugins/API/ProcessedReport.php
+++ b/plugins/API/ProcessedReport.php
@@ -23,7 +23,6 @@ use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugin\Metric;
use Piwik\Plugin\ReportsProvider;
use Piwik\Site;
use Piwik\Timer;
diff --git a/plugins/API/lang/ar.json b/plugins/API/lang/ar.json
index c4d867b617..668829bb2e 100644
--- a/plugins/API/lang/ar.json
+++ b/plugins/API/lang/ar.json
@@ -1,13 +1,12 @@
{
"API": {
"ChangeTokenHint": "فضلاً الذهاب إلى %1$sصفحة الإعدادات الشخصية%2$sعند رغبتك تغيير هذا الرمز المميَّز.",
- "GenerateVisits": "إذا كنت لا تملك بيانات لليوم الحالي، فيمكنك أن تنشئ بعض البيانات باستخدام تطبيق %1$s. يمكنك تفعيل تطبيق %2$s، ثم النقر على قائمة \"مولد الزوا\" في لوحة إدارة Matomo.",
+ "Glossary": "المسرد",
"KeepTokenSecret": "مفتاح المصادقة هذا سري كما هو الحال في اسم المستخدم ولكلمة المرور، %1$s لا تعطه لأحد قط%2$s!",
"LoadedAPIs": "تم تحميل %s واجهة تطبيقات.",
"MoreInformation": "لمزيد من المعلومات حول واجهة التطبيقات لبرنامج Matomo، الرجاء مراجعة %1$s مقدمة إلى واجهة تطبيقات Matomo %2$s وكذلك %3$sدليل واجهة تطبيقات Matomo %4$s.",
"PluginDescription": "يمكن الحصول على جميع بيانات Matomo عبر واجهات برمجية بسيطة. وهذه الإضافة هي نقطة بداية خدمة وب يمكنك استدعاؤها للحصول على بيانات تحليلات وب بصيغ xml ، json ، php ، csv وغيرها",
"TopLinkTooltip": "الوصول إلى تحليلات ويب الخاصة بك برمجياً عبر واجهة تطبيقات بسيطة API على شكل json, xml وغيرها.",
- "UserAuthentication": "مصادقة المستخدم",
- "Glossary": "المسرد"
+ "UserAuthentication": "مصادقة المستخدم"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/be.json b/plugins/API/lang/be.json
index fea1c27a1a..03c0c4ac42 100644
--- a/plugins/API/lang/be.json
+++ b/plugins/API/lang/be.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "Калі ў вас няма дадзеных на сённяшні дзень, вы можаце стварыць некаторыя дадзеныя, выкарыстоўваючы даданы модуль %1$s. Уключыце даданы модуль %2$s, затым націсніце на \"Генератар наведванняў\" у адміністрацыйнай частцы Matomo.",
"KeepTokenSecret": "Гэта ідэнтыфікацыйны токэн, ён такі жа сакрэтны, як ваш лагін і пароль, %1$s не дзеліцеся ім ня з кім%2$s!",
"LoadedAPIs": "%s API паспяхова загружаны",
"MoreInformation": "Дадатковыя звесткі аб Matomo API, калі ласка, звярніце ўвагу на %1$s Уводзіны ў Matomo API %2$s і %3$s Matomo API спасылкі %4$s.",
"UserAuthentication": "Аўтэнтыфікацыя карыстальніка"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/bg.json b/plugins/API/lang/bg.json
index 857134f9f7..fa603e66f7 100644
--- a/plugins/API/lang/bg.json
+++ b/plugins/API/lang/bg.json
@@ -1,10 +1,9 @@
{
"API": {
- "GenerateVisits": "Ако не разполагате с данни за днес можете да генерирате такива с помощта на добавката %1$s. Вие можете да активирате добавката %2$s, след което натиснете на „Генератор на посещения“, намиращ се в менюто на администраторската среда на Matomo.",
"KeepTokenSecret": "Това token_auth е тайна, като Вашето потребителско име и парола, %1$s не го споделяйте%2$s!",
"LoadedAPIs": "Успешно заредени %s API-та",
"MoreInformation": "За повече информация за Matomo API-тата, моля погледнете %1$s Въведение в Matomo API%2$s и %3$s Matomo API Референт%4$s.",
"TopLinkTooltip": "Информацията за уеб анализите може да бъде достъпена чрез прост приложно-програмен интерфейс в json, xml и др. формат.",
"UserAuthentication": "Удостоверяване на потребителя"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/bs.json b/plugins/API/lang/bs.json
index cf4bcf4dd5..5f84e459de 100644
--- a/plugins/API/lang/bs.json
+++ b/plugins/API/lang/bs.json
@@ -1,7 +1,6 @@
{
"API": {
- "GenerateVisits": "Ako nemate podataka za danas onda možete prvo generisati neke podatke sa dodatkom %1$s. Ovo možete uraditi ako uključite dodatak %2$s i zatim kliknete na 'Proizvođač posjetilaca' u meniju koja se nalazi u Matomo adminskom prostoru.",
"KeepTokenSecret": "Ovaj token_auth je povjerljiv podatak poput vašeg korisničkog imena i lozine. %1$s Nemojte ga dijeliti sa drugima%2$s!",
"LoadedAPIs": "Uspješno učitani %s API(-ovi)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/ca.json b/plugins/API/lang/ca.json
index b941349dd7..341a2ecd20 100644
--- a/plugins/API/lang/ca.json
+++ b/plugins/API/lang/ca.json
@@ -1,10 +1,18 @@
{
"API": {
- "GenerateVisits": "Si no disposeu d'informació d'avui podeu generar informació utilitzant l'extensió: %1$s. Heu d'activar l'extensió %2$s i desprès anar al menú 'Generador de visites' de l'espai d'administració del Matomo.",
+ "ChangeTokenHint": "Si voleu canviar aquest testimoni, aneu a la vostra %1$spàgina de configuració personal%2$s.",
+ "EvolutionMetricName": "Evloució %s",
+ "GenerateVisits": "Si no teniu dades d'avui, podeu generar-ne algunes utilitzant el connector %1$s si aneu a 'Desenvolupament → Generador de visitants' a l'àrea d'administració de Matomo.",
+ "Glossary": "Glossari",
"KeepTokenSecret": "El token_auth es tan secret com el vostre usuari i la vostra contrasenya, %1$s no compartiu el seu %2$s!",
- "LoadedAPIs": "S'ha carregat correctament un total de %s API",
- "MoreInformation": "Per mes informació sobre les APIs de Matomo, siusplau reviseu %1$s Introducció a l'API de Matomo %2$s i %3$s la Referència de l'API de Matomo %4$s.",
- "TopLinkTooltip": "Accediu a la vostra informació de l'anàlisis Web d'una forma programada a través d'una API simple en json, xml, etc.",
- "UserAuthentication": "Autentificació de l'usuari"
+ "LearnAboutCommonlyUsedTerms2": "Obteniu informació sobre els termes que s'utilitzen habitualment per treure el màxim profit de Matomo analytics.",
+ "LoadedAPIs": "Carregades %s API",
+ "MainMetricsReportDocumentation": "Aquest informe ofereix una visió general de les mètriques més importants de totes les categories i connectors.",
+ "MoreInformation": "Més informació sobre les API de Matomo disponible a %1$sIntroducció a l'API de Matomo%2$s i a la %3$sReferència de l'API de Matomo%4$s.",
+ "PluginDescription": "Totes les dades de Matomo estan disponibles mitjançant API simples. Aquest connector és el punt d'entrada del servei web al qual podeu cridar per obtenir les vostres dades d'anàlisi web en XML, JSON, PHP, CSV, etc.",
+ "ReportingApiReference": "Referència de l'API d'informes",
+ "TopLinkTooltip": "Accediu a les vostres dades d'Analytics Web de manera programada mitjançant una API senzilla en JSON, XML, etc.",
+ "UserAuthentication": "Autentificació de l'usuari",
+ "UsingTokenAuth": "Si voleu %1$ssol·licitar dades dins d'un script, un crontab, etc.%2$s heu d'afegir el paràmetre d'URL '%3$s' a les crides de l'API per als URL que requereixen autenticació."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/cs.json b/plugins/API/lang/cs.json
index 7c9e842380..1a3fa51968 100644
--- a/plugins/API/lang/cs.json
+++ b/plugins/API/lang/cs.json
@@ -1,18 +1,17 @@
{
"API": {
"ChangeTokenHint": "Pokud chcete tento token změnit, %1$spřejdtě na svou stránku s osobními nastaveními%2$s",
- "GenerateVisits": "Pokud pro dnešek nemáte data, můžete je nejprve vygenerovat pomocí zásuvného modulu %1$s. Můžete povolit zásuvný modul %2$s a poté kliknout na 'Generátor návštěv' v menu v administrační části Matomou",
+ "EvolutionMetricName": "%s Vývoj",
+ "Glossary": "Glosář",
"KeepTokenSecret": "Tento token_auth je tajný jako vaše uživatelské jméno a heslo, %1$s neříkejte jej nikomu jinému %2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Přečtěte si o běžně používaných výrazech, abyste mohli co nejlépe využít Matomo Analytics.",
"LoadedAPIs": "Úspěšně načteno %s API",
+ "MainMetricsReportDocumentation": "Tato sestava poskytuje přehled nejdůležitějších metrik ve všech kategoriích a pluginech.",
"MoreInformation": "Pro více informací o API Matomou se podívejte na %1$s Úvod do API Matomou %2$s a %3$s Referenci API Matomou %4$s",
"PluginDescription": "Všechna data v Matomou jsou dostupná pomocí jednoduchých API. Tento zásuvný modul je vstupním bodem těchto webových služeb, který vám umožňuje získat vaše analytická data jako XML, JSON, CSV, PHP atd.",
"ReportingApiReference": "Reference API hlášení",
"TopLinkTooltip": "Zpřístupněte svoje Webové analýzy programově skrze jednoduché API pomocí json, xml a dalších.",
"UserAuthentication": "Autentifikace uživatele",
- "UsingTokenAuth": "Pokud chcete %1$s načíst data ze skriptu, cronu, atd. %2$s Potřebujete přidat parametr %3$s k voláním API, které vyžadují přihlášení",
- "Glossary": "Glosář",
- "MainMetricsReportDocumentation": "Tato sestava poskytuje přehled nejdůležitějších metrik ve všech kategoriích a pluginech.",
- "LearnAboutCommonlyUsedTerms2": "Přečtěte si o běžně používaných výrazech, abyste mohli co nejlépe využít Matomo Analytics.",
- "EvolutionMetricName": "%s Vývoj"
+ "UsingTokenAuth": "Pokud chcete %1$s načíst data ze skriptu, cronu, atd. %2$s Potřebujete přidat parametr %3$s k voláním API, které vyžadují přihlášení"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/da.json b/plugins/API/lang/da.json
index d48b0045b0..493ffeba4d 100644
--- a/plugins/API/lang/da.json
+++ b/plugins/API/lang/da.json
@@ -1,16 +1,15 @@
{
"API": {
"ChangeTokenHint": "Hvis du ønsker at ændre dette token, så gå til din %1$sside for personlige indstillingere%2$s.",
- "GenerateVisits": "Hvis du ikke har data for i dag ,kan du generere nogle data ved hjælp af %1$s programudvidelsen. Aktiver %2$s programudvidelsen, og klik derefter på 'Besøgsgenerator' i menuen under indstillinger.",
+ "EvolutionMetricName": "%s Udvikling",
+ "Glossary": "Ordliste",
"KeepTokenSecret": "Token_auth er ligeså hemmeligt som brugernavn og adgangskode, %1$sdel det ikke ud%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Forstå de hyppigst anvendte ord for at få mest muligt ud af Matomo.",
"LoadedAPIs": "%s APIs indlæst",
"MoreInformation": "Mere information om Matomo API'er, findes på %1$sIntroduktion til Matomo API%2$s og %3$sMatomo API Reference%4$s.",
"PluginDescription": "Alle data i Matomo er tilgængelig gennem enkle API'er. Denne udvidelse er en webservice indgang, som kaldes for at få Web Analytics-data i xml, JSON, php, csv etc.",
"ReportingApiReference": "Rapporterings API Reference",
"TopLinkTooltip": "Få adgang til dine webanalyse data programmeringsmæssigt gennem en simpel API i JSON, XML, etc.",
- "UserAuthentication": "Brugergodkendelse",
- "Glossary": "Ordliste",
- "LearnAboutCommonlyUsedTerms2": "Forstå de hyppigst anvendte ord for at få mest muligt ud af Matomo.",
- "EvolutionMetricName": "%s Udvikling"
+ "UserAuthentication": "Brugergodkendelse"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/es-ar.json b/plugins/API/lang/es-ar.json
index b3140b48bd..cc1359d610 100644
--- a/plugins/API/lang/es-ar.json
+++ b/plugins/API/lang/es-ar.json
@@ -1,18 +1,17 @@
{
"API": {
"ChangeTokenHint": "Si querés cambiar esta clave, por favor, andá a tu %1$spágina personal de configuración%2$s.",
- "GenerateVisits": "Si no tenés los datos de hoy, primero podés generar algunos datos mediante el plugin %1$s. Podés habilitar el plugin %2$s, luego hacer clic en el menú \"Generador de visitante\" en el área de administración de Matomo.",
+ "EvolutionMetricName": "%s Evolution",
+ "Glossary": "Glosario",
"KeepTokenSecret": "Esta token_auth es tan secreta como tu nombre de usuario y contraseña, %1$s ¡no la compartás%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Aprendé más sobre los términos usados comúnmente para sacar el mayor provecho a los análisis de Matomo.",
"LoadedAPIs": "Se cargaron %s APIs exitosamente",
+ "MainMetricsReportDocumentation": "Este informe te da un pantallazo de las métricas más importantes de todas las categorías y plugins.",
"MoreInformation": "Para más información acerca de las APIs de Matomo, por favor, mirá la %1$s Introducción a la API de Matomo %2$s y a la %3$s Referencia de las API de Matomo %4$s.",
"PluginDescription": "Todos los datos en Matomo están disponibles a través de simples APIs. Este plugin es el punto de entrada al servicio web, al que podés llamar para obtener todos tus análisis web en XML, JSON, PHP, CSV, etc.",
"ReportingApiReference": "Informe de referencia de API",
"TopLinkTooltip": "Accedé a tus datos de análisis web programáticamente, a través de una sencilla API en JSON, XML, etc.",
"UserAuthentication": "Autenticación de usuario",
- "UsingTokenAuth": "Si querés %1$ssolicitar datos dentro de un script, un crontab, etc%2$s necesitás agregar el parámetro de la dirección web %3$s a las direcciones web de llamada de la API que requieren autenticación.",
- "Glossary": "Glosario",
- "MainMetricsReportDocumentation": "Este informe te da un pantallazo de las métricas más importantes de todas las categorías y plugins.",
- "LearnAboutCommonlyUsedTerms2": "Aprendé más sobre los términos usados comúnmente para sacar el mayor provecho a los análisis de Matomo.",
- "EvolutionMetricName": "%s Evolution"
+ "UsingTokenAuth": "Si querés %1$ssolicitar datos dentro de un script, un crontab, etc%2$s necesitás agregar el parámetro de la dirección web %3$s a las direcciones web de llamada de la API que requieren autenticación."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/es.json b/plugins/API/lang/es.json
index 732aa96f69..02b6ccec0e 100644
--- a/plugins/API/lang/es.json
+++ b/plugins/API/lang/es.json
@@ -1,16 +1,15 @@
{
"API": {
"ChangeTokenHint": "Si quieres cambiar este token, por favor ve hacia tu %1$s página de ajustes de usuario %2$s",
- "GenerateVisits": "Si no tiene los datos de hoy puede generar primero algunos datos mediante el complemento %1$s. Puede habilitar el complemento %2$s, después haga clic en el menú 'Generador de Visitas' en el área Administración de Matomo.",
+ "EvolutionMetricName": "Evolución %s",
+ "Glossary": "Glosario",
"KeepTokenSecret": "Este token_auth es tan secreto como su nombre de usuario y contraseña, %1$s no lo comparta %2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Conozca más acerca de los términos más utilizados para maximizar sus analíticas Matomo.",
"LoadedAPIs": "Se han cargado %s APIs exitosamente",
"MoreInformation": "Para mayor información acerca de las APIs de Matomo, por favor lea la %1$s Introducción a las API Matomo %2$s y la %3$s Referencias de las API Matomo %4$s.",
"PluginDescription": "Toda la información en Matomo está disponible a través de simples APIs. Este complemento es el punto de entrada del servicio de internet, al que puede convocar para obtener la información analítica de internet sea en formato xml, json, php, csv, etc.",
"ReportingApiReference": "Informando Referencia API",
"TopLinkTooltip": "Acceda a sus datos de análisis de internet programáticamente, a través de una sencilla API en json, xml, etc.",
- "UserAuthentication": "Autenticación de usuario",
- "Glossary": "Glosario",
- "LearnAboutCommonlyUsedTerms2": "Conozca más acerca de los términos más utilizados para maximizar sus analíticas Matomo.",
- "EvolutionMetricName": "Evolución %s"
+ "UserAuthentication": "Autenticación de usuario"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/fi.json b/plugins/API/lang/fi.json
index 6c38b7edaa..a8a0097dd7 100644
--- a/plugins/API/lang/fi.json
+++ b/plugins/API/lang/fi.json
@@ -1,15 +1,14 @@
{
"API": {
"ChangeTokenHint": "Jos haluat vaihtaa tämän poletin, mene %1$shenkilökohtaiselle asetussivullesi%2$s.",
- "GenerateVisits": "Jos sinulla ei ole yhtään tietoja tälle päivälle, voit generoida satunnaisia tietoja käyttämällä lisäosaa %1$s. Voit ottaa käyttöön %2$s-lisäosan ja painaa 'Vierailijoiden luominen'-linkkiä Matomon ylläpitosivulla.",
+ "Glossary": "Sanasto",
"KeepTokenSecret": "Tämä token_auth on yhtä salainen kuin salasanasi, %1$s älä jaa sitä%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Lue lisää usein käytetyistä termeistä saadaksesi kaiken irti Matomo-analytiikasta.",
"LoadedAPIs": "Ladattiin %s APIa",
"MoreInformation": "Lisätietoa Matomon APIsta löytyy sivulta %1$sJohdatus Matomon APIin%2$s ja %3$sMatomon API%4$s.",
"PluginDescription": "Kaikki Matomossa olevat tiedot on saatavilla yksinkertaisten APIen kautta. Tämä lisäosa on API verkkosivuille. Tämän lisäosan kautta voit ladata tiedot xml:nä, json:ina, php:nä, csv:nä jne.",
"ReportingApiReference": "Raportointi-API:n referenssi",
"TopLinkTooltip": "Hae analytiikkatietoja automaattisesti yksinkertaisella API:lla JSON:lla, XML:llä jne.",
- "UserAuthentication": "Käyttäjän autentikointi",
- "Glossary": "Sanasto",
- "LearnAboutCommonlyUsedTerms2": "Lue lisää usein käytetyistä termeistä saadaksesi kaiken irti Matomo-analytiikasta."
+ "UserAuthentication": "Käyttäjän autentikointi"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/he.json b/plugins/API/lang/he.json
index 3251a4ed91..574b86093e 100644
--- a/plugins/API/lang/he.json
+++ b/plugins/API/lang/he.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "אם אין לך מידע להיום ניתן קודם כל לחולל מידע בעזרת התוסף %1$s. ניתן להפעיל את התוסף %2$s, ולאחר מכן לחולל מידע על מבקרים דרך פאנל הניהול של Matomo.",
"KeepTokenSecret": "הtoken_auth סודי ביותר כמו שם המשתמש והסיסמה, %1$s אין לשתף אף אחד בפרטים אלו%2$s!",
"LoadedAPIs": "%s APIים נטענו בהצלחה",
"MoreInformation": "למידע נוסף עבור הAPIים של Matomo, מומלץ להציץ ב%1$sהיכרות עם הAPI של Matomo%2$s וגם ב%3$sהעמקה אודות הAPI של Matomo%4$s.",
"UserAuthentication": "אימות משתמש"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/hi.json b/plugins/API/lang/hi.json
index 9849bfabc6..b6ba13538c 100644
--- a/plugins/API/lang/hi.json
+++ b/plugins/API/lang/hi.json
@@ -1,10 +1,9 @@
{
"API": {
- "GenerateVisits": "आप आज के लिए डेटा नहीं है, तो आप पहले %1$s प्लगइन का उपयोग कर कुछ डेटा उत्पन्न कर सकते हैं. आप %2$s प्लगइन सक्षम कर सकते हैं, तो Matomo व्यवस्थापक क्षेत्र में 'आगंतुक जेनरेटर' मेनू पर क्लिक करें.",
"KeepTokenSecret": "इस टोकन प्रमाणन अपने लॉगिन और पासवर्ड के रूप में गुप्त रूप है, %1$s %2$s यह साझा नहीं करते हैं!",
"LoadedAPIs": "सफलतापूर्वक लोड %s एपीआई",
"MoreInformation": "Matomo एपीआई के बारे में अधिक जानकारी के लिए,कृपया %1$s Matomo एपीआई %2$s और %3$s Matomo एपीआई संदर्भ %4$s के परिचय पर एक नजर डाले",
"TopLinkTooltip": "Json, xml, आदि में एक सरल एपीआई के माध्यम से प्रोग्राम के रूप में अपने वेब विश्लेषिकी डेटा का उपयोग करे",
"UserAuthentication": "प्रयोगकर्ता का प्रामाणीकरण"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/hr.json b/plugins/API/lang/hr.json
index 24f1069fde..ea82d33f02 100644
--- a/plugins/API/lang/hr.json
+++ b/plugins/API/lang/hr.json
@@ -1,6 +1,5 @@
{
"API": {
- "GenerateVisits": "Ako ne postoje podaci za danas, možete ih kreirati pomoću %1$s plugina. Prvo uključite %2$s plugin, zatim koristite opciju 'Kreiraj posjetitelje' u izborniku Matomo administracije.",
"LoadedAPIs": "%s API je uspješno učitan"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/hu.json b/plugins/API/lang/hu.json
index 4b9c811b1d..90f80905d4 100644
--- a/plugins/API/lang/hu.json
+++ b/plugins/API/lang/hu.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "Ha nem volt még ma látogató, automatikusan generálhatsz mintaadatokat a %1$s kiegészítő segítségével. A %2$s kiegészítőt a Matomo adminisztrációs felületén megjelenő Látogatógenerálás menüpontra kattintva engedélyezheted.",
"KeepTokenSecret": "Ez a token_auth nevű kód pontosan annyira érzékeny adat mint a felhasználói neved és jelszavad, ezért %1$s ne oszd meg mindenkivel%2$s!",
"LoadedAPIs": "A(z) %s API sikeresen betöltődött.",
"MoreInformation": "További információkért a Matomo API-kkal kapcsolatban kérjük, tekintse meg a %1$s Introduction to Matomo API %2$s és a %3$s Matomo API Reference %4$s című leírásokat.",
"UserAuthentication": "Felhasználó autentikációja"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/id.json b/plugins/API/lang/id.json
index a393db4cda..d5a96d1e01 100644
--- a/plugins/API/lang/id.json
+++ b/plugins/API/lang/id.json
@@ -1,14 +1,18 @@
{
"API": {
"ChangeTokenHint": "Jika Anda ingin mengganti token ini, silakan menuju %1$s pengaturan halaman Anda %2$s.",
- "GenerateVisits": "Bila Anda tidak memiliki data untuk hari ini, Anda dapat membuat beberapa menggunakan pengaya %1$s. Anda dapat mengaktifkan pengaya %2$s, lalu klik menu 'Pembangkit Kunjungan' di halaman Pengurus Matomo.",
+ "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!",
- "LoadedAPIs": "Berhasil memuat API %s",
- "MoreInformation": "Untuk informasi selengkapnya tentang API Matomo, silakan melihat %1$s Pengenalan API Matomo%2$s dan %3$sReferensi API Matomo%4$s.",
- "PluginDescription": "Semua data di Matomo tersedia melalui API sederhana. Plugin ini adalah titik masuk layanan web, yang dapat Anda hubungkan untuk mendapatkan data Web Analytics Anda dalam bentuk xml, json, php, csv, dll.",
+ "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.",
+ "MoreInformation": "Info lebih lanjut tentang Matomo API tersedia di %1$sPengantar Matomo API%2$s dan %3$sReferensi Matomo API%4$s.",
+ "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 Analisis Ramatraya terprogram melalui API sederhana dalam json, xml, dan lain lain.",
+ "TopLinkTooltip": "Akses data Analitik Web Anda secara terprogram melalui API sederhana di JSON, XML, dll.",
"UserAuthentication": "Otentikasi pengguna",
- "Glossary": "Glosarium"
+ "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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/is.json b/plugins/API/lang/is.json
index 922fc932f4..ee815ce2d7 100644
--- a/plugins/API/lang/is.json
+++ b/plugins/API/lang/is.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "Ef þú hefur ekki gögn dagsins í dag verður þú fyrst að búa til gögn með að nota %1$s íbótina. Virkjaðu %2$s íbótina og smelltu síðan á valmyndinni 'Gesta framleiðni' í Matomo umsjónarmanns svæðinu.",
"KeepTokenSecret": "Þessi tókar auðkenning er eins leynd og þitt notendanafn og lykilorð %1$s deilið því ekki%2$s!",
"LoadedAPIs": "Tókst að hlaða %s API",
"MoreInformation": "Fyrir frekari upplýsingar um Matomo API, Vinsamlegast skoðið %1$s Inngangur að Matomo API %2$s og %3$s Matomo API Tilvísunir %4$s.",
"UserAuthentication": "Notenda auðkenning"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/it.json b/plugins/API/lang/it.json
index 506b2a6d85..0eb4d39ed8 100644
--- a/plugins/API/lang/it.json
+++ b/plugins/API/lang/it.json
@@ -1,18 +1,17 @@
{
"API": {
"ChangeTokenHint": "Se desideri cambiare questo token, vai alla tua %1$spagina delle impostazioni personali%2$s.",
- "GenerateVisits": "Se oggi non hai ricevuto dati, puoi generarli usando il plugin %1$s. Abilita il plugin %2$s, quindi clicca su \"Generatore di Visite\" nell'area amministrazione Matomo.",
+ "EvolutionMetricName": "%s Evoluzione",
+ "Glossary": "Glossario",
"KeepTokenSecret": "Questo token_auth è segreto come il tuo login e la tua password, %1$s non condividerlo %2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Scopri i termini comunemente utilizzati per ottenere il massimo da Matomo Analytics.",
"LoadedAPIs": "Sono state caricate con successo %s API",
+ "MainMetricsReportDocumentation": "Questo report offre una panoramica delle metriche più importanti in tutte le categorie e i plug-in.",
"MoreInformation": "Per ulteriori informazioni sulle API di Matomo, si prega di dare un'occhiata alla %1$s Introduzione alle API di Matomo %2$s e alla %3$s Guida di Riferimento delle API di Matomo %4$s.",
"PluginDescription": "Tutti i dati di Matomo sono disponibili tramite semplici API. Questo plugin è la porta d'accesso al servizio web che puoi utilizzare per avere i dati delle tue statistiche web in xml, json, php, csv, ecc.",
"ReportingApiReference": "Segnalazione Riferimenti API",
"TopLinkTooltip": "Accedi ai tuoi dati di Web Analytics tramite le semplici API in JSON, XML, ecc",
"UserAuthentication": "Autenticazione utente",
- "UsingTokenAuth": "Se desideri %1$s richiedere dati all'interno di uno script, un crontab, ecc., %2$sè necessario aggiungere il parametro URL %3$s agli URL delle chiamate API che richiedono l'autenticazione.",
- "Glossary": "Glossario",
- "MainMetricsReportDocumentation": "Questo report offre una panoramica delle metriche più importanti in tutte le categorie e i plug-in.",
- "LearnAboutCommonlyUsedTerms2": "Scopri i termini comunemente utilizzati per ottenere il massimo da Matomo Analytics.",
- "EvolutionMetricName": "%s Evoluzione"
+ "UsingTokenAuth": "Se desideri %1$s richiedere dati all'interno di uno script, un crontab, ecc., %2$sè necessario aggiungere il parametro URL %3$s agli URL delle chiamate API che richiedono l'autenticazione."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/ka.json b/plugins/API/lang/ka.json
index fa34b50281..028a9b8d64 100644
--- a/plugins/API/lang/ka.json
+++ b/plugins/API/lang/ka.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "თუ დღეისთვის არ გაქვთ მონაცემები, შეგიძლიათ ჯერ %1$s პლაგინის გამოყენებით დააგენერიროთ რამდენიმე მონაცემი. შეგიძლიათ ჩართოთ პლაგინი %2$s, შემდეგ Matomo ადმინისტრირების ზონაში დააწკაპუნოთ \"ვიზიტორების გენერატორი\" მენიუზე.",
"KeepTokenSecret": "ეს token_auth ისევე საიდუმლოა, როგორც თქვენი მომხმარებლის სახელი და პაროლი, %1$s არავის გაუზიაროთ ის%2$s!",
"LoadedAPIs": "%s API ფუნქციები წარმატებით ჩაიტვირთა",
"MoreInformation": "Matomo API ფუნქციების შესახებ დამატებითი ინფორმაციისთვის გთხოვთ, გადახედოთ მასალებს %1$s Matomo API ფუნქციბის გამოყენების ინსტრუქცია %2$s და %3$s Matomo API ფუნქციების ცნობარი %4$s.",
"UserAuthentication": "მომხმარებლის აუტენთიფიკაცია"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/ko.json b/plugins/API/lang/ko.json
index 2f65c4c837..0711031d3c 100644
--- a/plugins/API/lang/ko.json
+++ b/plugins/API/lang/ko.json
@@ -1,16 +1,15 @@
{
"API": {
"ChangeTokenHint": "만약 이 토큰을 변경하고 싶으시다면, %1$s 에 있는 개인 설정페이지 %2$s 에서 변경하실 수 있습니다.",
- "GenerateVisits": "오늘에 해당하는 데이터가 없는 경우는 %1$s 플러그인을 사용하여 처음 약간의 데이터를 생성할 수 있습니다. %2$s 플러그인을 활성화하고 관리 영역에서 '방문자 생성기'메뉴를 클릭하세요.",
+ "Glossary": "용어",
"KeepTokenSecret": "token_auth는 외부 로그인을 위한 비밀키입니다. %1$s 절대로 공유하지 마세요 %2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Matomo Analytics 에서 자주 사용되는 용어 배우기",
"LoadedAPIs": "성공적으로 %s API를 불러옴",
"MoreInformation": "Matomo API에 대한 자세한 내용은 %1$sIntroduction to Matomo API %2$s 문서와 %3$sMatomo API Reference%4$s 문서를 참조하세요.",
"PluginDescription": "Matomo 내 모든 데이터는 간단한 API를 통해서 접근할 수 있습니다. 이 플러그인은 웹 분석 데이터를 xml, json, php, csv 등의 형태로 받을 수 있는 웹 서비스 진입로입니다.",
"ReportingApiReference": "API 레퍼런스 보고",
"TopLinkTooltip": "JSON, XML 등의 간단한 API를 통해 프로그래밍 방식으로 웹 로그 분석 데이터에 접근할 수 있습니다.",
"UserAuthentication": "사용자 인증",
- "UsingTokenAuth": "%1$s 스크립트 (crontab 등)에서 요청 데이터를 얻고 싶다면 %2$s는 API를 호출하는 URL (인증 필요)에 매개 변수 %3$s를 추가해야합니다.",
- "Glossary": "용어",
- "LearnAboutCommonlyUsedTerms2": "Matomo Analytics 에서 자주 사용되는 용어 배우기"
+ "UsingTokenAuth": "%1$s 스크립트 (crontab 등)에서 요청 데이터를 얻고 싶다면 %2$s는 API를 호출하는 URL (인증 필요)에 매개 변수 %3$s를 추가해야합니다."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/lt.json b/plugins/API/lang/lt.json
index 57864895c0..c7e260d2cc 100644
--- a/plugins/API/lang/lt.json
+++ b/plugins/API/lang/lt.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "Jei neturite duomenų šiandienai , galite sugeneruoti jų pasinaudoję %1$s papildiniu. Įjunkite šį %2$s papildinį, tada spauskite ant 'Apsilankymų generatorius' meniu Matomo administratoriaus srityje.",
"KeepTokenSecret": "Šis token_auth yra slaptas kaip ir naudotojo vardas bei slaptažodis, %1$s neviešinkite jo%2$s!",
"LoadedAPIs": "Sėkmingai įkrautos API sąsajos (%s).",
"MoreInformation": "Norinčius gauti daugiau informacijos apie Matomo API sąsajas, prašome žvilgtelėti į %1$s Įvadas į Matomo API %2$s ir %3$s Matomo API informacija %4$s.",
"UserAuthentication": "Naudotojo autentifikavimas"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/nl.json b/plugins/API/lang/nl.json
index 5a784e57f5..a8883ad770 100644
--- a/plugins/API/lang/nl.json
+++ b/plugins/API/lang/nl.json
@@ -2,7 +2,6 @@
"API": {
"ChangeTokenHint": "Als u deze token wilt wijzigen, gaat u naar uw %1$spersoonlijke instellingen-pagina%2$s.",
"EvolutionMetricName": "%s Trends",
- "GenerateVisits": "Als u geen data hebt voor vandaag, kunt u eerst wat data genereren met de %1$s plugin. U kunt de %2$s plugin inschakelen, en dan klikken op het 'Bezoekers Generator' menu in het Matomo beheer gedeelte.",
"Glossary": "Woordenlijst",
"KeepTokenSecret": "Deze token_auth is even geheim als uw login en wachtwoord, %1$sdeel het met niemand%2$s!",
"LearnAboutCommonlyUsedTerms2": "Leer over de standaard gebruikte termen om het meeste uit Matomo Analytics te halen.",
diff --git a/plugins/API/lang/pl.json b/plugins/API/lang/pl.json
index b91271669f..3f34a45390 100644
--- a/plugins/API/lang/pl.json
+++ b/plugins/API/lang/pl.json
@@ -1,16 +1,15 @@
{
"API": {
"ChangeTokenHint": "W celu zmiany tokenu, proszę odwiedź %1$s strony ustawień osobistych %2$s.",
- "GenerateVisits": "Jeżeli nie posiadasz żadnych danych do dnia dzisiejszego, możesz na początek wygenerować trochę symulowanych danych testowych używając wtyczki o nazwie %1$s. Możesz aktywować i uruchomić wtyczkę %2$s, a następnie kliknąć w menu przycisk Potwierdź w 'generatorze odwiedzin', w strefie menu Konfiguracja administratora systemu Matomo.",
+ "EvolutionMetricName": "%s Zmiany",
+ "Glossary": "Słownik",
"KeepTokenSecret": "Ten token_auth jest tak samo tajny jak twój login i hasło, %1$s nie upowszechniaj go%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Poznaj najczęściej wykorzystywane zwroty, aby jak najlepiej wykorzystać możliwości Statystyk Matomo.",
"LoadedAPIs": "Środowisko API załadowano %s pomyślnie",
"MoreInformation": "Aby uzyskać więcej informacji o interfejsie API statystyk Matomo, prosimy przeczytać %1$s Wprowadzenie do interfejsu API w Matomo%2$s, a także na stronie opracowania %3$s Matomo API Reference%4$s.",
"PluginDescription": "Wszystkie dane w Matomo są dostępne poprzez proste API. Ta wtyczka jest punktem wejściowym usługi sieciowej, którą możesz wywołać, aby uzyskać swoje statystyki w formacie xml, json, php, csv, itd.",
"ReportingApiReference": "Referencje API Raportów",
"TopLinkTooltip": "Dostęp do twoich danych analitycznych programistycznie poprzez proste API w formatach json, xml itp.",
- "UserAuthentication": "Uwierzytelnianie użytkownika",
- "Glossary": "Słownik",
- "LearnAboutCommonlyUsedTerms2": "Poznaj najczęściej wykorzystywane zwroty, aby jak najlepiej wykorzystać możliwości Statystyk Matomo.",
- "EvolutionMetricName": "%s Zmiany"
+ "UserAuthentication": "Uwierzytelnianie użytkownika"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/pt-br.json b/plugins/API/lang/pt-br.json
index f5cd941959..93223c1f5f 100644
--- a/plugins/API/lang/pt-br.json
+++ b/plugins/API/lang/pt-br.json
@@ -2,17 +2,17 @@
"API": {
"ChangeTokenHint": "Se você quiser alterar esse token, vá para a 1%1$s página de configurações pessoais 2%2$s.",
"EvolutionMetricName": "%s Evolução",
- "GenerateVisits": "Se você não tem nenhum dado hoje, primeiro você pode gerar alguns dados usando o plugin %1$s. Basta ativar o plugin %2$s e clicar no menu \"Gerador de Visitantes\" na área de Admin do Matomo.",
+ "GenerateVisits": "Se você não tiver dados para hoje, você pode gerar alguns usando o plugin %1$s indo em 'Desenvolvimento → Gerador de Visitantes' na área de administração do Matomo.",
"Glossary": "Glossário",
"KeepTokenSecret": "Esse token_auth é tão secreto quanto seu login e sua senha, %1$s não compartilhe isso %2$s!",
- "LearnAboutCommonlyUsedTerms2": "Saiba mais sobre os termos comumente usados para tirar o máximo do Matomo Analytics.",
- "LoadedAPIs": "%s APIs carregadas com sucesso",
- "MainMetricsReportDocumentation": "Este relatório oferece uma visão geral das métricas mais importantes em todas as categorias e plugins.",
- "MoreInformation": "Para mais informações sobre as APIs Matomo, por favor, dê uma olhada no %1$s Introdução para Matomo API %2$s e a %3$s API Matomo de Referência %4$s.",
- "PluginDescription": "Todos os dados em Matomo estão disponíveis através da APIs simples. Este plugin é o ponto de entrada do serviço web, que você pode chamar para obter seus dados de Web Analytics em XML, JSON, php, CSV, etc.",
+ "LearnAboutCommonlyUsedTerms2": "Saiba mais sobre os termos mais usados para aproveitar ao máximo a análise do Matomo.",
+ "LoadedAPIs": "%s APIs carregadas",
+ "MainMetricsReportDocumentation": "Este relatório fornece uma visão geral das métricas mais importantes em todas as categorias e plugins.",
+ "MoreInformation": "Mais informações sobre as APIs do Matomo disponíveis em %1$sIntrodução à API do Matomo%2$s e a %3$sReferência da API do Matomo%4$s.",
+ "PluginDescription": "Todos os dados em Matomo estão disponíveis através da APIs simples. Este plugin é o ponto de entrada do serviço web, que você pode chamar para obter seus dados de análise web em XML, JSON, PHP, CSV, etc.",
"ReportingApiReference": "Reportando Referência do API",
- "TopLinkTooltip": "Acesse seus dados de Análise Web de forma programática através de uma API simples em json, xml, etc.",
+ "TopLinkTooltip": "Acesse seus dados de análise web de forma programática através de uma API simples em JSON, XML, etc.",
"UserAuthentication": "Autenticação de usuário",
- "UsingTokenAuth": "Se você deseja %1$s solicitar dados em um script, um crontab, etc. %2$s, você precisa adicionar o parâmetro de URL %3$s às URLs de chamadas de API que requerem autenticação."
+ "UsingTokenAuth": "Se você deseja %1$ssolicitar dados em um script, um crontab, etc.%2$s, você precisa adicionar o parâmetro de URL '%3$s' às chamadas de API para URLs que exigem autenticação."
}
}
diff --git a/plugins/API/lang/pt.json b/plugins/API/lang/pt.json
index d2feea1608..be1201f791 100644
--- a/plugins/API/lang/pt.json
+++ b/plugins/API/lang/pt.json
@@ -2,7 +2,6 @@
"API": {
"ChangeTokenHint": "Se quiser alterar este código, por favor, aceda à sua %1$spágina de definições pessoais%2$s.",
"EvolutionMetricName": "Evolução de %s",
- "GenerateVisits": "Se não tem dados para hoje, pode gerar primeiro alguns utilizando a extensão %1$s. Pode ativar a extensão %2$s e depois clicar no menu 'Gerador de Visitante' na área de «Administração» do Matomo.",
"Glossary": "Glossário",
"KeepTokenSecret": "Este token_auth é tão secreto como o seu nome de utilizador e a palavra-passe. %1$s não o partilhe%2$s!",
"LearnAboutCommonlyUsedTerms2": "Saber mais sobre os termos mais utilizados para obter o máximo do Matomo Analytics.",
diff --git a/plugins/API/lang/ro.json b/plugins/API/lang/ro.json
index 01fae2cdb6..5b674bb664 100644
--- a/plugins/API/lang/ro.json
+++ b/plugins/API/lang/ro.json
@@ -1,13 +1,12 @@
{
"API": {
- "GenerateVisits": "Daca nu ai date pentru astazi, prima data poti genera date folosind pluginul %1$s. Poti activa pluginul %2$s, apoi apasa pe meniul 'Visitor Generator' in aria de administrare Matomo Admin.",
+ "Glossary": "Glosar",
"KeepTokenSecret": "Acest token_auth este secret cum sunt login-ul si parola, %1$s nu le fa publice%2$s!",
"LoadedAPIs": "%s API-uri încarcate cu succes",
"MoreInformation": "Pentru mai multe informatii despre API-urile Matomo, va rugam sa va uitati la %1$s Introducere la Matomo API %2$s si la %3$s Referinte Matomo API %4$s.",
"PluginDescription": "Toate informaţiile din Matomo sunt disponibile prin simple API-uri. Acest plugin este punctul de intrare al serviciului web prin care poţi prelua date Web Analytics în format xml, json, php, csv, etc.",
"ReportingApiReference": "Referinţe API de raportare",
"TopLinkTooltip": "Acceseaza datele tale de Web Analytics in mod organizat prin intermediul unui simplu API in json, xml, etc.",
- "UserAuthentication": "Identificare utilizator",
- "Glossary": "Glosar"
+ "UserAuthentication": "Identificare utilizator"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/ru.json b/plugins/API/lang/ru.json
index 923ba6d580..ac49bfae1d 100644
--- a/plugins/API/lang/ru.json
+++ b/plugins/API/lang/ru.json
@@ -1,16 +1,15 @@
{
"API": {
"ChangeTokenHint": "Если вы хотите изменить этот токен, пожалуйста, пройдите на вашу %1$sстраницу персональных настроек%2$s.",
- "GenerateVisits": "Если у вас нет данных на сегодня, вы можете для начала сгенерировать немного статистики, используя плагин: %1$s. Включите плагин %2$s, кликните на ’Visitor Generator’ в панели администрирования Matomo.",
+ "EvolutionMetricName": "%s Динамика",
+ "Glossary": "Глоссарий",
"KeepTokenSecret": "Этот token_auth является таким же секретным, как ваш логин и пароль. %1$s НЕ СООБЩАЙТЕ ЕГО НИКОМУ%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Узнайте о наиболее часто используемых терминах, чтобы максимально использовать Matomo Analytics.",
"LoadedAPIs": "%s API успешно загружены",
"MoreInformation": "Чтобы узнать больше информации о Matomo API, пожалуйста, посмотрите раздел %1$s Introduction to Matomo API %2$s и %3$s Matomo API Reference %4$s.",
"PluginDescription": "Все данные из Matomo доступны через простые API. Этот плагин является входной точкой для веб сервиса, который можно вызвать чтобы получить данные веб аналитики в xml, json, php, csv и др.",
"ReportingApiReference": "Сообщение справочной информации по API",
"TopLinkTooltip": "Получайте доступ к вашей веб-аналитике с помощью простого API и использования json, xml и др.",
- "UserAuthentication": "Аутентификация пользователя",
- "Glossary": "Глоссарий",
- "LearnAboutCommonlyUsedTerms2": "Узнайте о наиболее часто используемых терминах, чтобы максимально использовать Matomo Analytics.",
- "EvolutionMetricName": "%s Динамика"
+ "UserAuthentication": "Аутентификация пользователя"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/sl.json b/plugins/API/lang/sl.json
index 47ab3032f0..64b52a9ed2 100644
--- a/plugins/API/lang/sl.json
+++ b/plugins/API/lang/sl.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "Če nimate današnjih podatkov, potem lahko najprej ustvarite nekaj podatkov s %1$s vtičnikom. Vtičnik %2$s lahko omogočite in nato kliknete na 'Visitor Generator' meni v Matomo administraciji.",
"KeepTokenSecret": "Ta žeton je skriven, kot vaše uporabniško ime in geslo, %1$s ne delite ga z drugimi %2$s!",
"LoadedAPIs": "Uspešno naloženih %s API-jev",
"MoreInformation": "Za več informacij o Matomo API-ju, si oglejte %1$sNavodila za uporabo Matomo API-ja %2$s in %3$s Matomo API Reference %4$s.",
"UserAuthentication": "Overitev uporabnika"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/sq.json b/plugins/API/lang/sq.json
index 930dfc2d97..90eebfb461 100644
--- a/plugins/API/lang/sq.json
+++ b/plugins/API/lang/sq.json
@@ -1,18 +1,18 @@
{
"API": {
- "ChangeTokenHint": "Nëse doni ta ndryshoni këtë token, ju lutemi, shkoni te %1$sfaqja juaj e rregullimeve personale%2$s.",
- "GenerateVisits": "Nëse s’keni të dhëna për ditën e sotme, mund të prodhonit ca të dhëna duke përdorur shtojcën %1$s. Shtojcën %2$s mund ta aktivizoni, mandej klikoni mbi menunë 'Gjenerator Vizitorësh' te pjesa Përgjegjës Matomo-je.",
+ "ChangeTokenHint": "Nëse doni ta ndryshoni këtë token, ju lutemi, shkoni te %1$sfaqja juaj personale e rregullimeve%2$s.",
+ "EvolutionMetricName": "Ecuri e %s",
+ "GenerateVisits": "Nëse s’keni të dhëna për ditën e sotme, mund të prodhonit ca të dhëna duke përdorur shtojcën %1$s, duke kaluar te 'Zhvillim → Prodhues Vizitorësh', te pjesa e administrimit të Matomo-s.",
+ "Glossary": "Fjalorth",
"KeepTokenSecret": "Ky token_auth është po aq i fshehtë sa të dhënat tuaja për hyrjen dhe fjalëkalimi juaj, %1$s mos ia jepni kujt%2$s!",
- "LoadedAPIs": "U ngarkuan me sukses %s API",
- "MoreInformation": "Për më tepër të dhëna rreth API-sh të Matomo-s, ju lutemi, hidhini një sy %1$s Hyrje në API-t e Matomo-s %2$s dhe %3$s Referencë API-sh Matomo %4$s.",
- "PluginDescription": "Në Matomo krejt të dhënat janë të passhme përmes API-sh të thjeshta. Kjo shtojcë është pika e hyrjes për një shërbim web, të cilin mund ta vini në punë për t’i pasur të dhënat tuaja të Analizave Web në format xml, json, php, csv, etj.",
+ "LearnAboutCommonlyUsedTerms2": "Mësoni më tepër rreth termash të përdorur rëndom, që të përfitoni maksimumin prej analizave Matomo.",
+ "LoadedAPIs": "U ngarkuan %s API",
+ "MainMetricsReportDocumentation": "Ky raport ju jep një përmbledhje të statistikave më të rëndësishme nëpër krejt kategoritë dhe shtojcat.",
+ "MoreInformation": "Më tepër hollësi rreth API-sh të Matomo-s gjeni te %1$s Hyrje në API-t e Matomo-s %2$s dhe %3$s Referencë API-sh Matomo %4$s.",
+ "PluginDescription": "Në Matomo krejt të dhënat janë të passhme përmes API-sh të thjeshta. Kjo shtojcë është pika e hyrjes për një shërbim web, të cilin mund ta vini në punë për t’i pasur të dhënat tuaja të analizave web në format XML, JSON, PHP, CSV, etj.",
"ReportingApiReference": "Referencë API Raportimesh",
- "TopLinkTooltip": "Hyni programatikisht te të dhënat tuaja të Analizave Web përmes një API-je të thjeshtë json, xml, etj.",
+ "TopLinkTooltip": "Përdorni programatikisht të dhënat tuaja të Analizave Web, përmes një API-je të thjeshtë, si JSON, XML, etj.",
"UserAuthentication": "Mirëfilltësim përdoruesi",
- "UsingTokenAuth": "Nëse doni %1$s të kërkoni të dhëna brenda një programthi, një crontab-i, etj. %2$s lypset të shtoni parametrin e URL-së %3$s te URL-të thirrëse të API-t që lypin doemos mirëfilltësim.",
- "Glossary": "Fjalorth",
- "MainMetricsReportDocumentation": "Ky raport ju jep një përmbledhje të statistikave më të rëndësishme nëpër krejt kategoritë dhe shtojcat.",
- "LearnAboutCommonlyUsedTerms2": "Mësoni më tepër rreth termash të përdorur rëndom, që të përfitoni maksimumin prej Matomo Analytics.",
- "EvolutionMetricName": "Ecuri e %s"
+ "UsingTokenAuth": "Nëse doni %1$s të kërkoni të dhëna brenda një programthi, një crontab-i, etj. %2$s, lypset të shtoni te thirrjet drejt API-t parametrin '%3$s' URL-sh, për URL që lypin mirëfilltësim."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/sr.json b/plugins/API/lang/sr.json
index 3798a93f38..5746f881bf 100644
--- a/plugins/API/lang/sr.json
+++ b/plugins/API/lang/sr.json
@@ -1,14 +1,13 @@
{
"API": {
"ChangeTokenHint": "Ukoliko želite da promenite ovaj token, molimo vas da to učinite na %1$sstranici sa ličnim podešavanjima%2$s.",
- "GenerateVisits": "Ukoliko nema podataka za danas, onda ih prvo generišite pomoću dodatka %1$s. Aktivirajte dodatak %2$s a onda kliknite na 'Generator posetilaca' na stranici za Matomo administraciju.",
+ "Glossary": "Rečnik",
"KeepTokenSecret": "token_auth je poverljivi podatak poput vašeg korisničkog imena i lozinke, stoga ga %1$s nemojte nikome pokazivati%2$s!",
"LoadedAPIs": "Uspešno učitano API-ja: %s",
"MoreInformation": "Za više informacija o Matomo API-ju molimo vas da pogledate %1$s uvod u Matomo API %2$s i %3$s Matomo API referenc listu %4$s.",
"PluginDescription": "Svi podaci su u Matomo-u dostupni preko jednostavnih API-ja. Ovaj dodatak je ulazna tačka za veb servis koji možete pozivati kako biste dobili vaše analitičke podatke u XML, JSON, PHP, CSV i drugim formatima.",
"ReportingApiReference": "Referenca API-ja za izveštavanje",
"TopLinkTooltip": "Pristupite analitičkim podacima iz vašeg programa pomoću jednostavnog API-ja u json-u, xml-u itd.",
- "UserAuthentication": "Autentifikacija korisnika",
- "Glossary": "Rečnik"
+ "UserAuthentication": "Autentifikacija korisnika"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/sv.json b/plugins/API/lang/sv.json
index be72101e43..8fae3bc06e 100644
--- a/plugins/API/lang/sv.json
+++ b/plugins/API/lang/sv.json
@@ -1,18 +1,17 @@
{
"API": {
"ChangeTokenHint": "Om du vill ändra denna token gå till din %1$spersonliga inställningssida%2$s.",
- "GenerateVisits": "Om du inte har data för idag så kan du först skapa några data med hjälp av %1$s plugin. Du kan aktivera %2$s plugin, klicka sedan på 'Besöksgeneratorn'-menyn i Matomo administrationsområdet.",
+ "EvolutionMetricName": "%s Utveckling",
+ "Glossary": "Ordbok",
"KeepTokenSecret": "Detta token_auth är lika hemligt som ditt användarnamn och lösenord, %1$s dela inte med dig av detta! %2$s!",
+ "LearnAboutCommonlyUsedTerms2": "Lär dig mer om de vanligaste termerna för att få ut mest av Matomo Analytics.",
"LoadedAPIs": "Laddade in %s API'er utan problem",
+ "MainMetricsReportDocumentation": "Denna rapport ger dig en översikt över de viktigaste mätvärdena i alla kategorier och plugins.",
"MoreInformation": "För mer information om Matomos API'er, ta en titt i %1$s Introduction to Matomo API %2$s och %3$s Matomo API Reference %4$s.",
"PluginDescription": "Allt data i Matomo finns tillgängligt genom enkla API:er. Denna plugin är en web service entry point, vilken du kan använda för att hämta ditt Matomo-data i formaten xml, json, php, csv, etc.",
"ReportingApiReference": "Rapporterings-API referens",
"TopLinkTooltip": "Få åtkomst till webbanalysdata programmatiskt genom ett enkelt API i t.ex. json, xml etc.",
"UserAuthentication": "Användarautentisering",
- "UsingTokenAuth": "Om du vill %1$s begära data i ett skript, en crontab, osv., %2$s behöver du lägga till en URL-parameter %3$s till URL:erna för API-anropen som kräver autentisering.",
- "Glossary": "Ordbok",
- "MainMetricsReportDocumentation": "Denna rapport ger dig en översikt över de viktigaste mätvärdena i alla kategorier och plugins.",
- "LearnAboutCommonlyUsedTerms2": "Lär dig mer om de vanligaste termerna för att få ut mest av Matomo Analytics.",
- "EvolutionMetricName": "%s Utveckling"
+ "UsingTokenAuth": "Om du vill %1$s begära data i ett skript, en crontab, osv., %2$s behöver du lägga till en URL-parameter %3$s till URL:erna för API-anropen som kräver autentisering."
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/th.json b/plugins/API/lang/th.json
index a8aa86af60..656c82b565 100644
--- a/plugins/API/lang/th.json
+++ b/plugins/API/lang/th.json
@@ -1,9 +1,8 @@
{
"API": {
- "GenerateVisits": "ถ้าคุณไม่มีข้อมูลสำหรับวันนี้ คุณสามารถสร้างข้อมูลบางอย่างใช้ปลั๊กอินการ %1$s เป็นครั้งแรก คุณสามารถเปิดใช้งานปลั๊กอิน %2$s แล้วคลิกที่เมนู 'ตัวสร้างผู้เข้าชม' ในพื้นที่จัดการ Matomo",
"KeepTokenSecret": "token_auth นี้จะเป็นความลับในการเข้าสู่ระบบและรหัสผ่านของคุณ %1$s ไม่แชร์ %2$s ได้",
"LoadedAPIs": "โหลด API %s สำเร็จแล้ว",
"MoreInformation": "สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Matomo APIs โปรดให้ดูที่ %1$s บทนำสู่การใช้ Matomo API %2$s และ %3$s แหล่งที่มาของ Matomo API %4$s.",
"UserAuthentication": "การรับรองความถูกต้องของผู้ใช้"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/tl.json b/plugins/API/lang/tl.json
index 9d2bfd8168..fb4e435c61 100644
--- a/plugins/API/lang/tl.json
+++ b/plugins/API/lang/tl.json
@@ -1,10 +1,10 @@
{
"API": {
- "GenerateVisits": "Kung wala kang data para sa araw na ito maaari ka munang bumuo ng ilang data gamit ang %1$s na plugin. Maaari mong i-enable ang %2$s na plugin, at pagkatapos ay i-click ang 'Tagabuo ng Bisita' na menu sa Matomo Admin area.",
+ "ChangeTokenHint": "Kung gusto mong baguhin ang token na ito, mangyaring pumunta sa iyong %1$spersonal settings page%2$s.",
"KeepTokenSecret": "Ang token_auth na ito ay isang lihim gaya ng iyong login at password, %1$s huwag itong ibahagi sa iba %2$s!",
"LoadedAPIs": "Matagumpay na nai-load ang %s APIs",
"MoreInformation": "Para sa karagdagang impormasyon tungkol sa Matomo API, mangyaring tumingin sa %1$s Panimula sa Matomo API %2$s at ang %3$s Matomo API Reference %4$s.",
"TopLinkTooltip": "I-access ang iyong data ng Web Analytics programmatically sa pamamagitan ng isang simpleng API sa json, xml, atbp.",
"UserAuthentication": "Pagpapatunay sa User"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/uk.json b/plugins/API/lang/uk.json
index e2fdf548c1..fc038ba11e 100644
--- a/plugins/API/lang/uk.json
+++ b/plugins/API/lang/uk.json
@@ -2,7 +2,6 @@
"API": {
"ChangeTokenHint": "Якщо ви хочете змінити цей токен, будь ласка, перейдіть в свою %1$sособисту сторінку налаштувань%2$s.",
"EvolutionMetricName": "%s Зміни",
- "GenerateVisits": "Якщо на сьогодні ще немає даних то можна власноручно згенерувати дані використовуючи плагін %1$s . Щоб увімкнути плагін %2$s , клацніть \"Visitor Generator\" меню в Панелі Адміністратора Matomo.",
"Glossary": "Глосарій",
"KeepTokenSecret": "token_auth є секретним, на рівні з логіном та паролем, тож %1$s тримайте цю інформацію секреті%2$s!",
"LearnAboutCommonlyUsedTerms2": "Дізнайтеся про найбільш часто використовувані терміни, щоб максимально використати Matomo Analytics.",
diff --git a/plugins/API/lang/vi.json b/plugins/API/lang/vi.json
index 4b5a7f8974..1e5dd0bb04 100644
--- a/plugins/API/lang/vi.json
+++ b/plugins/API/lang/vi.json
@@ -1,13 +1,12 @@
{
"API": {
- "GenerateVisits": "Nếu bạn không có dữ liệu cho ngày hôm nay, bạn có thể sinh một số dữ liệu (về người thăm website) bằng cách sử dụng plugin %1$s. Bạn có thể khởi động plugin %2$s, sau đó click vào menu \"Visitor Generator\" trên khu vực quản trị Matomo.",
+ "Glossary": "Thuật ngữ",
"KeepTokenSecret": "token_auth này chặt chẽ như mật khẩu đăng nhập của bạn, %1$s không thể chia sẻ nó %2$s!",
"LoadedAPIs": "Nạp thành công API %s",
"MoreInformation": "Để biết thêm thông tin về các API của Matomo, vui lòng xem ở Giới thiệu %1$s về %2$s API Matomo và API %3$s Matomo Reference %4$s",
"PluginDescription": "Tất cả dữ liệu của Matomo đều tủy cập được thông qua API. Plugin này là 1 web service, từ đó bạn có thể gọi để truy cập dữ liệu dưới dạng xml, json, csv,...",
"ReportingApiReference": "Tham chiếu API báo cáo",
"TopLinkTooltip": "Truy cập dữ liệu lập trình Web Analytics của bạn thông qua một API đơn giản trong JSON, xml, vv",
- "UserAuthentication": "Xác thực người dùng",
- "Glossary": "Thuật ngữ"
+ "UserAuthentication": "Xác thực người dùng"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/lang/zh-cn.json b/plugins/API/lang/zh-cn.json
index 6a2585924a..1d723c52cb 100644
--- a/plugins/API/lang/zh-cn.json
+++ b/plugins/API/lang/zh-cn.json
@@ -2,7 +2,6 @@
"API": {
"ChangeTokenHint": "如果你想改变这个标记,请到你的%1$s个人设置页面%2$s。",
"EvolutionMetricName": "%s演变",
- "GenerateVisits": "如果您今天还沒有任何资料,可以先用 %1$s 插件来产生一些数据。您可以启用 %2$s 插件,然后点击在 Matomo 管理菜单下的'生成访客'选项。",
"Glossary": "词汇表",
"KeepTokenSecret": "授权号 token_auth 与您的帐号和密码一样重要,%1$s请不要公开%2$s!",
"LearnAboutCommonlyUsedTerms2": "了解常用的术语,以充分利用 Matomo 数据分析。",
diff --git a/plugins/API/lang/zh-tw.json b/plugins/API/lang/zh-tw.json
index 08ccb660f0..87fef35574 100644
--- a/plugins/API/lang/zh-tw.json
+++ b/plugins/API/lang/zh-tw.json
@@ -1,18 +1,17 @@
{
"API": {
"ChangeTokenHint": "如果你要變更這個權杖,請到你的%1$s個人設定頁面%2$s。",
- "GenerateVisits": "如果你今天還沒有任何資料,你可以先使用 %1$s 外掛來產生一些數據。你可以啟用 %2$s 外掛,然後在 Matomo 後台管理選單中點擊「訪客產生器」。",
+ "EvolutionMetricName": "%s發展趨勢",
+ "Glossary": "詞彙表",
"KeepTokenSecret": "「token_auth」如同你的帳號密碼一樣重要,%1$s請不要公開它%2$s!",
+ "LearnAboutCommonlyUsedTerms2": "瞭解更多最常使用的術語,讓 Matomo 分析發揮至極。",
"LoadedAPIs": "已成功載入 %s 個 API",
+ "MainMetricsReportDocumentation": "此報表讓你檢視所有分類和外掛中最重要的指標。",
"MoreInformation": "查看%1$sMatomo API 介紹%2$s和 %3$sMatomo API 參考資料%4$s以取得更多關於 Matomo API 的資訊。",
"PluginDescription": "Matomo 內的所有資料都能透過簡單的 API 來取得。這個外掛是網頁服務的進入點,你可以用來獲取 xml、json、php 或 csv 格式的網頁分析資料。",
"ReportingApiReference": "報表 API 參考資料",
"TopLinkTooltip": "透過簡單的 API 來取得 json、xml 等格式的網頁分析資料。",
"UserAuthentication": "使用者驗證",
- "UsingTokenAuth": "如果你想%1$s經由程式碼或工作排程來請求資料。%2$s你需要增加網址參數 %3$s 至 API 呼叫網址來進行驗證。",
- "Glossary": "詞彙表",
- "MainMetricsReportDocumentation": "此報表讓你檢視所有分類和外掛中最重要的指標。",
- "LearnAboutCommonlyUsedTerms2": "瞭解更多最常使用的術語,讓 Matomo 分析發揮至極。",
- "EvolutionMetricName": "%s發展趨勢"
+ "UsingTokenAuth": "如果你想%1$s經由程式碼或工作排程來請求資料。%2$s你需要增加網址參數 %3$s 至 API 呼叫網址來進行驗證。"
}
-} \ No newline at end of file
+}
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
index f428d4a6e5..0a45edcc89 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml
@@ -23,11 +23,11 @@
<row>dbrowser</row>
<row>Zvu</row>
<row>Zetakey</row>
+ <row>YouCare</row>
<row>Yolo Browser</row>
<row>Yandex Browser Lite</row>
<row>Yandex Browser</row>
<row>Yahoo! Japan Browser</row>
<row>Yaani Browser</row>
<row>Xvast</row>
- <row>Xiino</row>
</result> \ No newline at end of file
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
index fe3944e232..920b6c6374 100644
--- a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml
@@ -8,8 +8,10 @@
<row>watchOS</row>
<row>tvOS</row>
<row>palmOS</row>
+ <row>moonOS</row>
<row>iPadOS</row>
<row>iOS</row>
+ <row>Zenwalk</row>
<row>YunOS</row>
<row>Xubuntu</row>
<row>Xbox</row>
@@ -28,6 +30,4 @@
<row>Symbian^3</row>
<row>Symbian OS Series 60</row>
<row>Symbian OS Series 40</row>
- <row>Symbian OS</row>
- <row>Symbian</row>
</result> \ No newline at end of file
diff --git a/plugins/API/tests/Unit/WidgetMetadataTest.php b/plugins/API/tests/Unit/WidgetMetadataTest.php
index 99563b6312..a4b81ce308 100644
--- a/plugins/API/tests/Unit/WidgetMetadataTest.php
+++ b/plugins/API/tests/Unit/WidgetMetadataTest.php
@@ -11,10 +11,7 @@ namespace Piwik\Plugins\API\tests\Unit;
use Piwik\Category\Category;
use Piwik\Category\CategoryList;
use Piwik\Category\Subcategory;
-use Piwik\DataTable;
-use Piwik\Plugins\API\Renderer\Console;
use Piwik\Plugins\API\WidgetMetadata;
-use Piwik\Plugins\CoreHome\CoreHome;
use Piwik\Report\ReportWidgetConfig;
use Piwik\Widget\WidgetConfig;
use Piwik\Widget\WidgetContainerConfig;
diff --git a/plugins/Actions/Archiver.php b/plugins/Actions/Archiver.php
index 9f3e471af2..42e18c62a7 100644
--- a/plugins/Actions/Archiver.php
+++ b/plugins/Actions/Archiver.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Actions;
-use Piwik\Config;
use Piwik\DataArray;
use Piwik\DataTable;
use Piwik\Metrics as PiwikMetrics;
diff --git a/plugins/Actions/Categories/SiteSearchSubcategory.php b/plugins/Actions/Categories/SiteSearchSubcategory.php
index 69e97c615f..ccd7f703ac 100644
--- a/plugins/Actions/Categories/SiteSearchSubcategory.php
+++ b/plugins/Actions/Categories/SiteSearchSubcategory.php
@@ -21,6 +21,6 @@ class SiteSearchSubcategory extends Subcategory
{
return '<p>' . Piwik::translate('Actions_SiteSearchSubcategoryHelp1') . '</p>'
. '<p>' . Piwik::translate('Actions_SiteSearchSubcategoryHelp2') . '</p>'
- . '<p><a href="https://matomo.org/docs/site-search/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Actions_SiteSearchSubcategoryHelp3') . '</a></p>';
+ . '<p><a href="https://matomo.org/docs/site-search/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Actions_SiteSearchSubcategoryHelp3') . '</a></p>';
}
}
diff --git a/plugins/Actions/Columns/DestinationPage.php b/plugins/Actions/Columns/DestinationPage.php
index 80241fa6da..0409992b0e 100644
--- a/plugins/Actions/Columns/DestinationPage.php
+++ b/plugins/Actions/Columns/DestinationPage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DestinationPage extends Dimension
{
diff --git a/plugins/Actions/Columns/ExitPageUrl.php b/plugins/Actions/Columns/ExitPageUrl.php
index 92d51f6fc2..007481993b 100644
--- a/plugins/Actions/Columns/ExitPageUrl.php
+++ b/plugins/Actions/Columns/ExitPageUrl.php
@@ -12,7 +12,6 @@ use Piwik\Columns\DimensionMetricFactory;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join;
use Piwik\Columns\MetricsList;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
diff --git a/plugins/Actions/Columns/IdPageview.php b/plugins/Actions/Columns/IdPageview.php
index 25bd5911dc..6bb083f232 100644
--- a/plugins/Actions/Columns/IdPageview.php
+++ b/plugins/Actions/Columns/IdPageview.php
@@ -13,7 +13,6 @@ use Piwik\Columns\MetricsList;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
class IdPageview extends ActionDimension
diff --git a/plugins/Actions/Columns/Keyword.php b/plugins/Actions/Columns/Keyword.php
index 8469f7e731..d67dad92f0 100644
--- a/plugins/Actions/Columns/Keyword.php
+++ b/plugins/Actions/Columns/Keyword.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Keyword extends Dimension
{
diff --git a/plugins/Actions/Columns/KeywordwithNoSearchResult.php b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
index 928c3d831e..e08a58d3fb 100644
--- a/plugins/Actions/Columns/KeywordwithNoSearchResult.php
+++ b/plugins/Actions/Columns/KeywordwithNoSearchResult.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class KeywordwithNoSearchResult extends Dimension
{
diff --git a/plugins/Actions/Columns/PageUrl.php b/plugins/Actions/Columns/PageUrl.php
index a79a8cc659..6d8d4a902f 100644
--- a/plugins/Actions/Columns/PageUrl.php
+++ b/plugins/Actions/Columns/PageUrl.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join\ActionNameJoin;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Tracker\Action;
diff --git a/plugins/Actions/Columns/PageViewPosition.php b/plugins/Actions/Columns/PageViewPosition.php
index 84d8927964..018d80b1fa 100644
--- a/plugins/Actions/Columns/PageViewPosition.php
+++ b/plugins/Actions/Columns/PageViewPosition.php
@@ -8,11 +8,9 @@
*/
namespace Piwik\Plugins\Actions\Columns;
-use Piwik\Plugins\Events\Actions\ActionEvent;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
class PageViewPosition extends ActionDimension
diff --git a/plugins/Actions/Columns/SearchDestinationPage.php b/plugins/Actions/Columns/SearchDestinationPage.php
index b990857424..a940b804ca 100644
--- a/plugins/Actions/Columns/SearchDestinationPage.php
+++ b/plugins/Actions/Columns/SearchDestinationPage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchDestinationPage extends Dimension
{
diff --git a/plugins/Actions/Columns/SearchNoResultKeyword.php b/plugins/Actions/Columns/SearchNoResultKeyword.php
index b202415dda..9888df9755 100644
--- a/plugins/Actions/Columns/SearchNoResultKeyword.php
+++ b/plugins/Actions/Columns/SearchNoResultKeyword.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchNoResultKeyword extends Dimension
{
diff --git a/plugins/Actions/Columns/VisitTotalInteractions.php b/plugins/Actions/Columns/VisitTotalInteractions.php
index 4567de58d6..544ce9963b 100644
--- a/plugins/Actions/Columns/VisitTotalInteractions.php
+++ b/plugins/Actions/Columns/VisitTotalInteractions.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Actions\Columns;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/Actions/DataTable/Filter/Actions.php b/plugins/Actions/DataTable/Filter/Actions.php
index 319db3cd77..fe0130b276 100644
--- a/plugins/Actions/DataTable/Filter/Actions.php
+++ b/plugins/Actions/DataTable/Filter/Actions.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Actions\DataTable\Filter;
use Piwik\Common;
use Piwik\Config;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Tracker\Action;
diff --git a/plugins/Actions/Reports/GetEntryPageUrls.php b/plugins/Actions/Reports/GetEntryPageUrls.php
index 8966e76258..bc5d93489a 100644
--- a/plugins/Actions/Reports/GetEntryPageUrls.php
+++ b/plugins/Actions/Reports/GetEntryPageUrls.php
@@ -16,8 +16,6 @@ use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetEntryPageUrls extends Base
{
diff --git a/plugins/Actions/Reports/GetExitPageUrls.php b/plugins/Actions/Reports/GetExitPageUrls.php
index cd520c7f4e..6638dfe4eb 100644
--- a/plugins/Actions/Reports/GetExitPageUrls.php
+++ b/plugins/Actions/Reports/GetExitPageUrls.php
@@ -17,8 +17,6 @@ use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
use Piwik\Plugins\Actions\Columns\Metrics\BounceRate;
use Piwik\Plugins\Actions\Columns\Metrics\ExitRate;
use Piwik\Plugin\ReportsProvider;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetExitPageUrls extends Base
{
diff --git a/plugins/Actions/VisitorDetails.php b/plugins/Actions/VisitorDetails.php
index 36c8c4fa50..0dc4209010 100644
--- a/plugins/Actions/VisitorDetails.php
+++ b/plugins/Actions/VisitorDetails.php
@@ -8,20 +8,15 @@
*/
namespace Piwik\Plugins\Actions;
-use Piwik\Cache;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Site;
use Piwik\Tracker\Action;
use Piwik\Tracker\PageUrl;
-use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
{
diff --git a/plugins/Actions/javascripts/actionsDataTable.js b/plugins/Actions/javascripts/actionsDataTable.js
index 797ce0b8f8..05434e2773 100644
--- a/plugins/Actions/javascripts/actionsDataTable.js
+++ b/plugins/Actions/javascripts/actionsDataTable.js
@@ -5,7 +5,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
- (function ($, require) {
+(function ($, require) {
var exports = require('piwik/UI'),
DataTable = exports.DataTable,
@@ -127,6 +127,8 @@
.each(function () {
if (self.param.filter_pattern_recursive) {
$(this).addClass('expanded');
+ // remove tooltip "Click this row to expand or contract the subtable"
+ $(this).attr('title', '');
}
});
diff --git a/plugins/Actions/lang/ca.json b/plugins/Actions/lang/ca.json
index 22742174d3..220a13c13e 100644
--- a/plugins/Actions/lang/ca.json
+++ b/plugins/Actions/lang/ca.json
@@ -1,61 +1,100 @@
{
"Actions": {
+ "ActionType": "Tipus d'acció",
+ "ActionTypes": "Tipus d'acció",
+ "ActionsInVisit": "Accions a visites",
"AvgGenerationTimeTooltip": "Promig basat en %1$s accessos %2$s entre %3$s i %4$s",
+ "Behaviour": "Comportament",
+ "ColumnActionURL": "URL d'acció",
+ "ColumnClickedURL": "Clic fet a enllaç sortint",
+ "ColumnClickedURLs": "Clic fet a enllaços sortints",
"ColumnClicks": "Clics",
- "ColumnClicksDocumentation": "Nombre de vegades que s'ha fet clic en aquest enllaç",
+ "ColumnClicksDocumentation": "Nombre de vegades que s'ha fet clic en aquest enllaç.",
"ColumnDownloadURL": "URL de descàrrega",
+ "ColumnDownloadURLs": "URLs de descàrrega",
"ColumnEntryPageTitle": "Títol de la pàgina d'entrada",
"ColumnEntryPageURL": "URL de la pàgina d'entrada",
+ "ColumnEntryPageURLs": "URLs de pàgines d'entrada",
"ColumnExitPageTitle": "URL de la pàgina de sortida",
"ColumnExitPageURL": "URL de la pàgina de sortida",
+ "ColumnExitPageURLs": "URLs de pàgines de sortida",
+ "ColumnIdPageview": "ID de pàgina vista",
+ "ColumnInteractionPosition": "Posició d'interacció",
"ColumnNoResultKeyword": "Paraula clau sense cap resultat de cerca",
"ColumnPageName": "Nom de la pàgina",
- "ColumnPagesPerSearch": "Pàgines dels resultats de la cerca",
- "ColumnPagesPerSearchDocumentation": "Els visitants busquen al vostre lloc web i a vegades cliquen sobre el botó següent. Aquest nombre es la mitga de pàgines de resultats de la cerca vistes per aquesta paraula clau.",
"ColumnPageURL": "URL de la pàgina",
+ "ColumnPageViewPosition": "Posició de vista de pàgina",
+ "ColumnPagesPerSearch": "Pàgines dels resultats de la cerca",
+ "ColumnPagesPerSearchDocumentation": "Els visitants cerquen al vostre lloc web i, de vegades, fan clic a \"següent\" per veure més resultats. Aquest és el nombre mitjà de pàgines de resultats de cerca vistes per a aquesta paraula clau.",
"ColumnSearchCategory": "Categoria de cerca",
- "ColumnSearches": "Cerques",
- "ColumnSearchesDocumentation": "Nombre de visitants que han cercat aquesta paraula clau al cercador de la vostra pàgina web.",
+ "ColumnSearchExits": "%% sortides de cerca",
"ColumnSearchExitsDocumentation": "El percentatge de visites que marxen del vostre lloc web desprès de cercar aquesta paraula al cercador del vostre lloc web.",
"ColumnSearchResultsCount": "Resultats de la cerca",
+ "ColumnSearches": "Cerques",
+ "ColumnSearchesDocumentation": "Nombre de visitants que han cercat aquesta paraula clau al cercador de la vostra pàgina web.",
"ColumnSiteSearchKeywords": "Paraules clau úniques",
"ColumnUniqueClicks": "Clics únics",
- "ColumnUniqueClicksDocumentation": "EL nombre de visites que han fet click en aquest enllaç. Si l'enllaç s'ha clicat més d'una vegada durant una visita només es conta un.",
+ "ColumnUniqueClicksDocumentation": "El nombre de visites que han fet clic en aquest enllaç. Si s'ha fet clic en un enllaç diverses vegades durant una visita, només es compta una vegada.",
"ColumnUniqueDownloads": "Descàrregues úniques",
"ColumnUniqueOutlinks": "Enllaços de sortida únics",
"DownloadsReportDocumentation": "En aquest informe podeu observar quins fitxers han descarrregats els visitants. %s El Matomo només té constància dels clicks als enllaços de descarga, desconeix si la descàrrega s'ha completat o no.",
+ "DownloadsSubcategoryHelp1": "En aquest informe podeu veure quins fitxers han baixat els vostres visitants.",
+ "DownloadsSubcategoryHelp2": "El que Matomo compta com a descàrrega és fer clic a l'enllaç de descàrrega. Matomo no sap si la descàrrega es va completar o no.",
"EntryPageTitles": "Títols de les pàgines d'entrada",
"EntryPageTitlesReportDocumentation": "Aquest informe conté la informació sobre els títols de les pàgines d'entrada que s'han utilitzat durant el període especificat.",
+ "EntryPagesReportDocumentation": "Aquest informe conté informació sobre les pàgines d'entrada durant el període especificat. Una pàgina d'entrada és la primera pàgina que visualitza un usuari durant la seva visita. %s Les URL d'entrada es mostren com una estructura de carpetes.",
+ "EntryPagesSubcategoryHelp1": "Aquest informe conté informació sobre les pàgines d'entrada durant el període especificat. Una pàgina d'entrada és la primera pàgina que visualitza un usuari durant la seva visita.",
+ "EntryPagesSubcategoryHelp2": "Les URL d'entrada es mostren com una estructura de carpetes.",
"ExitPageTitles": "Títols de les pàgines de sortida",
"ExitPageTitlesReportDocumentation": "Aquest informe conté els títols de les pàgins de sortida que s'han utiltizat durant el període especificat.",
+ "ExitPagesReportDocumentation": "Aquest informe conté informació sobre les pàgines de sortida durant el període especificat. Una pàgina de sortida és l'última pàgina que visualitza un usuari durant la seva visita. %s Les URL de sortida es mostren com una estructura de carpetes.",
+ "ExitPagesSubcategoryHelp1": "Aquest informe conté informació sobre les pàgines de sortida durant el període especificat. Una pàgina de sortida és l'última pàgina que visualitza un usuari durant la seva visita.",
+ "ExitPagesSubcategoryHelp2": "Les URL de sortida es mostren com una estructura de carpetes.",
+ "MainMetricsReportDocumentation": "Aquest informe ofereix una visió general molt bàsica de quines accions fan els vostres visitants al vostre lloc web.",
"OneSearch": "1 cerca",
- "OutlinkDocumentation": "Un enllaç de sortida es un enllaç que porta el visitant fora del teu lloc web (a un altre domini)",
- "OutlinksReportDocumentation": "Aquest informe mostra una lista jeràrquica de les URL de sortida que han estat clicades pels vostres visitants.",
- "PagesReportDocumentation": "Aquest informe conté les URL de les pàgines que s'han visitat. %s La taula s'organitza jerarquicament, i les URL es mostren amb estructura de directoris.",
+ "OutlinkDocumentation": "Un enllaç extern és un enllaç que allunya el visitant del vostre lloc web (a un altre domini).",
+ "OutlinksReportDocumentation": "Aquest informe mostra una llista jeràrquica de les URL d'enllaços de sortida als quals han fet clic els vostres visitants.",
+ "OutlinksSubcategoryHelp1": "Aquest informe mostra una llista jeràrquica de les URL d'enllaços externs als quals han fet clic els vostres visitants. Un enllaç extern és un enllaç que allunya el visitant del vostre lloc web (a un altre domini).",
"PageTitlesReportDocumentation": "Aquest informe conté informació sobre els títols de les pàgines que s'han visitat. %1$s El títol de la pàgina es el tag HTML: %2$s, que es mostra al títol de la finestra en la majoría de navegadors.",
+ "PageTitlesSubcategoryHelp1": "Aquest informe conté informació sobre els títols de les pàgines que s'han visitat.",
+ "PageTitlesSubcategoryHelp2": "El títol de la pàgina és l'etiqueta HTML &amp;lt;títol&amp;gt; que la majoria dels navegadors mostren al títol de la finestra.",
"PageUrls": "URLs de les pàgines",
- "PluginDescription": "Informa sobre les vistes i títols de pàgina. Et permet mesurar el motor de cerca intern del teu lloc web. Monitoritza automàticament els clics en enllaços externs i descàrregues de fitxers.",
- "SiteSearchCategories1": "Aquest informe mostra les categoríes que han seleccionat els visitants quan han fet una cerca al vostre lloc web",
- "SiteSearchCategories2": "Per exemple, els llocs de Ecommers normalment tenen un selector de categoria que permet als visitants restringir les seves cerces als productes d'una Categoría concreta.",
+ "PageViewsByVisitor": "Nombre de vegades que aquest visitant ha vist aquesta pàgina en totes les visites",
+ "PagesReportDocumentation": "Aquest informe conté les URL de les pàgines que s'han visitat. %s La taula s'organitza jerarquicament, i les URL es mostren amb estructura de directoris.",
+ "PagesSubcategoryHelp1": "Aquest informe conté informació sobre les URL de les pàgines visitades.",
+ "PagesSubcategoryHelp2": "La taula està organitzada jeràrquicament, les URL es mostren com una estructura de carpetes.",
+ "PagesSubcategoryHelp3": "Fes servir les icones de més i menys a l'esquerra per navegar.",
+ "PluginDescription": "Informes sobre les pàgines vistes i els títols de les pàgines. Permet mesurar el motor de cerca del teu lloc web intern. Fa un seguiment automàtic dels clics als enllaços externs i a les descàrregues de fitxers.",
+ "RevisitedPages": "Pàgines vistes més d'una vegada",
+ "SiteSearchCategories": "Categories (cerca al lloc)",
+ "SiteSearchCategories1": "Aquest informe mostra les categories que els visitants van seleccionar quan van fer una cerca al vostre lloc web.",
+ "SiteSearchCategories2": "Per exemple, els llocs web de comerç electrònic solen tenir un selector de \"Categoria\" perquè els visitants puguin restringir les seves cerques a només els productes d'una categoria específica.",
+ "SiteSearchCategory": "Categoria (cerca al lloc)",
"SiteSearchFollowingPagesDoc": "Quan els visitants cerquen al teu lloc web, estan buscant una pàgina, un contingut, un producte o un servei en particular. Aquest informe mostra les pàgines que han estat clicades més vegades desprès d'una cerca interna. En altres paraules, la llista de pàgines que han estat més cercades pels visitants que ja están al vostre lloc web.",
- "SiteSearchIntro": "Observar les cerques que els visitants fan al vostre lloc web és una forma molt efectiva d'aprendre més sobre el que està cercant la teva audiència. Pot ajudar a trobar idees per a nou contingut, nous productes que els teus visitants poden estar buscar i permet millorar l'experiència dels visitants al vostre lloc web.",
- "SiteSearchKeyword": "Paraula clau (Cerca en lloc web)",
- "SiteSearchKeywordsDocumentation": "Aquest informe mostra les Paraules clau que els visitants han utiltizat per cercar al cercador del vostre lloc web.",
- "SiteSearchKeywordsNoResultDocumentation": "Aquest informe llista les paraules clau que no han tingut cap resultat. Potser es pot optimitzar l'algorisme de cerca o potser els vostres visitants estan cercant contingut que (encara) no existeix al vostre lloc web?",
+ "SiteSearchIntro": "Observar les cerques que els visitants fan al vostre lloc web és una forma molt efectiva d'aprendre més sobre el que està cercant la vostra audiència. Pot ajudar a trobar idees per a nou contingut, nous productes que els vostres visitants poden estar buscant i permet millorar l'experiència dels visitants al vostre lloc web.",
+ "SiteSearchKeyword": "Paraula clau (Cerca al lloc web)",
+ "SiteSearchKeywordCount": "Recompte de paraules clau (cerca al lloc)",
+ "SiteSearchKeywordCounts": "Recompte de paraules clau (cerca al lloc)",
+ "SiteSearchKeywords": "Paraules clau (cerca al lloc)",
+ "SiteSearchKeywordsDocumentation": "Aquest informe mostra les paraules clau que els visitants han utiltizat per cercar al cercador del vostre lloc web.",
+ "SiteSearchKeywordsNoResultDocumentation": "Aquest informe enumera les paraules clau de cerca que no han retornat cap resultat de la cerca: potser es pot millorar l'algoritme del motor de cerca, o potser els vostres visitants busquen contingut que no es troba (encara) al vostre lloc web?",
+ "SiteSearchSubcategoryHelp1": "La secció Cerca al lloc mostra quines paraules clau fan servir els visitants quan cerquen al vostre lloc web. També mostra quines pàgines veuen els usuaris després de fer una cerca i quines paraules clau de cerca al lloc no donen cap resultat.",
+ "SiteSearchSubcategoryHelp2": "Aquests informes us poden donar idees sobre el contingut que manca al vostre lloc, informació sobre què cerquen els vostres visitants però que no poden trobar fàcilment i molt més.",
+ "SiteSearchSubcategoryHelp3": "Més informació a la guia de cerca al lloc.",
+ "SubmenuPageTitles": "Títols de les pàgines",
"SubmenuPagesEntry": "Pàgines d'entrada",
"SubmenuPagesExit": "Pàgines de sortida",
- "SubmenuPageTitles": "Títols de les pàgines",
"SubmenuSitesearch": "Cerca al lloc",
+ "TimeSpentInReferringAction": "Temps dedicat a l'acció de referència",
"WidgetEntryPageTitles": "Títols de les pàgines d'entrada",
"WidgetExitPageTitles": "Títols de les pàgines de sortida",
+ "WidgetPageTitles": "Títols de les pàgines",
+ "WidgetPageTitlesFollowingSearch": "Títols de pàgines després d'una cerca al lloc",
+ "WidgetPageUrlsFollowingSearch": "Pàgines després d'una cerca al lloc",
"WidgetPagesEntry": "Pàgines d'entrada",
"WidgetPagesExit": "Pàgines de sortida",
- "WidgetPageTitles": "Títols de les pàgines",
- "WidgetPageTitlesFollowingSearch": "Títols de les pàgines desprès d'una cerca Interna",
- "WidgetPageUrlsFollowingSearch": "Pàgines despes d'una cerca interna",
- "WidgetSearchCategories": "Categoríes de cerca",
+ "WidgetSearchCategories": "Categories de cerca",
"WidgetSearchKeywords": "Paraules de cerca al lloc",
- "WidgetSearchNoResultKeywords": "Paraules Clau de cerca sense resultats",
- "PagesSubcategoryHelp3": "Fes servir les icones de més i menys a l'esquerra per navegar."
+ "WidgetSearchNoResultKeywords": "Paraules clau de cerca sense resultats"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Actions/lang/id.json b/plugins/Actions/lang/id.json
index 1ea7e77b3e..f58644eb39 100644
--- a/plugins/Actions/lang/id.json
+++ b/plugins/Actions/lang/id.json
@@ -1,82 +1,100 @@
{
"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",
- "ColumnClickedURL": "Klik tautan keluar",
- "ColumnClickedURLs": "Klik tautan luar",
+ "Behaviour": "Perilaku",
"ColumnActionURL": "URL tindakan",
+ "ColumnClickedURL": "Klik Tautan Keluar",
+ "ColumnClickedURLs": "Klik Tautan Keluar",
"ColumnClicks": "Klik",
"ColumnClicksDocumentation": "Jumlah tautan ini diklik.",
"ColumnDownloadURL": "URL Unduhan",
- "ColumnDownloadURLs": "Alamat web untuk unduhan",
+ "ColumnDownloadURLs": "URL Unduhan",
"ColumnEntryPageTitle": "Judul Halaman Masuk",
"ColumnEntryPageURL": "URL Halaman Masuk",
"ColumnEntryPageURLs": "Alamat web untuk halaman masuk",
"ColumnExitPageTitle": "Judul Halaman Keluar",
"ColumnExitPageURL": "URL Halaman Keluar",
"ColumnExitPageURLs": "Alamat web untuk halaman keluar",
+ "ColumnIdPageview": "ID Tampilan Halaman",
+ "ColumnInteractionPosition": "Posisi Interaksi",
"ColumnNoResultKeyword": "Kata Kunci dengan Tanpa Hasil Pencarian",
"ColumnPageName": "Nama Halaman",
+ "ColumnPageURL": "URL Halaman",
+ "ColumnPageViewPosition": "Posisi untuk meninjau 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.",
- "ColumnPageURL": "URL Halaman",
"ColumnSearchCategory": "Kategori Pencarian",
- "ColumnSearches": "Pencarian",
- "ColumnSearchesDocumentation": "Jumlah kunjungan dengan pencarian kata kunci ini dalam mesin pencari Anda.",
"ColumnSearchExits": "%% Pencarian Keluar",
"ColumnSearchExitsDocumentation": "Persentase jumlah pengunjung yang meninggalkan situs setelah melakukan pencarian untuk Kata Kunci ini dalam mesin Pencarian Situs Anda.",
"ColumnSearchResultsCount": "Jumlah Hasil Pencarian",
+ "ColumnSearches": "Pencarian",
+ "ColumnSearchesDocumentation": "Jumlah kunjungan dengan pencarian kata kunci ini dalam mesin pencari Anda.",
"ColumnSiteSearchKeywords": "Kata Kunci Unik",
"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",
- "ColumnIdPageview": "ID Tampilan Halaman",
- "ColumnInteractionPosition": "Posisi Interaksi",
- "ColumnPageViewPosition": "Posisi untuk meninjau halaman",
- "ActionsInVisit": "TIndakan saat berkunjung",
"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.",
- "EntryPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman masuk yang digunakan selama periode yang ditentukan. Halaman masuk adalah halaman pertama yang dilihat pengguna selama kunjungan mereka. %s URL entri ditampilkan sebagai struktur folder.",
+ "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",
"EntryPageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halaman masuk yang digunakan selama rentang waktu tertentu.",
- "ExitPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman keluar yang terjadi selama periode yang ditentukan. Halaman keluar adalah halaman terakhir yang dilihat pengguna selama kunjungan mereka. %s URL keluar ditampilkan sebagai struktur folder.",
+ "EntryPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman masuk yang digunakan selama periode yang ditentukan. Halaman masuk adalah halaman pertama yang dilihat pengguna selama kunjungan mereka. %s URL entri ditampilkan sebagai struktur folder.",
+ "EntryPagesSubcategoryHelp1": "Laporan ini berisi informasi tentang halaman entri yang digunakan selama periode tertentu. Halaman entri adalah halaman pertama yang dilihat pengguna selama kunjungan mereka.",
+ "EntryPagesSubcategoryHelp2": "URL entri ditampilkan sebagai struktur folder.",
"ExitPageTitles": "Judul halaman keluar",
"ExitPageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halman keluar yang terjadi selama waktu tertentu.",
+ "ExitPagesReportDocumentation": "Laporan ini berisi informasi tentang halaman keluar yang terjadi selama periode yang ditentukan. Halaman keluar adalah halaman terakhir yang dilihat pengguna selama kunjungan mereka. %s URL keluar ditampilkan sebagai struktur folder.",
+ "ExitPagesSubcategoryHelp1": "Laporan ini berisi informasi tentang halaman keluar yang terjadi selama periode yang ditentukan. Halaman keluar adalah halaman terakhir yang dilihat pengguna selama kunjungan mereka.",
+ "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.",
- "PagesReportDocumentation": "Laporan ini mengandung informasi tentang URL halaman yang dikunjungi. %s Tabel diatur berurutan, URL ditampilkan sebagai struktur map.",
+ "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.",
+ "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.",
"PageUrls": "URL Halaman",
"PageViewsByVisitor": "Jumlah dari berapa kali halaman ini dilihat oleh pengunjung dari semua pengunjung",
- "PluginDescription": "Laporan mengenai tampilan dan judul halaman. Membantu Anda mengukur mesin pencarian internal situs web Anda. Pelacakan klik otomatis dalam tautan eksternal dan berkas unduhan.",
+ "PagesReportDocumentation": "Laporan ini mengandung informasi tentang URL halaman yang dikunjungi. %s Tabel diatur berurutan, URL ditampilkan sebagai struktur map.",
+ "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.",
+ "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.",
- "SiteSearchCategory": "Kategori (Pencarian situs)",
- "SiteSearchCategories": "Kategori-kategori (Pencarian situs)",
"SiteSearchKeyword": "Kata Kunci (Pencarian Situs)",
- "SiteSearchKeywords": "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.",
+ "SiteSearchSubcategoryHelp3": "Pelajari lebih lanjut di panduan Pencarian Situs.",
+ "SubmenuPageTitles": "Judul halaman",
"SubmenuPagesEntry": "Halaman masuk",
"SubmenuPagesExit": "Halaman keluar",
- "SubmenuPageTitles": "Judul halaman",
"SubmenuSitesearch": "Pencarian Situs",
+ "TimeSpentInReferringAction": "Waktu yang Dihabiskan dalam Merujuk Tindakan",
"WidgetEntryPageTitles": "Judul Halaman Masuk",
"WidgetExitPageTitles": "Judul Halaman Keluar",
- "WidgetPagesEntry": "Halaman Masuk",
- "WidgetPagesExit": "Halamana Keluar",
"WidgetPageTitles": "Judul Halaman",
"WidgetPageTitlesFollowingSearch": "Judul Halaman Diikuti Pencarian Situs",
"WidgetPageUrlsFollowingSearch": "Halaman Diikuti Situs Pencarian Situs",
+ "WidgetPagesEntry": "Halaman Masuk",
+ "WidgetPagesExit": "Halamana Keluar",
"WidgetSearchCategories": "Kategori Pencarian",
"WidgetSearchKeywords": "Kata Kunci Pencarian Situs",
- "WidgetSearchNoResultKeywords": "Kata Kunci Pencarian dengan Tanpa Hasil",
- "ActionType": "Jenis Tindakan",
- "PagesSubcategoryHelp3": "Gunakan ikon plus dan minus di kiri untuk bernavigasi."
+ "WidgetSearchNoResultKeywords": "Kata Kunci Pencarian dengan Tanpa Hasil"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Actions/lang/sq.json b/plugins/Actions/lang/sq.json
index 356840ab46..345db18856 100644
--- a/plugins/Actions/lang/sq.json
+++ b/plugins/Actions/lang/sq.json
@@ -1,9 +1,13 @@
{
"Actions": {
- "AvgGenerationTimeTooltip": "Mesatare e bazuar në %1$s hit(e) %2$s mes %3$s dhe %4$s",
+ "ActionType": "Lloj Veprimi",
+ "ActionTypes": "Lloje Veprimesh",
+ "ActionsInVisit": "Veprime Në Vizitë",
+ "AvgGenerationTimeTooltip": "Mesatare e bazuar në %1$s “hit”(e) %2$s mes %3$s dhe %4$s",
+ "Behaviour": "Sjellje",
+ "ColumnActionURL": "URL Veprimi",
"ColumnClickedURL": "Lidhje për Jashtë e Klikuar",
"ColumnClickedURLs": "Lidhje për Jashtë të Klikuara",
- "ColumnActionURL": "URL Veprimi",
"ColumnClicks": "Klikime",
"ColumnClicksDocumentation": "Sa herë është klikuar kjo lidhje.",
"ColumnDownloadURL": "URL shkarkimesh",
@@ -14,87 +18,83 @@
"ColumnExitPageTitle": "Titull Faqeje Dalëse",
"ColumnExitPageURL": "URL Faqeje Dalëse",
"ColumnExitPageURLs": "URL Faqesh Dalëse",
- "ColumnNoResultKeyword": "Fjalëkyçe me Pa Përfundime Kërkimi",
+ "ColumnIdPageview": "ID Parjeje Faqeje",
+ "ColumnInteractionPosition": "Pozicion Ndërveprimi",
+ "ColumnNoResultKeyword": "Fjalëkyçe me “Pa Përfundime Kërkimi”",
"ColumnPageName": "Emër Faqeje",
- "ColumnPagesPerSearch": "Kërkoni te faqet e Përfundimeve",
- "ColumnPagesPerSearchDocumentation": "Vizitorët do të kërkojnë te sajti juaj, dhe ndonjëherë klikojnë \"pasuesja\" që të shohin më tepër përfundime. Kjo është mesatarja e numrit të faqeve me përfundime kërkimi të para për këtë fjalëkyç.",
"ColumnPageURL": "URL faqesh",
+ "ColumnPageViewPosition": "Pozicion Sipas Parjesh Faqeje",
+ "ColumnPagesPerSearch": "Faqe “Përfundime Kërkimi”",
+ "ColumnPagesPerSearchDocumentation": "Vizitorët do të kërkojnë te sajti juaj dhe ndonjëherë klikojnë “pasuesja”, që të shohin më tepër përfundime. Kjo është mesatarja e numrit të faqeve me përfundime kërkimi të para për këtë fjalëkyç.",
"ColumnSearchCategory": "Kategori Kërkimesh",
- "ColumnSearches": "Kërkime",
- "ColumnSearchesDocumentation": "Numri i vizitave nga të cilat pati kërkime për këtë fjalëkyç te motori i kërkimit në sajtin tuaj.",
"ColumnSearchExits": "%% Largime Nga Kërkimi",
"ColumnSearchExitsDocumentation": "Përqindja e vizitave që përfunduan me largim nga sajti pas kërkimit për këtë Fjalëkyç te motori i Kërkimeve në Sajtin tuaj.",
"ColumnSearchResultsCount": "Numër Përfundimesh Kërkimi",
+ "ColumnSearches": "Kërkime",
+ "ColumnSearchesDocumentation": "Numri i vizitave nga të cilat pati kërkime për këtë fjalëkyç te motori i kërkimit në sajtin tuaj.",
"ColumnSiteSearchKeywords": "Fjalëkyçe Unike",
"ColumnUniqueClicks": "Klikime Unike",
"ColumnUniqueClicksDocumentation": "Numri i vizitave që kanë sjellë klikim mbi këtë lidhje. Nëse një lidhje është klikuar shumë herë gjatë një vizite, llogaritet vetëm një herë.",
"ColumnUniqueDownloads": "Shkarkime Unike",
"ColumnUniqueOutlinks": "Lidhje për Jashtë Unike",
- "ColumnIdPageview": "ID Parjeje Faqeje",
- "ColumnInteractionPosition": "Pozicion Ndërveprimi",
- "ColumnPageViewPosition": "Pozicion Sipas Parjesh Faqeje",
- "ActionsInVisit": "Veprime Në Vizitë",
"DownloadsReportDocumentation": "Në këtë raport, mund të shihni cilat kartela kanë shkarkuar vizitorët tuaj. %s Ato çka Matomo numëron si shkarkim është çdo klikim mbi një lidhje shkarkimi. Por Matomo s’mund ta dijë a u plotësua apo jo shkarkimi.",
- "EntryPagesReportDocumentation": "Ky raport përmban të dhëna rreth faqesh hyrjesh që janë përdorur gjatë një periudhe të caktuar. Faqe hyrjeje është faqja e parë që sheh një vizitor gjatë vizitës së tij. %s URL-të e hyrjeve shfaqen sipas një strukture dosjeje.",
+ "DownloadsSubcategoryHelp1": "Në këtë raport mund të shihni se cilat kartela kanë shkarkuar vizitorët tuaj.",
+ "DownloadsSubcategoryHelp2": "Ato çka Matomo numëron si shkarkim është çdo klikim mbi një lidhje shkarkimi. Por Matomo s’mund ta dijë a u plotësua apo jo shkarkimi.",
"EntryPageTitles": "Tituj faqesh hyrje",
"EntryPageTitlesReportDocumentation": "Ky raport përmban të dhëna rreth titujsh faqesh hyrje që janë përdorur gjatë periudhës së dhënë.",
- "ExitPagesReportDocumentation": "Ky raport përmban të dhëna rreth faqesh daljesh që janë kryer gjatë një periudhe të caktuar. Faqe daljeje është faqja e fundit që sheh një vizitor gjatë vizitës së tij. %s URL-të e daljeve shfaqen sipas një strukture dosjeje.",
+ "EntryPagesReportDocumentation": "Ky raport përmban të dhëna rreth faqesh hyrjesh që janë përdorur gjatë një periudhe të caktuar. Faqe hyrjeje është faqja e parë që sheh një vizitor gjatë vizitës së tij. %s URL-të e hyrjeve shfaqen sipas një strukture dosjeje.",
+ "EntryPagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth faqesh hyrjesh që janë përdorur gjatë një periudhe të caktuar. Faqe hyrjeje është faqja e parë që sheh një vizitor gjatë vizitës së tij.",
+ "EntryPagesSubcategoryHelp2": "URL-të e hyrjeve tregohen si strukturë dosjeje.",
"ExitPageTitles": "Tituj faqesh dalje",
"ExitPageTitlesReportDocumentation": "Ky raport përmban të dhëna rreth titujve të faqeve dalje që janë përdorur gjatë periudhës së dhënë.",
+ "ExitPagesReportDocumentation": "Ky raport përmban të dhëna rreth faqesh daljesh që janë kryer gjatë një periudhe të caktuar. Faqe daljeje është faqja e fundit që sheh një vizitor gjatë vizitës së tij. %s URL-të e daljeve shfaqen sipas një strukture dosjeje.",
+ "ExitPagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth faqesh daljesh që janë përdorur gjatë një periudhe të caktuar. Faqe daljeje është faqja e fundit që sheh një vizitor gjatë vizitës së tij.",
+ "ExitPagesSubcategoryHelp2": "URL-të e daljeve tregohen si strukturë dosjeje.",
"MainMetricsReportDocumentation": "Ky raport furnizon një përmbledhje shumë elementare rreth çfarë veprimesh bëjnë vizitorët në sajtin tuaj.",
"OneSearch": "1 kërkim",
"OutlinkDocumentation": "Një lidhje për jashtë është një lidhje që e shpie përdoruesin diku jashtë sajtit tuaj (te një tjetër përkatësi).",
"OutlinksReportDocumentation": "Ky raport shfaq një listë hierarkike URL-sh lidhjesh për jashtë që janë klikuar nga vizitorët tuaj.",
- "PagesReportDocumentation": "Ky raport përmban të dhëna rreth URL faqesh që janë vizituar. %s Tabela është e sistemuar në mënyrë hierarkike, URL-të tregohen si strukturë dosjeje.",
+ "OutlinksSubcategoryHelp1": "Ky raport shfaq një listë hierarkike URL-sh lidhjesh për jashtë që janë klikuar nga vizitorët tuaj. Një lidhje për jashtë është një lidhje që e largon vizitorin nga sajti juaj (drejt një përkatësie tjetër).",
"PageTitlesReportDocumentation": "Ky raport përmban të dhëna rreth titujve të faqeve që janë vizituar. %1$s Titulli i faqes është Etiketa HTML %2$s që shfaqin shumica e shfletuesve te titulli i dritares.",
+ "PageTitlesSubcategoryHelp1": "Ky raport përmban të dhëna rreth titujve të faqeve që janë vizituar.",
+ "PageTitlesSubcategoryHelp2": "Titulli i faqeve është Etiketa HTML &amp;lt;title&amp;gt; që shfaqin në titullin e dritares shumica e faqeve.",
"PageUrls": "URL faqesh",
"PageViewsByVisitor": "Numër herësh që kjo faqe qe parë nga ky vizitor gjatë krejt vizitave",
- "PluginDescription": "Raporte rreth parjes së faqeve dhe titujve të tyre. Ju lejon të matni motorin e brendshëm të kërkimeve të sajtit tuaj. Ndjek vetvetiu klikimet drejt lidhjesh të jashtme dhe shkarkime kartelash.",
+ "PagesReportDocumentation": "Ky raport përmban të dhëna rreth URL faqesh që janë vizituar. %s Tabela është e sistemuar në mënyrë hierarkike, URL-të tregohen si strukturë dosjeje.",
+ "PagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth URL-sh faqesh që janë vizituar.",
+ "PagesSubcategoryHelp2": "Tabela është e sistemuar në mënyrë hierarkike, URL-të tregohen si strukturë dosjeje.",
+ "PagesSubcategoryHelp3": "Për lëvizje përdorni ikonat plus dhe minus majtas.",
+ "PluginDescription": "Raporte rreth parjes së faqeve dhe titujve të tyre. Ju lejon të matni gjëra për motorin e brendshëm të kërkimeve të sajtit tuaj. Ndjek vetvetiu klikimet drejt lidhjesh të jashtme dhe shkarkime kartelash.",
"RevisitedPages": "Faqe të para më shumë se një herë",
+ "SiteSearchCategories": "Kategori (Kërkim Në Sajt)",
"SiteSearchCategories1": "Ky raport paraqet kategoritë që vizitorët kanë përzgjedhur kur bënë një Kërkim te sajti juaj.",
- "SiteSearchCategories2": "Për shembull, sajtet për e-tregti kanë zakonisht një përzgjedhës \"Kategorish\", që kështu vizitorët të mund t’i ngushtojnë kërkimet e tyre nga krejt produktet te një Kategori specifike.",
+ "SiteSearchCategories2": "Për shembull, sajtet për e-tregti kanë zakonisht një përzgjedhës “Kategorish”, që kështu vizitorët të mund t’i ngushtojnë kërkimet e tyre nga krejt produktet te një Kategori specifike.",
+ "SiteSearchCategory": "Kategori (Kërkim Në Sajt)",
"SiteSearchFollowingPagesDoc": "Kur vizitorët kërkojnë te sajti juaj, ata shohin për një faqe, lëndë, produkt ose shërbim të veçantë. Ky raport paraqet faqet që qenë klikuar më shumë pas një kërkimi të brendshëm. Me fjalë të tjera, listën e faqeve më të kërkuara nga vizitorët tashmë brenda sajtit tuaj.",
"SiteSearchIntro": "Ndjekja e kërkimeve që bëjnë vizitorët në sajtin tuaj është një rrugë shumë e efektshme për të mësuar më tepër rreth çka po kërkon publiku juaj, mund t’ju ndihmojë të gjeni ide për lëndë të re, produkte të reja e-tregtie që mund të jenë duke u kërkuar nga blerës potencialë dhe, përgjithësisht, të përmirësoni për vizitorët punimin e sajtit tuaj.",
- "SiteSearchCategory": "Kategori (Kërkim Në Sajt)",
- "SiteSearchCategories": "Kategori (Kërkim Në Sajt)",
- "SiteSearchKeyword": "Fjalëkyç (Kërkim te Sajti)",
- "SiteSearchKeywords": "Fjalëkyça (Kërkim Në Sajt)",
+ "SiteSearchKeyword": "Fjalëkyç (Kërkim Në Sajt)",
"SiteSearchKeywordCount": "Numër fjalëkyçesh (Kërkim Në Sajt)",
"SiteSearchKeywordCounts": "Numër fjalëkyçesh (Kërkim Në Sajt)",
+ "SiteSearchKeywords": "Fjalëkyça (Kërkim Në Sajt)",
"SiteSearchKeywordsDocumentation": "Ky raport paraqet Fjalëkyçe Kërkimesh që vizitorët kanë bërë me Motorin tuaj të brendshëm të Kërkimeve.",
- "SiteSearchKeywordsNoResultDocumentation": "Ky raport paraqet Fjalëkyçe Kërkimesh që nuk patën ndonjë përfundim kërkimi: ndoshta algoritmi i motorit të kërkimit mund të përmirësohet, ose ndoshta vizitorët tuaj po kërkonin për lëndë që nuk gjendet (ende) në sajtin tuaj?",
+ "SiteSearchKeywordsNoResultDocumentation": "Ky raport paraqet Fjalëkyçe Kërkimesh që s’patën ndonjë përfundim kërkimi: ndoshta algoritmi i motorit të kërkimit mund të përmirësohet, ose ndoshta vizitorët tuaj po kërkonin për lëndë që s’gjendet (ende) në sajtin tuaj?",
+ "SiteSearchSubcategoryHelp1": "Ndarja Kërkim në Sajt shfaq cilat fjalëkyçe përdorin vizitorët kur kërkojnë në sajtin tuaj. Shfaq gjithashtu cilat faqe shohin vizitorët pasi bëjnë një kërkim dhe cilat fjalëkyçe në sajt nuk japin asnjë përfundim.",
+ "SiteSearchSubcategoryHelp2": "Këto raporte mund t’ju japin ide rreth lënde që mungon në sajtin tuaj, se çfarë po kërkojnë vizitorët, por s’e gjejnë kollaj, etj.",
+ "SiteSearchSubcategoryHelp3": "Mësoni më tepër, te Udhërrëfyesi i Kërkimit Në Sajt.",
+ "SubmenuPageTitles": "Tituj faqesh",
"SubmenuPagesEntry": "Faqe hyrjesh",
"SubmenuPagesExit": "Faqe daljesh",
- "SubmenuPageTitles": "Tituj faqesh",
- "SubmenuSitesearch": "Kërkim te Sajti",
+ "SubmenuSitesearch": "Kërkim Në Sajt",
+ "TimeSpentInReferringAction": "Kohë e Harxhuar në Veprim Sjelljeje",
"WidgetEntryPageTitles": "Tituj Faqesh Hyrje",
"WidgetExitPageTitles": "Tituj Faqesh Dalje",
- "WidgetPagesEntry": "Faqe Hyrje",
- "WidgetPagesExit": "Faqe Daljesh",
"WidgetPageTitles": "Tituj Faqesh",
"WidgetPageTitlesFollowingSearch": "Tituj Faqesh Në Vijim të një Kërkimi në Sajt",
"WidgetPageUrlsFollowingSearch": "Faqe Në Vijim të një Kërkimi në Sajt",
+ "WidgetPagesEntry": "Faqe Hyrje",
+ "WidgetPagesExit": "Faqe Daljesh",
"WidgetSearchCategories": "Kategori Kërkimesh",
"WidgetSearchKeywords": "Fjalëkyçe Kërkimi në Sajt",
- "WidgetSearchNoResultKeywords": "Fjalëkyçe Kërkimesh me Pa Përfundime",
- "ActionType": "Lloj Veprimi",
- "ActionTypes": "Lloje Veprimesh",
- "Behaviour": "Sjellje",
- "TimeSpentInReferringAction": "Kohë e Harxhuar në Veprim Referimi",
- "PagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth URL-sh faqesh që janë vizituar.",
- "PagesSubcategoryHelp2": "Tabela është e sistemuar në mënyrë hierarkike, URL-të tregohen si strukturë dosjeje.",
- "PagesSubcategoryHelp3": "Për lëvizje përdorni ikonat plus dhe minus majtas.",
- "EntryPagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth faqesh hyrjesh që janë përdorur gjatë një periudhe të caktuar. Faqe hyrjeje është faqja e parë që sheh një vizitor gjatë vizitës së tij.",
- "EntryPagesSubcategoryHelp2": "URL-të e hyrjeve tregohen si strukturë dosjeje.",
- "ExitPagesSubcategoryHelp1": "Ky raport përmban të dhëna rreth faqesh daljesh që janë përdorur gjatë një periudhe të caktuar. Faqe daljeje është faqja e fundit që sheh një vizitor gjatë vizitës së tij.",
- "ExitPagesSubcategoryHelp2": "URL-të e daljeve tregohen si strukturë dosjeje.",
- "PageTitlesSubcategoryHelp1": "Ky raport përmban të dhëna rreth titujve të faqeve që janë vizituar.",
- "PageTitlesSubcategoryHelp2": "Titulli i faqeve është Etiketa HTML &amp;lt;title&amp;gt; që shfaqin në titullin e dritares shumica e faqeve.",
- "SiteSearchSubcategoryHelp1": "Ndarja Kërkim në Sajt shfaq cilat fjalëkyçe përdorin vizitorët kur kërkojnë në sajtin tuaj. Shfaqet gjithashtu cilat faqe shohin vizitorët pasi bëjnë një kërkim dhe cilat fjalëkyçe në sajt nuk japin asnjë përfundim.",
- "SiteSearchSubcategoryHelp2": "Këto raporte mund t’ju japin ide rreth lënde që mungon në sajtin tuaj, se çfarë po kërkojnë vizitorët, por s’e gjejnë kollaj, etj.",
- "SiteSearchSubcategoryHelp3": "Mësoni më tepër, te Udhërrëfyesi i Kërkimit Në Sajt.",
- "OutlinksSubcategoryHelp1": "Ky raport shfaq një listë hierarkike URL-sh lidhjesh për jashtë që janë klikuar nga vizitorët tuaj. Një lidhje për jashtë është një lidhje që e largon vizitorin nga sajti juaj (drejt një përkatësie tjetër).",
- "DownloadsSubcategoryHelp1": "Në këtë raport mund të shihni se çilat kartela kanë shkarkuar vizitorët tuaj.",
- "DownloadsSubcategoryHelp2": "Ato çka Matomo numëron si shkarkim është çdo klikim mbi një lidhje shkarkimi. Por Matomo s’mund ta dijë a u plotësua apo jo shkarkimi."
+ "WidgetSearchNoResultKeywords": "Fjalëkyçe Kërkimesh me Pa Përfundime"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Annotations/API.php b/plugins/Annotations/API.php
index e93ae09c47..bb2bd2924b 100644
--- a/plugins/Annotations/API.php
+++ b/plugins/Annotations/API.php
@@ -10,10 +10,7 @@ namespace Piwik\Plugins\Annotations;
use Exception;
use Piwik\Date;
-use Piwik\Period\Range;
-use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution as EvolutionViz;
/**
* @see plugins/Annotations/AnnotationList.php
diff --git a/plugins/Annotations/lang/ca.json b/plugins/Annotations/lang/ca.json
index 5034f84a24..bd9f4afee9 100644
--- a/plugins/Annotations/lang/ca.json
+++ b/plugins/Annotations/lang/ca.json
@@ -1,11 +1,11 @@
{
"Annotations": {
- "AddAnnotationsFor": "Afegir una anotació per %s",
+ "AddAnnotationsFor": "Afegir una anotació per %s...",
"AnnotationOnDate": "Anotació per %1$s: %2$s",
"Annotations": "Anotacions",
- "ClickToDelete": "Feu click per eliminar l'anotació",
- "ClickToEdit": "Feu click per editar aquesta anotació",
- "ClickToEditOrAdd": "Feu click per editar o afegir una anotació",
+ "ClickToDelete": "Feu click per eliminar l'anotació.",
+ "ClickToEdit": "Feu click per editar aquesta anotació.",
+ "ClickToEditOrAdd": "Feu click per editar o afegir una anotació.",
"ClickToStarOrUnstar": "Feu click per marcar o desmarcar aquesta nota.",
"CreateNewAnnotation": "Crea una nova anotació...",
"EnterAnnotationText": "Introduix la teva nota...",
@@ -19,4 +19,4 @@
"ViewAndAddAnnotations": "Mostra i afegeix anotacions per %s...",
"YouCannotModifyThisNote": "No podeu modificar aquesta nota perquè o bé no l'heu creada vosatres, o no teni accès d'administrador per aquest lloc web."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Annotations/lang/fa.json b/plugins/Annotations/lang/fa.json
index 771bac13c8..232a41ed3b 100644
--- a/plugins/Annotations/lang/fa.json
+++ b/plugins/Annotations/lang/fa.json
@@ -3,11 +3,11 @@
"AddAnnotationsFor": "توضیحاتی اضافه کنید برای %s...",
"AnnotationOnDate": "توضیحات از %1$s:%2$s",
"Annotations": "توضیحات",
- "ClickToDelete": "برای پاک کردن توضیح کلیک کنید",
- "ClickToEdit": "برای ویرایش توضیح کلیک کنید",
- "ClickToEditOrAdd": "برای ویرایش یا اضافه کردن یک توضیح جدید کلیک کنید",
- "ClickToStarOrUnstar": "برای ویژه کردن\/نکردن توضیح کلیک کنید",
- "CreateNewAnnotation": "یک توضیح جدید بسازید",
+ "ClickToDelete": "برای پاک کردن توضیح کلیک کنید.",
+ "ClickToEdit": "برای ویرایش توضیح کلیک کنید.",
+ "ClickToEditOrAdd": "برای ویرایش یا اضافه کردن یک توضیح جدید کلیک کنید.",
+ "ClickToStarOrUnstar": "برای ویژه کردن/نکردن توضیح کلیک کنید.",
+ "CreateNewAnnotation": "یک توضیح جدید بسازید...",
"EnterAnnotationText": "یادداشت تان را وارد کنید...",
"HideAnnotationsFor": "توضیحاتی پنهان کنید برای %s...",
"IconDesc": "یادداشت های این بازه زمانی را مشاهده کنید.",
@@ -15,8 +15,8 @@
"InlineQuickHelp": "شما می توانید توضیحاتی را برای علامت گذاری رخداد ویژه ای (مثلا یک مطلب جدید وبلاگ یا طراحی دوباره وبسایت)ایجاد کنید.این برای نگهداری تحلیل داده هایتان یا هر چیزی دیگری است که شما فکر می کنید مهم است.",
"LoginToAnnotate": "برای ایجاد توضیح وارد سیستم شوید.",
"NoAnnotations": "برای بازه زمانی انتخابی یادداشتی موجود نیست.",
- "PluginDescription": "به شما اجازه می دهد برای روز های مختلف برای سایت هود نوشته اضافه کنید،صرفه جویی میکند در تجزیه تحلیل و برای شما اطلاعات را میسازد و شما میتوانید ان را با همکارانتان به اشتراک بگزارید. با حاشیه نویسی اطلاعات شما، شما مطمئن خواهند شد که فراموش نخواهید کرد .",
+ "PluginDescription": "به شما امکان می دهد یادداشت‌هایی را به روزهای مختلف پیوست کنید تا تغییرات ایجاد شده در وب سایت خود را علامت گذاری کنید، تجزیه و تحلیل هایی که در مورد داده‌های خود انجام می دهید ذخیره کنید و اندیشه‌های خود را با همکارانتان به اشتراک بگذارید. با حاشیه نویسی داده های خود، مطمئن خواهید شد که به خاطر می آورید چرا داده های شما به این شکل به نظر می رسد.",
"ViewAndAddAnnotations": "نمایش و افزودن توضیحات برای %s...",
"YouCannotModifyThisNote": "شما نمی توانید این توضیح را تغییر دهید , زیرا شما آن را ایجاد نکرده اید و نه اجازه دسترسی مدیر برای این سایت را دارید."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Annotations/lang/sq.json b/plugins/Annotations/lang/sq.json
index 5bf4657267..5f4894b4ca 100644
--- a/plugins/Annotations/lang/sq.json
+++ b/plugins/Annotations/lang/sq.json
@@ -5,7 +5,7 @@
"Annotations": "Shënime",
"ClickToDelete": "Klikoni që të fshihet ky shënim.",
"ClickToEdit": "Klikoni që të përpunohet ky shënim.",
- "ClickToEditOrAdd": "Klikoni që të përpunohet ose që të shtohet një shënim i ri.",
+ "ClickToEditOrAdd": "Klikoni që të përpunohet, ose që të shtohet një shënim i ri.",
"ClickToStarOrUnstar": "Klikoni që këtij shënimi t’i vihet ose hiqet ylli.",
"CreateNewAnnotation": "Krijoni një shënim të ri…",
"EnterAnnotationText": "Jepni shënimin tuaj…",
@@ -17,6 +17,6 @@
"NoAnnotations": "S’ka shënime për këtë interval datash.",
"PluginDescription": "Ju lejon të bashkëngjitni shënime në ditë të ndryshme, për t’u vënë shenjë ndryshimeve të bëra te sajti juaj, të ruani analiza që bëni dhe që lidhen me të dhënat tuaja, si dhe për të ndarë me kolegët mendimet tuaja. Duke bërë shënime në të dhënat tuaja, do të bëni të mundur të mbani mend pse të dhënat tuaja duken ashtu si duken.",
"ViewAndAddAnnotations": "Shihni dhe shtoni shënime për %s…",
- "YouCannotModifyThisNote": "S’e ndryshoni dot këtë shënim, ngaqë s’e krijuat ju, dhe as keni të drejta përgjegjësi për këtë sajt."
+ "YouCannotModifyThisNote": "S’e ndryshoni dot këtë shënim, ngaqë s’e krijuat ju, as keni të drejta përgjegjësi për këtë sajt."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Bandwidth b/plugins/Bandwidth
-Subproject ddf6805de87c6adba661745341444c037f13493
+Subproject 778fb45cc5c0946d091c9b2a2fd280af438c645
diff --git a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
index 91ed882210..c09399e683 100644
--- a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
+++ b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Requests.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker;
-use Piwik\Tracker;
class Requests extends \Piwik\Plugins\BulkTracking\Tracker\Requests
{
diff --git a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
index c705660f1e..9281c02234 100644
--- a/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
+++ b/plugins/BulkTracking/tests/Framework/Mock/Tracker/Response.php
@@ -8,8 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker;
-use Piwik\Tracker;
-use Exception;
class Response extends \Piwik\Plugins\BulkTracking\Tracker\Response
{
diff --git a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
index f8e0d25f1b..ee9e5ffb03 100644
--- a/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
+++ b/plugins/BulkTracking/tests/Framework/TestCase/BulkTrackingTestCase.php
@@ -13,7 +13,6 @@ use Piwik\Plugins\BulkTracking\BulkTracking;
use Piwik\Tests\Framework\Fixture;
use Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker\Requests;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Tracker\Handler as DefaultHandler;
use Piwik\Tracker\RequestSet;
/**
diff --git a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
index ce5c6a0ce3..ab516f0790 100644
--- a/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
+++ b/plugins/BulkTracking/tests/Integration/BulkTrackingTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Integration;
-use Piwik\Plugin;
use Piwik\Plugins\BulkTracking\tests\Framework\TestCase\BulkTrackingTestCase;
use Piwik\Plugins\BulkTracking\Tracker\Handler;
use Piwik\Tracker\Handler as DefaultHandler;
diff --git a/plugins/BulkTracking/tests/Integration/RequestsTest.php b/plugins/BulkTracking/tests/Integration/RequestsTest.php
index 7214884547..e141f1db84 100644
--- a/plugins/BulkTracking/tests/Integration/RequestsTest.php
+++ b/plugins/BulkTracking/tests/Integration/RequestsTest.php
@@ -10,9 +10,7 @@ namespace Piwik\Plugins\BulkTracking\tests\Integration;
use Piwik\Container\StaticContainer;
use Piwik\Plugins\BulkTracking\Tracker\Requests;
-use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
-use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\Request;
diff --git a/plugins/BulkTracking/tests/Integration/TrackerTest.php b/plugins/BulkTracking/tests/Integration/TrackerTest.php
index 971e956757..e939fe9dc1 100644
--- a/plugins/BulkTracking/tests/Integration/TrackerTest.php
+++ b/plugins/BulkTracking/tests/Integration/TrackerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\BulkTracking\tests\Integration;
use Piwik\Common;
-use Piwik\Plugin;
use Piwik\Plugins\BulkTracking\tests\Framework\Mock\Tracker\Response;
use Piwik\Plugins\BulkTracking\tests\Framework\TestCase\BulkTrackingTestCase;
use Piwik\Plugins\BulkTracking\Tracker\Handler;
diff --git a/plugins/Contents/API.php b/plugins/Contents/API.php
index 8a0048b354..0afa291c41 100644
--- a/plugins/Contents/API.php
+++ b/plugins/Contents/API.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Contents;
use Piwik\Archive;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Contents\Archiver;
diff --git a/plugins/Contents/Actions/ActionContent.php b/plugins/Contents/Actions/ActionContent.php
index 9f4072275e..e7b3467b66 100644
--- a/plugins/Contents/Actions/ActionContent.php
+++ b/plugins/Contents/Actions/ActionContent.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Contents\Actions;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker;
/**
* A content is composed of a name, an actual piece of content, and optionally a target.
diff --git a/plugins/Contents/Archiver.php b/plugins/Contents/Archiver.php
index e0eace0e49..19f3ce7b7c 100644
--- a/plugins/Contents/Archiver.php
+++ b/plugins/Contents/Archiver.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Contents;
-use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\RankingQuery;
diff --git a/plugins/Contents/Categories/ContentsSubcategory.php b/plugins/Contents/Categories/ContentsSubcategory.php
index 702c0621cf..472e478357 100644
--- a/plugins/Contents/Categories/ContentsSubcategory.php
+++ b/plugins/Contents/Categories/ContentsSubcategory.php
@@ -20,6 +20,6 @@ class ContentsSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Contents_ContentsSubcategoryHelp1') . '</p>'
- . '<p><a href="https://matomo.org/docs/content-tracking/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Contents_ContentsSubcategoryHelp2') . '</a></p>';
+ . '<p><a href="https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&mtm_source=Matomo_App&&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Contents_ContentsSubcategoryHelp2') . '</a></p>';
}
}
diff --git a/plugins/Contents/lang/ca.json b/plugins/Contents/lang/ca.json
index f5e51efbc9..e4ac482fca 100644
--- a/plugins/Contents/lang/ca.json
+++ b/plugins/Contents/lang/ca.json
@@ -1,6 +1,24 @@
{
"Contents": {
+ "ContentImpression": "Impressions de contingut",
+ "ContentInteraction": "Interacció amb el contingut",
+ "ContentInteractions": "Interacció amb els continguts",
"ContentName": "Nom del contingut",
- "Contents": "Continguts"
+ "ContentNameReportDocumentation": "Aquest informe mostra els noms del contingut que els vostres visitants han vist i amb el qual han interactuat.",
+ "ContentNames": "Noms del contingut",
+ "ContentPiece": "Element de contingut",
+ "ContentPieceReportDocumentation": "Aquest informe mostra els elements de contingut que els vostres visitants han vist i amb el qual han interactuat.",
+ "ContentPieces": "Parts de contingut",
+ "ContentTarget": "Objectiu de contingut",
+ "ContentTargets": "Objectius de contingut",
+ "Contents": "Continguts",
+ "ContentsSubcategoryHelp1": "El seguiment del contingut us ajuda a determinar la popularitat de contingut específic a qualsevol pàgina del vostre lloc web o aplicació. Aquesta secció informa del nombre d'impressions i interaccions que reben els diferents continguts del vostre lloc.",
+ "ContentsSubcategoryHelp2": "Més informació a la guia de seguiment de contingut.",
+ "Impressions": "Impressions",
+ "ImpressionsMetricDocumentation": "El nombre de vegades que s'ha mostrat un bloc de contingut, com ara un bàner o un anunci, en una pàgina.",
+ "InteractionRate": "Taxa d'interacció",
+ "InteractionRateMetricDocumentation": "La proporció entre impressions de contingut i interaccions.",
+ "InteractionsMetricDocumentation": "El nombre de vegades que s'ha interactuat amb un bloc de contingut (p. ex., un \"clic\" en un bàner o anunci).",
+ "PluginDescription": "El seguiment del contingut i dels bàners us permet mesurar el rendiment (visualitzacions, clics, CTR) de qualsevol contingut de les vostres pàgines (anunci de bàner, imatge, qualsevol element)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Contents/lang/nb.json b/plugins/Contents/lang/nb.json
index 415a625d49..22ec6800c6 100644
--- a/plugins/Contents/lang/nb.json
+++ b/plugins/Contents/lang/nb.json
@@ -7,10 +7,12 @@
"ContentNameReportDocumentation": "Denne rapporten viser navnene for innholdene dine besøkende tittet på og interagerte med.",
"ContentNames": "Innholdsnavn",
"ContentPiece": "Innholdsdel",
+ "ContentPieceReportDocumentation": "Denne rapporten viser deg innholdet dine besøkende så på eller interagerte med.",
"ContentPieces": "Innholdsdeler",
"ContentTarget": "Innholdsmål",
"ContentTargets": "Innholdsmål",
"Contents": "Innhold",
+ "ContentsSubcategoryHelp1": "Innholdssporing hjelper deg å bestemme populariteten for gitte deler av innhold på enhver side i nettsiden eller programmet ditt. Denne delen rapporterer antall inntrykk og interaksjoner de forskjellige delene av innhold på siden din mottar.",
"ContentsSubcategoryHelp2": "Lær mer om det i innholdssporingsveiledningen.",
"Impressions": "Visninger",
"ImpressionsMetricDocumentation": "Antall ganger en innholdsdel, som en banner eller annonse, ble vist på en side.",
diff --git a/plugins/Contents/lang/sq.json b/plugins/Contents/lang/sq.json
index db14f4fd45..267b70d916 100644
--- a/plugins/Contents/lang/sq.json
+++ b/plugins/Contents/lang/sq.json
@@ -1,24 +1,24 @@
{
"Contents": {
- "PluginDescription": "Ndjekja e lëndës dhe e banderolave ju lejon të matni punimin (parje, klikime, CTR) të çfarëdo pjese të lëndës në faqet tuaja (banderolë reklame, figurë, çfarëdo objekti).",
- "Impressions": "Përshtypje",
"ContentImpression": "Përshtypje Lënde",
"ContentInteraction": "Ndërveprim Me Lëndën",
"ContentInteractions": "Ndërveprime me Lëndën",
- "InteractionRate": "Shkallë Ndërveprimi",
"ContentName": "Emër Lënde",
- "ContentNameReportDocumentation": "Ky raport shfaq emrat për lëndën që vizitorët tuaj panë dhe ndërvepruan me të.",
+ "ContentNameReportDocumentation": "Ky raport shfaq emrat e lëndës të cilën panë dhe me të cilën ndërvepruan vizitorët tuaj.",
"ContentNames": "Emra Lënde",
- "ContentPiece": "Copëz Lënde",
- "ContentPieceReportDocumentation": "Ky raport shfaq pjesë lënde që vizitorët tuaj panë dhe ndërvepruan me të.",
- "ContentPieces": "Copëza Lënde",
+ "ContentPiece": "Pjesë Lënde",
+ "ContentPieceReportDocumentation": "Ky raport shfaq pjesë lënde të cilat panë dhe me të cilat ndërvepruan vizitorët tuaj.",
+ "ContentPieces": "Pjesë Lënde",
"ContentTarget": "Synim Lënde",
"ContentTargets": "Synime Lënde",
"Contents": "Lëndë",
- "InteractionsMetricDocumentation": "Numri i herëve kur për një bllok lënde ka pasur ndërveprime (p.sh., një 'klikim' mbi një banderolë apo reklamë).",
- "ImpressionsMetricDocumentation": "Numri i herëve që një bllok lënde, i tillë si banderolë apo reklamë, është shfaqur në një faqe.",
- "InteractionRateMetricDocumentation": "Përpjesëtimi i përshtypjeve nga lënda kundrejt ndërveprimeve.",
"ContentsSubcategoryHelp1": "Ndjekja e lëndës ju ndihmon të përcaktoni popullaritetin e pjesëve specifike të lëndës në çfarëdo faqe të sajtit apo aplikacionit tuaj. Kjo ndarje raporton numrin e përshtypjeve dhe ndërveprimeve që marrin pjesë të ndryshme të lëndës në sajtin tuaj.",
- "ContentsSubcategoryHelp2": "Mësoni më tepër, te udhërrëfyesi i Ndjekjes së Lëndës."
+ "ContentsSubcategoryHelp2": "Mësoni më tepër, te udhërrëfyesi i Ndjekjes së Lëndës.",
+ "Impressions": "Përshtypje",
+ "ImpressionsMetricDocumentation": "Numri i herëve që një bllok lënde, bie fjala, banderolë apo reklamë, është shfaqur në një faqe.",
+ "InteractionRate": "Shkallë Ndërveprimi",
+ "InteractionRateMetricDocumentation": "Përpjesëtimi i përshtypjeve nga lënda kundrejt ndërveprimeve me të.",
+ "InteractionsMetricDocumentation": "Numri i herëve kur për një bllok lënde ka pasur ndërveprime (p.sh., një “klikim” mbi një banderolë apo reklamë).",
+ "PluginDescription": "Ndjekja e lëndës dhe e banderolave ju lejon të matni punimin (parje, klikime, CTR) të çfarëdo pjese të lëndës në faqet tuaja (banderolë reklame, figurë, çfarëdo objekti)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Contents/lang/tl.json b/plugins/Contents/lang/tl.json
index 4621edefda..0ea8d5a4bb 100644
--- a/plugins/Contents/lang/tl.json
+++ b/plugins/Contents/lang/tl.json
@@ -1,10 +1,11 @@
{
"Contents": {
- "Impressions": "Mga Impresyon",
- "InteractionRate": "Rate ng Pakikipag-ugnayan",
"ContentName": "Pangalan ng Nilalaman",
"ContentPiece": "Piraso ng Nilalaman",
"ContentTarget": "Target ng Nilalaman",
- "Contents": "Mga Nilalaman"
+ "Contents": "Mga Nilalaman",
+ "Impressions": "Mga Impresyon",
+ "InteractionRate": "Rate ng Pakikipag-ugnayan",
+ "PluginDescription": "Maaring sukatin ang pagganap (mga view, pag-click, CTR) ng anumang piraso ng nilalaman sa iyong mga pahina (Banner ad, imahe, anumang item) sa pagsubaybay sa contento at banner."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/API.php b/plugins/CoreAdminHome/API.php
index 32f269ff70..b922733c45 100644
--- a/plugins/CoreAdminHome/API.php
+++ b/plugins/CoreAdminHome/API.php
@@ -14,7 +14,6 @@ use Monolog\Logger;
use Piwik\Access;
use Piwik\ArchiveProcessor\Rules;
use Piwik\ArchiveProcessor;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Archive\ArchiveInvalidator;
diff --git a/plugins/CoreAdminHome/Commands/InvalidateReportData.php b/plugins/CoreAdminHome/Commands/InvalidateReportData.php
index 93dde32d58..cdb1f3240e 100644
--- a/plugins/CoreAdminHome/Commands/InvalidateReportData.php
+++ b/plugins/CoreAdminHome/Commands/InvalidateReportData.php
@@ -20,12 +20,9 @@ use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
use Piwik\Site;
use Piwik\Period\Factory as PeriodFactory;
use Psr\Log\LoggerInterface;
-use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Question\ConfirmationQuestion;
-use Symfony\Component\Console\Question\Question;
/**
* Provides a simple interface for invalidating report data by date ranges, site IDs and periods.
diff --git a/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php b/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
index bcbb4fe5b4..4dec1a14a0 100644
--- a/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
+++ b/plugins/CoreAdminHome/Commands/MigrateTokenAuths.php
@@ -8,16 +8,12 @@
namespace Piwik\Plugins\CoreAdminHome\Commands;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\UsersManager\Model;
use Piwik\Updater;
use Piwik\Updater\Migration\Factory as MigrationFactory;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php b/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
index 4660fc5d9d..42736cc935 100644
--- a/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
+++ b/plugins/CoreAdminHome/Commands/PurgeOldArchiveData.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreAdminHome\Commands;
-use Piwik\Archive;
use Piwik\Archive\ArchivePurger;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/plugins/CoreAdminHome/CoreAdminHome.php b/plugins/CoreAdminHome/CoreAdminHome.php
index 4c45a22459..4b312ba876 100644
--- a/plugins/CoreAdminHome/CoreAdminHome.php
+++ b/plugins/CoreAdminHome/CoreAdminHome.php
@@ -205,5 +205,8 @@ class CoreAdminHome extends \Piwik\Plugin
$translationKeys[] = 'Actions_ColumnPageName';
$translationKeys[] = 'CoreAdminHome_JSTracking_MergeSubdomainsDesc';
$translationKeys[] = 'CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc';
+ $translationKeys[] = 'CoreAdminHome_SinglePageApplicationDescription';
+
+
}
}
diff --git a/plugins/CoreAdminHome/Tasks.php b/plugins/CoreAdminHome/Tasks.php
index 803880b621..1188d102c7 100644
--- a/plugins/CoreAdminHome/Tasks.php
+++ b/plugins/CoreAdminHome/Tasks.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\CoreAdminHome;
use Piwik\API\Request;
-use Piwik\Archive;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Archive\ArchivePurger;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\CronArchive;
diff --git a/plugins/CoreAdminHome/lang/ca.json b/plugins/CoreAdminHome/lang/ca.json
index 84c3885abc..c9ce20d965 100644
--- a/plugins/CoreAdminHome/lang/ca.json
+++ b/plugins/CoreAdminHome/lang/ca.json
@@ -1,34 +1,167 @@
{
"CoreAdminHome": {
+ "AddNewTrustedHost": "Afegeix un nou hoste de confiança",
"Administration": "Administració",
+ "ArchivingSettings": "Configuració d'arxivat",
"BrandingSettings": "Preferències del Branding",
+ "BruteForce": "Força bruta",
+ "CheckToOptIn": "Marqueu aquesta casella per participar.",
"ClickHereToOptIn": "Feu click aquí per apuntar-vos.",
"ClickHereToOptOut": "Feu click aquí per desapuntar-vos.",
- "CustomLogoFeedbackInfo": "Si heu personalitzat el log de Matomo, potser també estareu interesants en amagar %1$s l'enllaç al menú superior. Per a fer-ho, podeu deshabilitar l'extensió de Feedback a la pàgina %2$sManage Plugins%3$s",
+ "ConfirmDeleteAllTrackingFailures": "Esteu segur que voleu suprimir tots els errors de seguiment?",
+ "ConfirmDeleteThisTrackingFailure": "Esteu segur que voleu suprimir aquest error de seguiment?",
+ "Cors": "CORS",
+ "CorsDomains": "Dominis de compartició de recursos creuats (CORS)",
+ "CorsDomainsHelp": "Podeu definir dominis o subdominis com http://example.com o http://stats.example.com. O per permetre sol·licituds entre dominis per a tots els dominis, només cal que afegiu un *",
+ "CustomLogoFeedbackInfo": "Si heu personalitzat el log de Matomo, potser també estareu interesants en amagar %1$s l'enllaç al menú superior. Per a fer-ho, podeu deshabilitar l'extensió de Feedback a la pàgina %2$sManage Plugins%3$s.",
"CustomLogoHelpText": "Podeu personalitzar el logo de Matomo que es mostrarà a l'interfície d'usuari i als informes d'emails.",
+ "DeleteAllFailures": "Suprimeix tots els errors",
+ "DevelopmentProcess": "Tot i que el nostre procés de desenvolupament inclou milers de proves automatitzades, els Beta Testers tenen un paper clau a l'hora d'aconseguir la \"Política sense errors\" a Matomo.",
"EmailServerSettings": "Configuració del servidor de correu",
+ "ErrorEmailFromAddressNotValid": "L'adreça SMTP de no és vàlida",
+ "FaviconUpload": "Escull un Favicon per carregar",
+ "FileUploadDisabled": "La càrrega de fitxers no està activada a la configuració de PHP. Per carregar el vostre logotip personalitzat, configureu %s a php.ini i reinicieu el vostre servidor web.",
+ "ForBetaTestersOnly": "Només per a beta testers",
+ "HttpTrackingApi": "API de seguiment HTTP",
+ "HttpTrackingApiDescription": "%1$sL'API de seguiment HTTP%2$s us permet fer un seguiment de qualsevol cosa. Això pot ser útil si utilitzeu un llenguatge de programació per al qual encara no hi ha SDK. També pot ser útil quan voleu fer un seguiment de dispositius o aplicacions d'una manera especial.",
"ImageTracking": "Seguiment per imatge",
"ImageTrackingIntro1": "Quan un visitant ha deshabilitat el JavaScript, o quan el JavaScript no es pot fer servir, podeu fer servir un enllaç a una imatge de seguiment per seguir les vistes.",
"ImageTrackingIntro2": "Generar l'enllaç de sota i copiar-enganxar el codi HTML generat a la pàgina. Si esteu fent servir això com alternativa al seguiment amb JavaScript, heu d'envoltar el codi en %1$s tags.",
"ImageTrackingIntro3": "Per la llista completa d'opcions que podeu fer servir amb una imatge de seguiment, mireu a la %1$sDocumentació de Tracking API%2$s.",
"ImageTrackingLink": "Enllaç de seguiment amb imatge",
+ "ImportFromGoogleAnalytics": "Importar des de Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Si teniu una propietat de Google Analytics i esteu canviant a Matomo, podeu importar les vostres dades existents mitjançant el connector %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Important els Registres del Servidor",
"ImportingServerLogsDesc": "Una alternativa a seguir els visitants a través del navegador (tant amb JavaScript com amb un enllaç de imatge) és important continuament els registres del servidor. Informeu-vos més a %1$sServer Log File Analytics%2$s.",
- "JavaScriptTracking": "Seguiment amb Javascript",
+ "InvalidPluginsWarning": "Els connectors següents no són compatibles amb %1$s i no s'han pogut carregar: %2$s.",
+ "InvalidPluginsYouCanUninstall": "Podeu actualitzar o desinstal·lar aquests connectors a la pàgina %1$sGestiona els connectors%2$s.",
+ "JSTrackingIntro1": "Podeu fer un seguiment dels visitants del vostre lloc web de moltes maneres diferents. La manera recomanada de fer-ho és mitjançant JavaScript. Per utilitzar aquest mètode heu d'assegurar-vos que cada pàgina web del vostre lloc web tingui algun codi JavaScript, que podeu generar aquí.",
+ "JSTrackingIntro2": "Un cop tingueu el codi de seguiment de JavaScript per al vostre lloc web, copieu-lo i enganxeu-lo a totes les pàgines de les que vulgueu fer un seguiment amb Matomo.",
+ "JSTrackingIntro3a": "A la majoria de llocs web, blocs, CMS, etc., podeu utilitzar un connector predefinit per fer el treball tècnic per vosaltres. (Consulteu la nostra %1$slista de connectors utilitzats per integrar Matomo%2$s.)",
+ "JSTrackingIntro3b": "Si no existeix cap connector, podeu editar les plantilles del vostre lloc web i afegir el codi de seguiment de JavaScript a l'etiqueta &lt;/head&gt; que sovint es defineix en un fitxer de plantilla \"header.php\", \"header.tpl\" o similar.",
+ "JSTrackingIntro4": "Si no voleu utilitzar JavaScript per fer un seguiment dels visitants, %1$sgenereu una imatge d'enllaç de seguiment a sota de%2$s.",
"JSTrackingIntro5": "Si desitja fer més que rastrejar visites de pàgina, revisa la %1$sDocumentació javascript de Matomo %2$s sobre la llista de funcions disponibles. Utilitzant aquestes funcions, pots rastrejar objectius, variables personalitzades, compres d'e-comerç, compres abandonades i més.",
+ "JSTracking_CampaignKwdParam": "Paràmetre de paraula clau de campanya",
+ "JSTracking_CampaignNameParam": "Paràmetre de nom de campanya",
+ "JSTracking_CodeNoteBeforeClosingHead": "Assegureu-vos que aquest codi estigui a totes les pàgines del vostre lloc web. Recomanem enganxar-lo just abans de l'etiqueta de tancament %1$s.",
+ "JSTracking_CodeNoteBeforeClosingHeadEmail": "Assegureu-vos que aquest codi estigui incrustat dins d'un element d'script a cada pàgina del vostre lloc web. Recomanem enganxar-lo just abans de l'etiqueta de tancament HEAD.",
+ "JSTracking_CrossDomain": "Per defecte, l'ID de visitant que identifica un visitant únic s'emmagatzema a les galetes pròpies del navegador a les quals només es pot accedir des de les pàgines del mateix domini. L'habilitació de l'enllaç creuat entre dominis us permet fer un seguiment de totes les accions i pàgines vistes d'un visitant específic a la mateixa visita, fins i tot quan vegin pàgines de diversos dominis. Sempre que un usuari faci clic en un enllaç a un dels URL d'àlies del vostre lloc web, afegeix un paràmetre d'URL pk_vid que reenvia l'ID de visitant.",
+ "JSTracking_CrossDomain_NeedsMultipleDomains": "Nota: per utilitzar l'enllaç creuat entre dominis, heu d'especificar més d'un nom de domini (URL) per al vostre lloc web.",
+ "JSTracking_CustomCampaignQueryParam": "Utilitzeu noms de paràmetres de consulta personalitzats per al nom i la paraula clau de la campanya",
+ "JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sMatomo detectarà automàticament els paràmetres de Google Analytics.%2$s",
+ "JSTracking_DisableCookies": "Desactiveu totes les galetes de seguiment",
+ "JSTracking_DisableCookiesDesc": "Desactiva totes les galetes pròpies. Les galetes de Matomo existents per a aquest lloc web s'eliminaran a la pàgina següent.",
+ "JSTracking_EnableCrossDomainLinking": "Habilita l'enllaç creuat entre dominis",
+ "JSTracking_EnableDoNotTrack": "Activa la detecció de DoNotTrack del costat del client",
+ "JSTracking_EnableDoNotTrackDesc": "Per tant, les sol·licituds de seguiment no s'enviaran si els visitants no volen ser rastrejats.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Nota: S'ha habilitat el suport de DoNotTrack del costat del servidor, de manera que aquesta opció no tindrà cap efecte.",
+ "JSTracking_EndNote": "Nota: podeu generar un codi de seguiment personalitzat a la secció d'administració %1$sCodi de seguiment%2$s.",
+ "JSTracking_GroupPageTitlesByDomain": "Avantposeu el domini del lloc al títol de la pàgina quan feu el seguiment",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Per tant, si algú visita la pàgina \"Quant a\" al bloc.%1$s es registrarà com a \"bloc / Quant a\". Aquesta és la manera més senzilla d'obtenir una visió general del trànsit per subdomini.",
+ "JSTracking_MergeAliases": "A l'informe \"Enllaços externs\", amagueu els clics als URL d'àlies coneguts de",
+ "JSTracking_MergeAliasesDesc": "Així els clics als enllaços a URL d'àlies (per exemple, %s) no es comptaran com a \"Enllaç extern\".",
+ "JSTracking_MergeSubdomains": "Feu un seguiment dels visitants a tots els subdominis de",
+ "JSTracking_MergeSubdomainsDesc": "Per tant si un visitant visita %1$s i %2$s es comptarà com a visitant únic.",
+ "JSTracking_PageCustomVars": "Feu un seguiment d'una variable personalitzada per a cada vista de pàgina",
+ "JSTracking_PageCustomVarsDesc": "Per exemple, amb el nom de variable \"Categoria\" i el valor \"Llibre blanc\".",
+ "JSTracking_TrackNoScript": "Seguiment dels usuaris amb JavaScript desactivat",
+ "JSTracking_VisitorCustomVars": "Feu un seguiment de les variables personalitzades per a aquest visitant",
+ "JSTracking_VisitorCustomVarsDesc": "Per exemple, amb el nom de la variable \"Tipus\" i el valor \"Client\".",
+ "JavaScriptTracking": "Seguiment amb Javascript",
+ "JsTrackingCodeMissingEmail1": "Fa uns dies vau afegir el lloc web '%s' al vostre Matomo Analytics. Ho acabem de comprovar i el vostre Matomo no sembla tenir cap trànsit registrat per a aquest lloc web.",
+ "JsTrackingCodeMissingEmail2": "Per començar a fer un seguiment de les dades i obtenir informació sobre els vostres usuaris, haureu de configurar el seguiment al vostre lloc web o a l'aplicació mòbil. Per als llocs web, simplement inseriu el codi de seguiment just abans de l'etiqueta %s.",
+ "JsTrackingCodeMissingEmail3": "Per trobar i personalitzar el vostre codi de seguiment, %1$sfeu clic aquí%2$s (o feu una ullada a la %3$sGuia del client de seguiment de JavaScript%4$s).",
+ "LearnMore": "Aprèn més",
+ "LogoNotWriteableInstruction": "Per utilitzar el vostre logotip personalitzat en lloc del logotip predeterminat de Matomo, doneu permís d'escriptura a aquest directori: %1$s Matomo necessita accés d'escriptura per als vostres logotips emmagatzemats als fitxers %2$s.",
"LogoUpload": "Seleccioneu un logo per pujar",
+ "LogoUploadFailed": "El fitxer penjat no s'ha pogut processar. Comproveu si el fitxer té un format vàlid.",
+ "LogoUploadHelp": "Pengeu un fitxer en formats %1$s amb una alçada mínima de %2$s píxels.",
+ "LtsReleases": "Les versions LTS (suport a llarg termini) només reben correccions de seguretat i correccions d'errors.",
+ "MenuDevelopment": "Desenvolupament",
+ "MenuDiagnostic": "Diagnòstic",
"MenuGeneralSettings": "Configuració general",
+ "MenuMeasurables": "Mesurables",
+ "MenuSystem": "Sistema",
+ "MissingTrackingCodeEmailSubject": "No hi ha trànsit enregistrat per a %s a Matomo Analytics, comença ara",
+ "NTrackingFailures": "%s errors de seguiment",
+ "NoKnownFailures": "No hi ha errors de seguiment coneguts.",
"OptOutComplete": "Baixa complerta. Les teves visites en aquest lloc web no es tindrán en compte per l'eina d'anàlisis Web.",
"OptOutCompleteBis": "Teniu en compte que si borreu les cookies, borreu la cookie de baixa o si canvieu d'ordenador o de navegadaor web, haureu de tornar a realitzar el proces de baixa.",
+ "OptOutDntFound": "No se us rastreja perquè el vostre navegador informa que no ho permeteu. Aquesta és una configuració del vostre navegador, de manera que no us podreu inscriure mentre no desactiveu la funció \"No fer el seguiment\".",
+ "OptOutErrorNoCookies": "La funció de desactivació del seguiment requereix que les galetes estiguin habilitades.",
+ "OptOutErrorNotHttps": "És possible que la funció de desactivació del seguiment no funcioni perquè aquest lloc no s'ha carregat mitjançant HTTPS. Torneu a carregar la pàgina per comprovar si l'estat de desactivació ha canviat.",
+ "OptOutErrorWindowOpen": "És possible que la funció de desactivació de seguiment no funcioni perquè sembla que s'ha bloquejat la finestra emergent de desactivació. Torneu a carregar la pàgina per comprovar si l'estat de desactivació ha canviat.",
"OptOutExplanation": "El Matomo, podeu afegir el següent codi HTML a una de les pàgiens del vostre lloc web, per exemple a la pàgina de política de privacitat.",
+ "OptOutExplanationIntro": "Aquest codi mostrarà un iFrame que conté un enllaç perquè els vostres visitants puguin desactivar Matomo mitjançant la configuració d'una galeta de desactivació als seus navegadors web. Vegeu a continuació (o %1$s feu clic aquí%2$s) per veure el contingut que mostrarà l'iFrame.",
"OptOutForYourVisitors": "Pàgina de baixa del Matomo pels vostres visitants",
+ "OptingYouOut": "Desactivació en marxa, espereu…",
+ "PersonalPluginSettings": "Configuració del connector personal",
"PiwikIsInstalledAt": "El Matomo està instal·lat a",
- "TrustedHostConfirm": "Esteu segur que voleu canviar el nom nom de la màquina (hostname) de confiança del Matomo?",
+ "PluginSettingChangeNotAllowed": "No teniu permís per canviar el valor de la configuració \"%1$s\" al connector \"%2$s\"",
+ "PluginSettingReadNotAllowed": "No teniu permís per llegir el valor de la configuració \"%1$s\" al connector \"%2$s\"",
+ "PluginSettings": "Configuració del connector",
+ "PluginSettingsIntro": "Aquí podeu canviar la configuració dels següents connectors de tercers:",
+ "PluginSettingsSaveFailed": "No s'ha pogut desar la configuració del connector",
+ "PluginSettingsSaveSuccess": "Configuració del connector actualitzada.",
+ "PluginSettingsValueNotAllowed": "El valor del camp \"%1$s\" al connector \"%2$s\" no està permès",
+ "Problem": "Problema",
+ "ProtocolNotDetectedCorrectly": "Actualment esteu veient Matomo mitjançant una connexió SSL segura (mitjançant HTTPS), però Matomo només ha pogut detectar una connexió no segura al servidor.",
+ "ProtocolNotDetectedCorrectlySolution": "Per assegurar-vos que Matomo sol·licita i ofereix el vostre contingut de manera segura a través d'HTTPS, podeu editar el vostre fitxer %1$s i ajustar la vostra configuració del servidor intermediari, o bé podeu afegir la línia %2$s a sota de la secció %3$s. %4$sMés informació%5$s",
+ "ReleaseChannel": "Canal de publicació",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Algú ha esborrat tots els testimonis d'autenticació del vostre compte.",
+ "SecurityNotificationCheckTwoFactor": "Comproveu la vostra aplicació o dispositiu d'autenticació de dos factors.",
+ "SecurityNotificationEmailSubject": "Notificació de seguretat",
+ "SecurityNotificationIfItWasYou": "Si heu estat vos, endavant. Si no reconeixeu aquesta activitat, restabliu la vostra contrasenya.",
+ "SecurityNotificationRecoveryCodesRegeneratedBody": "Algú ha generat nous codis de recuperació d'autenticació de dos factors per al vostre compte.",
+ "SecurityNotificationRecoveryCodesShowedBody": "Algú ha vist els codis de recuperació d'autenticació de dos factors del vostre compte.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Un altre superusuari (%1$s) ha modificat la configuració del sistema. Configuració afectada: %2$s. Si reconeixeu aquesta activitat, continueu. Si no reconeixeu aquesta activitat, poseu-vos en contacte amb els altres súper usuaris.",
+ "SecurityNotificationSettingsChangedByUserBody": "Algú ha modificat la configuració del sistema. Configuració afectada: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Algú ha creat un testimoni d'autenticació (descripció: %s) al vostre compte. Si no has estat tu, elimina el testimoni.",
+ "SecurityNotificationTokenAuthDeletedBody": "Algú ha suprimit un testimoni d'autenticació (descripció: %s) del vostre compte.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Algú ha desactivat l'autenticació de dos factors al vostre compte.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Algú ha activat l'autenticació de dos factors al vostre compte.",
+ "SecurityNotificationUserCreatedBody": "Algú ha creat un usuari nou (inici de sessió: %s) al vostre compte.",
+ "SecurityNotificationUserDeletedBody": "Algú ha suprimit un usuari (inici de sessió: %s) del vostre compte.",
+ "SendPluginUpdateCommunication": "Enviar un correu electrònic quan hi hagi una actualització del connector disponible",
+ "SendPluginUpdateCommunicationHelp": "S'enviarà un correu electrònic als Superusuaris quan hi hagi una versió nova disponible per a un connector.",
+ "SettingsSaveSuccess": "Configuració actualitzada.",
+ "SinglePageApplicationDescription": "Si feu el seguiment d'una aplicació d'una sola pàgina (SPA) o d'una aplicació web progressiva (PWA), consulteu %1$saquesta guia%2$s.",
+ "Solution": "Solució",
+ "StableReleases": "Si Matomo és una part fonamental del vostre negoci us recomanem que utilitzeu la darrera versió estable. Si feu servir la darrera versió beta i trobeu un error o teniu un suggeriment, %1$svegeu aquí%2$s.",
+ "SystemPluginSettings": "Configuració del connector del sistema",
+ "TrackAGoal": "Seguiment d'un objectiu",
+ "TrackingCode": "Codi de seguiment",
+ "TrackingCodeIntro": "Matomo us ofereix diverses maneres d'incrustar el codi de seguiment per al vostre lloc web, aplicació mòbil i fins i tot per a qualsevol dispositiu o aplicació.",
+ "TrackingFailureAuthenticationProblem": "La sol·licitud no s'ha autenticat, però calia l'autenticació.",
+ "TrackingFailureAuthenticationSolution": "Defineix o corregeix un \"token_auth\" a la teva sol·licitud de seguiment.",
+ "TrackingFailureInvalidSiteProblem": "El lloc no existeix.",
+ "TrackingFailureInvalidSiteSolution": "Actualitzeu l'idSite configurat al rastrejador.",
+ "TrackingFailures": "Errors de seguiment",
+ "TrackingFailuresEmail1": "Això és només per fer-vos saber que %s diferents tipus d'errors de seguiment s'han produït en els últims dies.",
+ "TrackingFailuresEmail2": "Per veure totes les sol·licituds de seguiment fallides %1$s feu clic aquí%2$s.",
+ "TrackingFailuresEmailSubject": "Errors de seguiment al vostre Matomo Analytics",
+ "TrackingFailuresIntroduction": "Aquesta pàgina enumera els errors de seguiment que s'han produït durant els darrers %s dies. Tingueu en compte que només s'enregistren els errors de seguiment més habituals i no pas tots.",
+ "TrackingURL": "URL de seguiment",
+ "TrustedHostConfirm": "Esteu segur que voleu canviar el nom de la màquina (hostname) de confiança del Matomo?",
"TrustedHostSettings": "Nom del host de Matomo de confiança",
+ "TwoFactorAuth": "Autorització de dos factors",
+ "UiDemo": "Demo de l'interfície d'usuari",
+ "UncheckToOptOut": "Desmarqueu aquesta casella per excloure-us.",
+ "UpdateSettings": "Actualitza la configuració",
"UseCustomLogo": "Utilitza un logo personalitzat",
"ValidPiwikHostname": "Nom del host de Matomo vàlid",
+ "ViewAllTrackingFailures": "Veure tots els errors de seguiment",
+ "WhatIsNew": "Què hi ha de nou",
+ "WhatIsNewNoChanges": "No hi ha res de nou de moment",
+ "WhatIsNewNoChangesTitle": "No hi ha canvis recents",
+ "WhatIsNewTitle": "Aquí teniu les novetats de Matomo",
+ "WhatIsNewTooltip": "Descobriu les novetats de Matomo",
+ "WithOptionalRevenue": "amb ingressos opcionals",
+ "YouAreNotOptedOut": "No us heu exclòs.",
"YouAreOptedOut": "Actualment esteu donat de baixa.",
"YouMayOptOut": "Podeu escollir no tenir un únic nombre d'identificació assignat al vostre ordinador per evitar l'agregació i l'anàlisi de la informació recollida en aquest lloc web.",
+ "YouMayOptOut2": "Podeu optar per evitar que aquest lloc web agregui i analitzi les accions que feu aquí.",
+ "YouMayOptOut3": "Si ho feu protegireu la vostra privadesa, però també impedireu que el propietari aprengui de les vostres accions i creï una millor experiència per a vos i la resta d'usuaris.",
"YouMayOptOutBis": "Per prendre aquesta decisió, feu click a continuació per rebre una cookie de baixa."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/cs.json b/plugins/CoreAdminHome/lang/cs.json
index 333da1e5a6..96af97a0e0 100644
--- a/plugins/CoreAdminHome/lang/cs.json
+++ b/plugins/CoreAdminHome/lang/cs.json
@@ -4,45 +4,58 @@
"Administration": "Administrace",
"ArchivingSettings": "Archivování nastavení",
"BrandingSettings": "Nastavení označení",
- "ErrorEmailFromAddressNotValid": "SMTP adresa odesílatele není platná",
- "ReleaseChannel": "Kanál vydání",
+ "CheckToOptIn": "Chcete-li se přihlásit, zaškrtněte toto políčko.",
"ClickHereToOptIn": "Klikněte zde pro přihlášení.",
"ClickHereToOptOut": "Klikněte zde pro vyloučení.",
+ "ConfirmDeleteAllTrackingFailures": "Jste si jisti, že chcete vymazat všechna selhání sledování?",
+ "ConfirmDeleteThisTrackingFailure": "Jste si jisti, že chcete vymazat toto selhání sledování?",
"CorsDomains": "Domény sdílení křížových zdrojů (CORS)",
- "CorsDomainsHelp": "Můžete definovat domény nebo subdomény jako http:\/\/example.com nebo http:\/\/stats.example.com. Nebo pro povolení požadavků napříč doménami pro všechny domény jednoduše přidejte *",
+ "CorsDomainsHelp": "Můžete definovat domény nebo subdomény jako http://example.com nebo http://stats.example.com. Nebo pro povolení požadavků napříč doménami pro všechny domény jednoduše přidejte *",
"CustomLogoFeedbackInfo": "Pokud přizpůsobíte logo Matomou, možná by vás zajímalo, jak skrýt odkaz %1$s v horním menu, Pokud to chcete provést, zakažte plugin zpětné vazby na stránce %2$sSpravovat zásuvné moduly%3$s.",
"CustomLogoHelpText": "Můžete přizpůsobit logo Matomou, které bude zobrazeno v uživatelském rozhraní a v emailových hlášeních.",
+ "DeleteAllFailures": "Vymazat všechna selhání",
"DevelopmentProcess": "I když náš vývojový proces zahrnuje tisíce automatizovaných testů, Beta testeři hrají klíčovou roli při dosahování „politiky bez chyb“ v Matomo.",
"EmailServerSettings": "Nastavení emailového serveru",
+ "ErrorEmailFromAddressNotValid": "SMTP adresa odesílatele není platná",
+ "FaviconUpload": "Vyberte favicon, kterou chcete nahrát",
+ "FileUploadDisabled": "Nahrávání souborů je zakázáno v konfiguraci PHP. Pokud chcete nahrát svoje vlastní logo, nastavte %s v souboru php.ini a restartujte webový server.",
"ForBetaTestersOnly": "Pouze pro beta testery",
+ "HttpTrackingApi": "HTTP Tracking API",
+ "HttpTrackingApiDescription": "Rozhraní %1$sAPI pro sledování HTTP%2$s vám umožní sledovat cokoli. To může být užitečné, pokud používáte programovací jazyk, pro který ještě neexistuje SDK. Může být také užitečné, pokud chcete sledovat zařízení nebo aplikace zvláštním způsobem.",
"ImageTracking": "Sledování obrázkem",
"ImageTrackingIntro1": "Pokud má návštěvník vypnutý JavaScript nebo nemůže být JavaScript použit, můžete využít obrázku k měření a sledování Vaší návštěvnosti.",
"ImageTrackingIntro2": "Níže vygenerujte odkaz a vložte vygenerované HTML do kódu stránky. Pokud ho používáte jako nouzové řešení místo javascriptového sledování, můžete ho obalit do tagů %1$s.",
"ImageTrackingIntro3": "Všechny možnosti, které lze použít u obrázkového sledovacího odkazu najdete v %1$sdokumentaci sledovacího API%2$s.",
"ImageTrackingLink": "Odkaz pro sledování obrázkem",
+ "ImportFromGoogleAnalytics": "import z Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Pokud používáte službu Google Analytics a přecházíte na Matomo, můžete stávající data importovat pomocí %1$s GoogleAnalyticsImporter pluginu %2$s.",
"ImportingServerLogs": "Důležitá serverová hlášení.",
"ImportingServerLogsDesc": "Alternativou ke sledování návštěvníků pomocí javascriptu nebo obrázku je neustálý import logu web serveru. Více informací najdeve v dokumentaci %1$sanalýzy log souborů%2$s.",
"InvalidPluginsWarning": "Následující zásuvné moduly nejsou kompatibilní s %1$s a nemohly být načteny %2$s.",
"InvalidPluginsYouCanUninstall": "Tyto zásuvné moduly můžete aktualizovat nebo odinstalovat na stránce %1$ssprávy zásuvných modulů%2$s.",
- "JavaScriptTracking": "Sledování javascriptem",
- "HttpTrackingApi": "HTTP Tracking API",
- "HttpTrackingApiDescription": "Rozhraní %1$sAPI pro sledování HTTP%2$s vám umožní sledovat cokoli. To může být užitečné, pokud používáte programovací jazyk, pro který ještě neexistuje SDK. Může být také užitečné, pokud chcete sledovat zařízení nebo aplikace zvláštním způsobem.",
+ "JSTrackingIntro1": "Můžete sledovat návštěvníky svého webu mnoha různými způsoby. Doporučený způsob je pomocí JavaScriptu. Chcete-li použít tuto metodu, musíte se ujistit, že každá webová stránka vašeho webu obsahuje nějaký kód JavaScript, který můžete vygenerovat zde.",
+ "JSTrackingIntro2": "Až budete mít sledovací javascriptový kód, vložte ho do všech stránek, které mají být Matomoem sledovány.",
+ "JSTrackingIntro3a": "Na většině webových stránek, blogů, CMS atd. můžete použít předinstalovaný plugin k provedení technické práce za vás. (Viz náš %1$sseznam pluginů používaných k integraci Matomo%2$s.)",
+ "JSTrackingIntro3b": "Pokud neexistuje žádný plugin, můžete upravit šablonu webové stránky a přidat kód sledování JavaScript do &lt;/head&gt; tag který je často definován v 'header.php', 'header.tpl' nebo podobném soboru se šablonou.",
+ "JSTrackingIntro4": "Pokud nechcete ke sledování návštěvníků použít javascript, %1$svygenerujte obrázkový sledovací tag níže%2$s.",
+ "JSTrackingIntro5": "Pokud chcete ne jen sledovat zobrazení stránek, podívejte se na %1$sdokumentaci javascriptového sledování%2$s, kde naleznete seznam dostupných funkcí. S použitím těchto funkcí můžete sledovat cíle, vlastní proměnné, objednávky v e-obchodech, opuštěné košíky a mnoho dalšího.",
"JSTracking_CampaignKwdParam": "Klíčové slovo kampaně",
"JSTracking_CampaignNameParam": "Název kampaně",
"JSTracking_CodeNoteBeforeClosingHead": "Ujistěte se, že je následující kód na každé stránce vašeho webu. Doporučujeme ho vložit před uzavírací tag %1$s.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Ujistěte se, že je tento kód vložen do prvku skriptu na každé stránce vašeho webu. Doporučujeme vložit těsně před uzavírací tag záhlaví.",
- "JSTracking_CustomCampaignQueryParam": "Pro jméno kampaně a klíčové slovo použít vlastní parametry dotazu",
"JSTracking_CrossDomain": "Ve výchozím stavu je id návštěvníka, které se používá k identifikaci unikátních návštěvníků, je uloženo jako cookie první strany, ke kterým mohou získat přístup pouze stránky ze stejné domény. Povolením odkazování napříč doménami, což vám umožní sledovat akce a zobrazení stránek během návštěvy návštěvníka i na jiných doménách. Pokaždé, když návštěvník navštíví nějaký z vašich URL aliasů, bude do URL přidán parametr pk_vid, který bude obsahovat id návtěvíka.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Poznámka: Chcete-li používat propojení mezi různými doménami, musíte pro svůj web zadat více než jeden název domény (adresy URL).",
+ "JSTracking_CustomCampaignQueryParam": "Pro jméno kampaně a klíčové slovo použít vlastní parametry dotazu",
"JSTracking_CustomCampaignQueryParamDesc": "Poznámka: %1$sMatomo automaticky detekuje parametry pro Google analitics.%2$s",
"JSTracking_DisableCookies": "Zakázat všechny sledovací cookies",
"JSTracking_DisableCookiesDesc": "Zakáže všechny vlastní cookies. Existující cookies Matomou pro tyto stránky budou smazány při další návštěvě.",
"JSTracking_EnableCrossDomainLinking": "Povolí odkazování napříč doménami",
"JSTracking_EnableDoNotTrack": "Povolit detekci klientů s povolenou volbou \"nesledovat\"",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Poznámka: Serverová detekce volby \"nesledovat\" byla povolena, takže tato volba nebude mít vliv.",
"JSTracking_EnableDoNotTrackDesc": "Sledovací požadavky nebudou zaslány, pokud si to návštěvníci nepřejí.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Poznámka: Serverová detekce volby \"nesledovat\" byla povolena, takže tato volba nebude mít vliv.",
+ "JSTracking_EndNote": "Poznámka: Přizpůsobený sledovací kód můžete vytvořit v administrační sekci %1$sSledovací kód%2$s.",
"JSTracking_GroupPageTitlesByDomain": "Před titulek stránky při sledování připojit doménu stránek",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Takže, když někdo navštíví stránku 'o nás' na blog.%1$s, bude zaznamenán jako 'O nás \/ blog'. To to je nejjednodušší způsob, jak získat přehled provozu podle subdomén.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Takže, když někdo navštíví stránku 'o nás' na blog.%1$s, bude zaznamenán jako 'O nás / blog'. To to je nejjednodušší způsob, jak získat přehled provozu podle subdomén.",
"JSTracking_MergeAliases": "Ve \"hlášení externích odkazů\" skrýt kliknutí na známé aliasy",
"JSTracking_MergeAliasesDesc": "Takže kliky na URL aliasů (např. %s) nebudou počítány jako externí odkazy.",
"JSTracking_MergeSubdomains": "Sledovat všechny návštěvníky na všech subdoménách",
@@ -52,93 +65,80 @@
"JSTracking_TrackNoScript": "Sledovat uživatele se zakázaným javascriptem",
"JSTracking_VisitorCustomVars": "Sledovat vlastní proměnné pro tohoto návštěvníka",
"JSTracking_VisitorCustomVarsDesc": "Například se jménem \"Typ\" a hodnotou \"zákazník\".",
- "JSTracking_EndNote": "Poznámka: Přizpůsobený sledovací kód můžete vytvořit v administrační sekci %1$sSledovací kód%2$s.",
- "JSTrackingIntro1": "Můžete sledovat návštěvníky svého webu mnoha různými způsoby. Doporučený způsob je pomocí JavaScriptu. Chcete-li použít tuto metodu, musíte se ujistit, že každá webová stránka vašeho webu obsahuje nějaký kód JavaScript, který můžete vygenerovat zde.",
- "JSTrackingIntro2": "Až budete mít sledovací javascriptový kód, vložte ho do všech stránek, které mají být Matomoem sledovány.",
- "JSTrackingIntro3a": "Na většině webových stránek, blogů, CMS atd. můžete použít předinstalovaný plugin k provedení technické práce za vás. (Viz náš %1$sseznam pluginů používaných k integraci Matomo%2$s.)",
- "JSTrackingIntro3b": "Pokud neexistuje žádný plugin, můžete upravit šablonu webové stránky a přidat kód sledování JavaScript do &lt;\/head&gt; tag který je často definován v 'header.php', 'header.tpl' nebo podobném soboru se šablonou.",
- "JSTrackingIntro4": "Pokud nechcete ke sledování návštěvníků použít javascript, %1$svygenerujte obrázkový sledovací tag níže%2$s.",
- "JSTrackingIntro5": "Pokud chcete ne jen sledovat zobrazení stránek, podívejte se na %1$sdokumentaci javascriptového sledování%2$s, kde naleznete seznam dostupných funkcí. S použitím těchto funkcí můžete sledovat cíle, vlastní proměnné, objednávky v e-obchodech, opuštěné košíky a mnoho dalšího.",
+ "JavaScriptTracking": "Sledování javascriptem",
+ "JsTrackingCodeMissingEmail1": "Před několika dny jste web '%s' přidali do své analýzy Matomo Analytics. Právě jsme zkontrolovali a zdá se, že váš Matomo nemá žádný zaznamenaný provoz pro tento web.",
+ "JsTrackingCodeMissingEmail2": "Chcete-li začít sledovat údaje a získávat informace o svých uživatelích, musíte na svém webu nebo mobilní aplikaci nastavit sledování. U webů jednoduše vložte měřicí kód těsně před značku %s.",
+ "JsTrackingCodeMissingEmail3": "Chcete-li najít a přizpůsobit svůj měřicí kód, %1$sklikněte sem%2$s (nebo se podívejte do %3$spříručky Klienta pro sledování JavaScriptu%4$s).",
+ "LearnMore": "Další informace",
"LogoNotWriteableInstruction": "Pokud chcete místo výcchozího loga použít vlastní, je nutné, abyste měli práva k zápisu adresáře %1$s. Matomo potřebuje práva k zápisu log umístěných v souborech %2$s.",
- "FileUploadDisabled": "Nahrávání souborů je zakázáno v konfiguraci PHP. Pokud chcete nahrát svoje vlastní logo, nastavte %s v souboru php.ini a restartujte webový server.",
- "LogoUploadFailed": "Nahraný soubor nemohl být zpracován. Ověřte prosím, že má nahraný soubor správný formát.",
"LogoUpload": "Vyberte logo, které chcete nahrát",
- "FaviconUpload": "Vyberte favicon, kterou chcete nahrát",
+ "LogoUploadFailed": "Nahraný soubor nemohl být zpracován. Ověřte prosím, že má nahraný soubor správný formát.",
"LogoUploadHelp": "Prosím, nahrajte soubor v jednom z následujících formátů: %1$s, s minimální výškou %2$s pixelů.",
+ "LtsReleases": "LTS (verze s dlouhodobou podporou) dostávají pouze bezpečnostní a jiné opravy chyb.",
+ "MenuDevelopment": "Vývoj",
"MenuDiagnostic": "Diagnostika",
"MenuGeneralSettings": "Hlavní nastavení",
- "MenuSystem": "Systém",
- "MenuDevelopment": "Vývoj",
"MenuMeasurables": "Měřitelné",
+ "MenuSystem": "Systém",
+ "MissingTrackingCodeEmailSubject": "V Matomo Analytics nebyl zaznamenán žádný provoz pro %s, začněte hned teď",
+ "NTrackingFailures": "%s selhání sledování",
+ "NoKnownFailures": "Nejsou známy žádné poruchy sledování.",
"OptOutComplete": "Vyloučení hotovo. Vaše návštěvy nebudou sledovány nástrojem webové analýzy.",
"OptOutCompleteBis": "Poznámka: pokud smažete cookie, odstraníte vylučovací cookie nebo zmměníte počítač nebo prohlížeč, budete muset provést proceduru vyloučení znovu.",
"OptOutDntFound": "Nejste sledováni, protože váš prohlížeč hlásí, že si to nepřejete. Jedná se o nastavení prohlížeče, takže se nebudete moci přihlásit, dokud nezakážete funkci 'nesledovat'.",
+ "OptOutErrorNoCookies": "Funkce odhlášení sledování vyžaduje aby byly povoleny soubory cookie.",
+ "OptOutErrorNotHttps": "Funkce odhlášení sledování nemusí fungovat, protože tento web nebyl načten přes HTTPS. Znovu načtěte stránku a zkontrolujte, zda se váš stav odhlášení změnil.",
+ "OptOutErrorWindowOpen": "Funkce sledování odhlášení nemusí fungovat, protože vypadá, jako by bylo blokování vyskakovacího okna blokováno. Znovu načtěte stránku a zkontrolujte, zda se váš stav odhlášení změnil.",
"OptOutExplanation": "Matomo se zaměřuje na poskytování soukromí na internetu. Pokud chcete dát svým návštěvníkům možnost odhlásit se z webových analýz Matomoem, můžete na nějakou stránku (třeba stránku o soukromí) umístit následující HTML kód.",
"OptOutExplanationIntro": "Tento kód zobrazí prvek Iframe obsahující odkaz pro vaše návštěvníky, kteří se odhlásí od Matomo, nastavením cookie pro odhlášení v jejich prohlížečích. Níže (nebo %1$s klikněte zde%2$s) si můžete prohlédnout obsah, který bude zobrazen v iFrame.",
"OptOutForYourVisitors": "Matomo vyloučení pro Vaše návštěvníky",
- "PiwikIsInstalledAt": "Matomo je nainstalován na",
+ "OptingYouOut": "Vylučování, prosím čekejte…",
"PersonalPluginSettings": "Osobní nastavení zásuvných modulů",
+ "PiwikIsInstalledAt": "Matomo je nainstalován na",
"PluginSettingChangeNotAllowed": "Nemůžete změnit hodnotu volby %1$s zásuvného modulu \"%2$s\"",
"PluginSettingReadNotAllowed": "Nemůžete číst hodnotu volby %1$s zásuvného modulu \"%2$s\"",
"PluginSettings": "Nastavení zásuvného modulu",
"PluginSettingsIntro": "Zde můžete změnit nastavení pro následující zásuvné moduly třetích stran:",
- "PluginSettingsValueNotAllowed": "Hodnota pro pole \"%1$s\" zásuvného modulu \"%2$s\" není povolena",
"PluginSettingsSaveFailed": "Nepodařilo se uložit nastavení zásuvného modulu",
"PluginSettingsSaveSuccess": "Nastavení zásuvného modulu aktualizována.",
- "TrackingFailures": "Selhání sledování",
- "SettingsSaveSuccess": "Nastavení aktualizována.",
+ "PluginSettingsValueNotAllowed": "Hodnota pro pole \"%1$s\" zásuvného modulu \"%2$s\" není povolena",
+ "Problem": "Problém",
+ "ProtocolNotDetectedCorrectly": "Nyní si prohlížíte Matomo na serveru detekoval pouze nezabezpečené připojení.",
+ "ProtocolNotDetectedCorrectlySolution": "Abyste zajistili, že bude Matomo získávat a poskytovat obsah přes bezpečné HTTPS spojení, můžete upravit váš soubor %1$s a buď nastavit proxy, nebo přidat řádek %2$s pod sekci %3$s. %4$sDozvědět se více%5$s",
+ "ReleaseChannel": "Kanál vydání",
"SendPluginUpdateCommunication": "Pokud bude k dispozici aktualizace pluginu, odeslat email.",
"SendPluginUpdateCommunicationHelp": "Super-uživatelům bude odeslán email, pokud bude k dispozici aktualizace zásuvného modulu.",
+ "SettingsSaveSuccess": "Nastavení aktualizována.",
+ "Solution": "Řešení",
"StableReleases": "Matomo je důležitý nástroj pro měření, doporučujeme vždy používat nejnovější vydání. Pokud používáte nejnovější beta verzi a našli jste chyby, prosíme o jejich nahlášení %1$spřímo zde %2$s.",
- "LtsReleases": "LTS (verze s dlouhodobou podporou) dostávají pouze bezpečnostní a jiné opravy chyb.",
"SystemPluginSettings": "Systémová nastavení zásuvných modulů",
"TrackAGoal": "Sledovat cíl",
"TrackingCode": "Sledovací kód",
"TrackingCodeIntro": "Matomo vám nabízí různé způsoby, jak vložit měřicí kód pro váš web, mobilní aplikaci a dokonce i do jakéhokoli zařízení nebo aplikace.",
+ "TrackingFailureAuthenticationProblem": "Požadavek nebyl ověřen, ale bylo vyžadováno ověření.",
+ "TrackingFailureAuthenticationSolution": "Nastavte nebo opravte „token_auth“ ve vaší žádosti o sledování.",
+ "TrackingFailureInvalidSiteProblem": "Stránka neexistuje.",
+ "TrackingFailureInvalidSiteSolution": "Aktualizujte nakonfigurovaný idSite v trackeru.",
+ "TrackingFailures": "Selhání sledování",
+ "TrackingFailuresEmail1": "Je to pouze proto, abychom vás informovali o tom, že v posledních dnech došlo k %s různým druhům selhání sledování.",
+ "TrackingFailuresEmail2": "Chcete-li zobrazit všechny neúspěšné požadavky na sledování %1$s, klikněte sem%2$s.",
+ "TrackingFailuresEmailSubject": "Selhání sledování v Matomo Analytics",
+ "TrackingFailuresIntroduction": "Na této stránce jsou uvedena selhání sledování, ke kterým došlo v posledních %s dnech. Vezměte prosím na vědomí, že jsou zaznamenány pouze nejběžnější druhy poruch sledování a ne všechny.",
+ "TrackingURL": "Sledovací URL",
"TrustedHostConfirm": "Jste si jist(a), že chcete změnit důvěryhodné jméno hostitele Matomou?",
"TrustedHostSettings": "Důvěryhodné jméno hostitele Matomou",
"UiDemo": "UI Demo",
+ "UncheckToOptOut": "Zrušte zaškrtnutí tohoto políčka pro odhlášení.",
"UpdateSettings": "Aktualizovat nastavení",
"UseCustomLogo": "Použít vlastní logo",
"ValidPiwikHostname": "Platné jméno hostitele Matomou",
+ "ViewAllTrackingFailures": "Zobrazit všechna selhání sledování",
"WithOptionalRevenue": "s volitelným příjmem",
- "YouAreOptedOut": "Aktuálně jste vyloučeni.",
"YouAreNotOptedOut": "Nejste vyloučeni.",
+ "YouAreOptedOut": "Aktuálně jste vyloučeni.",
"YouMayOptOut": "Zde můžete zakázat uložení cookie s identifikačním číslem přiděleným svému počítači a tím zamezit provozovateli tohoto webu shromažďovat a analyzovat statistické údaje.",
- "YouMayOptOutBis": "Pokud jste se rozhodli že ne, klikněte na přiložený odkaz pro uložení deaktivačního cookie ve svém prohlížeči.",
- "OptingYouOut": "Vylučování, prosím čekejte...",
- "ProtocolNotDetectedCorrectly": "Nyní si prohlížíte Matomo na serveru detekoval pouze nezabezpečené připojení.",
- "ProtocolNotDetectedCorrectlySolution": "Abyste zajistili, že bude Matomo získávat a poskytovat obsah přes bezpečné HTTPS spojení, můžete upravit váš soubor %1$s a buď nastavit proxy, nebo přidat řádek %2$s pod sekci %3$s. %4$sDozvědět se více%5$s",
"YouMayOptOut2": "Můžete se rozhodnout zabránit tomuto webu v agregaci a analýze akcí, které zde provedete.",
"YouMayOptOut3": "Tím ochráníte své soukromí, ale také zabrání majiteli, aby se poučil z vašich akcí a vytvořil lepší zážitek pro vás a ostatní uživatele.",
- "UncheckToOptOut": "Zrušte zaškrtnutí tohoto políčka pro odhlášení.",
- "CheckToOptIn": "Chcete-li se přihlásit, zaškrtněte toto políčko.",
- "OptOutErrorNoCookies": "Funkce odhlášení sledování vyžaduje aby byly povoleny soubory cookie.",
- "OptOutErrorNotHttps": "Funkce odhlášení sledování nemusí fungovat, protože tento web nebyl načten přes HTTPS. Znovu načtěte stránku a zkontrolujte, zda se váš stav odhlášení změnil.",
- "OptOutErrorWindowOpen": "Funkce sledování odhlášení nemusí fungovat, protože vypadá, jako by bylo blokování vyskakovacího okna blokováno. Znovu načtěte stránku a zkontrolujte, zda se váš stav odhlášení změnil.",
- "MissingTrackingCodeEmailSubject": "V Matomo Analytics nebyl zaznamenán žádný provoz pro %s, začněte hned teď",
- "JsTrackingCodeMissingEmail1": "Před několika dny jste web '%s' přidali do své analýzy Matomo Analytics. Právě jsme zkontrolovali a zdá se, že váš Matomo nemá žádný zaznamenaný provoz pro tento web.",
- "JsTrackingCodeMissingEmail2": "Chcete-li začít sledovat údaje a získávat informace o svých uživatelích, musíte na svém webu nebo mobilní aplikaci nastavit sledování. U webů jednoduše vložte měřicí kód těsně před značku %s.",
- "JsTrackingCodeMissingEmail3": "Chcete-li najít a přizpůsobit svůj měřicí kód, %1$sklikněte sem%2$s (nebo se podívejte do %3$spříručky Klienta pro sledování JavaScriptu%4$s).",
- "TrackingFailuresIntroduction": "Na této stránce jsou uvedena selhání sledování, ke kterým došlo v posledních %s dnech. Vezměte prosím na vědomí, že jsou zaznamenány pouze nejběžnější druhy poruch sledování a ne všechny.",
- "NoKnownFailures": "Nejsou známy žádné poruchy sledování.",
- "Problem": "Problém",
- "Solution": "Řešení",
- "TrackingURL": "Sledovací URL",
- "LearnMore": "Další informace",
- "DeleteAllFailures": "Vymazat všechna selhání",
- "NTrackingFailures": "%s selhání sledování",
- "ViewAllTrackingFailures": "Zobrazit všechna selhání sledování",
- "TrackingFailureInvalidSiteProblem": "Stránka neexistuje.",
- "TrackingFailureInvalidSiteSolution": "Aktualizujte nakonfigurovaný idSite v trackeru.",
- "TrackingFailureAuthenticationProblem": "Požadavek nebyl ověřen, ale bylo vyžadováno ověření.",
- "TrackingFailureAuthenticationSolution": "Nastavte nebo opravte „token_auth“ ve vaší žádosti o sledování.",
- "ConfirmDeleteAllTrackingFailures": "Jste si jisti, že chcete vymazat všechna selhání sledování?",
- "ConfirmDeleteThisTrackingFailure": "Jste si jisti, že chcete vymazat toto selhání sledování?",
- "TrackingFailuresEmailSubject": "Selhání sledování v Matomo Analytics",
- "TrackingFailuresEmail1": "Je to pouze proto, abychom vás informovali o tom, že v posledních dnech došlo k %s různým druhům selhání sledování.",
- "TrackingFailuresEmail2": "Chcete-li zobrazit všechny neúspěšné požadavky na sledování %1$s, klikněte sem%2$s.",
- "ImportFromGoogleAnalytics": "import z Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Pokud používáte službu Google Analytics a přecházíte na Matomo, můžete stávající data importovat pomocí %1$s GoogleAnalyticsImporter pluginu %2$s."
+ "YouMayOptOutBis": "Pokud jste se rozhodli že ne, klikněte na přiložený odkaz pro uložení deaktivačního cookie ve svém prohlížeči."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/da.json b/plugins/CoreAdminHome/lang/da.json
index d557acabcc..1ad877638b 100644
--- a/plugins/CoreAdminHome/lang/da.json
+++ b/plugins/CoreAdminHome/lang/da.json
@@ -4,45 +4,58 @@
"Administration": "Administration",
"ArchivingSettings": "Arkivering indstillinger",
"BrandingSettings": "Brandingindstillinger",
- "ErrorEmailFromAddressNotValid": "SMTP adressen er ikke gyldig",
- "ReleaseChannel": "Frigiv kanal",
+ "CheckToOptIn": "Afkryds feltet for at tillade tracking.",
"ClickHereToOptIn": "Klik her for at vælge.",
"ClickHereToOptOut": "Klik her for at fravælge.",
+ "ConfirmDeleteAllTrackingFailures": "Er du sikker på, at du vil slette alle sporingsfejl?",
+ "ConfirmDeleteThisTrackingFailure": "Er du sikker på, at du vil slette denne sporingsfejl?",
"CorsDomains": "Cross-Origin Resource Sharing (CORS) domæner",
- "CorsDomainsHelp": "Du kan definere domæner eller subdomæner som for eksempel http:\/\/eksempel.dk eller http:\/\/stats.eksempel.dk. Eller for at tillade tværgående domæneforespørgsler for alle domæner kan du tilføje en *",
+ "CorsDomainsHelp": "Du kan definere domæner eller subdomæner som for eksempel http://eksempel.dk eller http://stats.eksempel.dk. Eller for at tillade tværgående domæneforespørgsler for alle domæner kan du tilføje en *",
"CustomLogoFeedbackInfo": "Hvis du tilpasser Matomo logoet, kan du også være interesseret i at skjule %1$s linket i topmenuen. For at gøre dette, kan du deaktivere tilbagemeldingsmodulet på %2$sUdvidelsesmodul administration%3$s siden.",
"CustomLogoHelpText": "Du kan tilpasse Matomo logo, der bliver vist i brugergrænsefladen og e-mail rapporter.",
+ "DeleteAllFailures": "Slet alle fejl",
"DevelopmentProcess": "Mens vores udviklingsproces inkluderer tusindvis af automatiserede tests, spiller Betatestere en nøglerolle i at opnå vores \"Ingen fejl politik\" i Matomo.",
"EmailServerSettings": "E-mailserverindstillinger",
+ "ErrorEmailFromAddressNotValid": "SMTP adressen er ikke gyldig",
+ "FaviconUpload": "Vælg Favicon til overførelse",
+ "FileUploadDisabled": "Overførelse af filer er ikke aktiveret i PHP-konfiguration. For at overføre dit brugerdefinerede logo skal du indstille %s i php.ini og genstarte webserveren.",
"ForBetaTestersOnly": "Kun for beta testere",
+ "HttpTrackingApi": "HTTP-sporings-API",
+ "HttpTrackingApiDescription": "%1$s HTTP tracking API %2$s giver dig mulighed for at tracke alt. Det kan måske være brugbart hvis du bruger et programmeringssprog hvor der endnu ikke findes et SDK. Det kan også være brugbart, når du ønsker at tracke enheder eller applikationer på en bestemt måde.",
"ImageTracking": "Sporing vha. et billede",
"ImageTrackingIntro1": "Når en besøgende har deaktiveret JavaScript, eller når JavaScript kan ikke bruges, kan sporing vha. et billede bruges til at spore besøgende.",
"ImageTrackingIntro2": "Generer nedenstående link. Kopier og sæt det genererede HTML ind på siden. Hvis du bruger det som en reserveløsning til JavaScript sporing, kan du omgive det med %1$s tags.",
"ImageTrackingIntro3": "For at se hele listen af muligheder, som kan bruge sammen med sporing vha. billede, se %1$sTracking API Documentation%2$s.",
"ImageTrackingLink": "Link til sporing af vha. et billede",
+ "ImportFromGoogleAnalytics": "Importer fra Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Hvis du har en Google Analytics bruger og er ved at skifte til Matomo, kan du importere din eksisterende data ved hjælp af %1$sGoogleAnalyticsImporter%2$s plugin'et.",
"ImportingServerLogs": "Import af serverlogfiler",
"ImportingServerLogsDesc": "Et alternativ til sporing af besøgende gennem browseren (enten via JavaScript eller et billed-link) er løbende at importere serverlogfiler. Lær mere om %1$sServerlogfiler analyse%2$s.",
"InvalidPluginsWarning": "Følgende udvidelsesmoduler er ikke kompatible med %1$s og kunne ikke indlæses: %2$s.",
"InvalidPluginsYouCanUninstall": "Du kan opdatere eller afinstallere disse udvidelsesmoduler på %1$sManage Plugins%2$s-siden.",
- "JavaScriptTracking": "Sporing med JavaScript",
- "HttpTrackingApi": "HTTP-sporings-API",
- "HttpTrackingApiDescription": "%1$s HTTP tracking API %2$s giver dig mulighed for at tracke alt. Det kan måske være brugbart hvis du bruger et programmeringssprog hvor der endnu ikke findes et SDK. Det kan også være brugbart, når du ønsker at tracke enheder eller applikationer på en bestemt måde.",
+ "JSTrackingIntro1": "Du kan spore besøgende til hjemmesiden på mange forskellige måder. Den anbefalede måde at gøre det på er vha. JavaScript. For at bruge denne metode, skal du sørge for alle sider på hjemmesiden har noget JavaScript-kode, som du kan generere her.",
+ "JSTrackingIntro2": "Når du har JavaScript sporingskoden til hjemmesiden, kopier og indsæt den på alle de sider, der skal spores med Matomo.",
+ "JSTrackingIntro3a": "De fleste hjemmesider, blogs, CMS, mv. kan bruge et foruddefineret modul til at gøre det tekniske arbejde for dig. (Se vores %1$s liste med moduler, der kan bruges til at integrere matomo%2$s.)",
+ "JSTrackingIntro3b": "Hvis der ikke findes et modul, kan du redigere dit websites skabelon og tilføje Javascript tracking koden til &lt;/head&gt; taggen som ofte er defineret i en 'header.php', 'header.tlp' eller tilsvarende skabelonfil.",
+ "JSTrackingIntro4": "Hvis du ikke ønsker at bruge JavaScript til at spore besøgende,%1$sgenerere et billed sporingslink herunder%2$s.",
+ "JSTrackingIntro5": "Hvis du vil gøre mere end at spore sidevisninger, kan du tjekke %1$sMatomo Javascript sporingsdokumentation%2$s for listen over tilgængelige funktioner. Ved hjælp af disse funktioner kan du spore mål, brugerdefinerede variabler, e-handelsordrer, afbrudte ordrer og meget mere.",
"JSTracking_CampaignKwdParam": "Parameter for kampagnenøgleord",
"JSTracking_CampaignNameParam": "Parameter for kampagnenavn",
"JSTracking_CodeNoteBeforeClosingHead": "Du skal sikre dig at denne kode findes på alle sider af dit website. Vi anbefaler at indsætte den umiddelbart før slut %1$s tag.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Du skal sikre dig at denne kode er indlejret som et script element på alle sider af dit website. Vi anbefaler at indsætte den umiddelbart før slutning af head tag.",
- "JSTracking_CustomCampaignQueryParam": "Brug brugerdefineret forespørgsel parameternavne for kampagnenavnet & søgeord",
"JSTracking_CrossDomain": "Som standard, er det Visitor ID som identificere en unik besøgende gemt i browserens første-parts cookies, som kun kan tilgås af sider på samme domæne. Aktivering af kryds domæne linkning lader dig spore alle handlinger og sidevisninger af en bestemt bruger i det samme besøg, selv når de ser sider på adskillige domæner. Når en bruger klikker på et link til et af dine websites alias URL'er, vil der bliver tilføjet en URL paramter pk_vid, som viderestiller brugerens Visitor ID.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Note: For at brug tværgående domænelinking skal du først angive mere end et domænenavn (URLer) for dit website.",
+ "JSTracking_CustomCampaignQueryParam": "Brug brugerdefineret forespørgsel parameternavne for kampagnenavnet & søgeord",
"JSTracking_CustomCampaignQueryParamDesc": "Note: %1$sMatomo registrerer automatisk Google Analytics parametre.%2$s",
"JSTracking_DisableCookies": "Deaktivere alle sporingscookies",
"JSTracking_DisableCookiesDesc": "Deaktiverer alle førstepartscookies. Eksisterende Matomo cookies for denne hjemmeside vil blive slettet ved den næste side visning.",
"JSTracking_EnableCrossDomainLinking": "Aktiverer kryds domæne linkning",
"JSTracking_EnableDoNotTrack": "Aktiver klientside DoNotTrack detektering",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Bemærk: Server side DoNotTrack understøttelse er blevet aktiveret, så denne indstilling har ingen virkning.",
"JSTracking_EnableDoNotTrackDesc": "Så sporing anmodninger sendes ikke, hvis de besøgende ikke vil spores.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Bemærk: Server side DoNotTrack understøttelse er blevet aktiveret, så denne indstilling har ingen virkning.",
+ "JSTracking_EndNote": "Bemærk: Du kan generere en tilpasset sporingskode i %1$sSporingskode%2$s administrationssektionen.",
"JSTracking_GroupPageTitlesByDomain": "Tilføjer hjemmeside domænet til sidetitel, når sporing",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Så hvis nogen besøger 'Om' siden på blog.%1$s vil det blive registreret som 'blog \/ Om'. Dette er den nemmeste måde at få et overblik over trafikken på subdomæner.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Så hvis nogen besøger 'Om' siden på blog.%1$s vil det blive registreret som 'blog / Om'. Dette er den nemmeste måde at få et overblik over trafikken på subdomæner.",
"JSTracking_MergeAliases": "I rapporten \"udgående links\", skjul klik til kendte alias URL på",
"JSTracking_MergeAliasesDesc": "Så klik på links til alias ​​URL'er (f.eks %s) vil ikke blive talt som \"Udgående link\".",
"JSTracking_MergeSubdomains": "Spor besøgende på tværs af alle underdomæner for",
@@ -52,91 +65,78 @@
"JSTracking_TrackNoScript": "Spor brugere med JavaScript déaktiveret",
"JSTracking_VisitorCustomVars": "Spor brugerdefinerede variabler for denne besøgende",
"JSTracking_VisitorCustomVarsDesc": "For eksempel med variabelnavn \"Type\" og værdi \"Kunde\".",
- "JSTracking_EndNote": "Bemærk: Du kan generere en tilpasset sporingskode i %1$sSporingskode%2$s administrationssektionen.",
- "JSTrackingIntro1": "Du kan spore besøgende til hjemmesiden på mange forskellige måder. Den anbefalede måde at gøre det på er vha. JavaScript. For at bruge denne metode, skal du sørge for alle sider på hjemmesiden har noget JavaScript-kode, som du kan generere her.",
- "JSTrackingIntro2": "Når du har JavaScript sporingskoden til hjemmesiden, kopier og indsæt den på alle de sider, der skal spores med Matomo.",
- "JSTrackingIntro3a": "De fleste hjemmesider, blogs, CMS, mv. kan bruge et foruddefineret modul til at gøre det tekniske arbejde for dig. (Se vores %1$s liste med moduler, der kan bruges til at integrere matomo%2$s.)",
- "JSTrackingIntro3b": "Hvis der ikke findes et modul, kan du redigere dit websites skabelon og tilføje Javascript tracking koden til &lt;\/head&gt; taggen som ofte er defineret i en 'header.php', 'header.tlp' eller tilsvarende skabelonfil.",
- "JSTrackingIntro4": "Hvis du ikke ønsker at bruge JavaScript til at spore besøgende,%1$sgenerere et billed sporingslink herunder%2$s.",
- "JSTrackingIntro5": "Hvis du vil gøre mere end at spore sidevisninger, kan du tjekke %1$sMatomo Javascript sporingsdokumentation%2$s for listen over tilgængelige funktioner. Ved hjælp af disse funktioner kan du spore mål, brugerdefinerede variabler, e-handelsordrer, afbrudte ordrer og meget mere.",
+ "JavaScriptTracking": "Sporing med JavaScript",
+ "JsTrackingCodeMissingEmail1": "For få dage siden tilføjede du websitet '%s' til din Matomo Analytics. Vi tjekkede lige og det ser ikke ud til at din Matomo registrerer nogen trafik fra dette website.",
+ "JsTrackingCodeMissingEmail2": "For at påbegynde tracking og få indsigt i dine brugere, er det nødvendigt at tilslutte tracking til dit website eller mobil-app. For websites skal du blot tilføje trackingkoden lige før %s-taggen.",
+ "JsTrackingCodeMissingEmail3": "For at finde og tilpasse din trackingkode, skal du %1$s klikke her %2$s (eller kigge nærmere på %3$s JavaScript Tracking Client guide %4$s).",
+ "LearnMore": "Læs mere",
"LogoNotWriteableInstruction": "Hvis du vil bruge din brugerdefinerede logo i stedet for standard Matomo logoet, giver skriverettigheder til denne mappe: %1$s Matomo brug skriveadgang til dine logoer gemt i filer %2$s.",
- "FileUploadDisabled": "Overførelse af filer er ikke aktiveret i PHP-konfiguration. For at overføre dit brugerdefinerede logo skal du indstille %s i php.ini og genstarte webserveren.",
- "LogoUploadFailed": "Den uploadede fil kunne ikke behandles. Kontroller at filen har et gyldigt format.",
"LogoUpload": "Vælg et logo til overførelse",
- "FaviconUpload": "Vælg Favicon til overførelse",
+ "LogoUploadFailed": "Den uploadede fil kunne ikke behandles. Kontroller at filen har et gyldigt format.",
"LogoUploadHelp": "Overfør en fil i %1$s formater med en højde på mindst %2$s pixels.",
+ "LtsReleases": "LTS (Long Term Support) versioner modtager kun sikkerheds- og fejlrettelser.",
+ "MenuDevelopment": "Udvikling",
"MenuDiagnostic": "Diagnosticering",
"MenuGeneralSettings": "Generelle indstillinger",
- "MenuSystem": "System",
- "MenuDevelopment": "Udvikling",
"MenuMeasurables": "Målbare",
+ "MenuSystem": "System",
+ "MissingTrackingCodeEmailSubject": "Ingen trafik for %s er registreret i Matomo Analytics. Kom i gang nu",
+ "NTrackingFailures": "%s sporingsfejl",
+ "NoKnownFailures": "Der er ikke kendte sporingsfejl.",
"OptOutComplete": "Opt-out udført; dine besøg på hjemmesiden bliver ikke registreret af analyseværktøjet.",
"OptOutCompleteBis": "Bemærk, at hvis du sletter dine cookies, sletter opt-out-cookien, eller hvis du skifter computer eller browser, skal du udføre opt-out-proceduren igen.",
"OptOutDntFound": "Sporing er ikke aktiv, fordi din browser har meddelt, at du ikke vil spores. Det er en browser indstilling. For at begynde at sporing igen, skal du deaktivere den såkaldte \"Do Not Track\"-indstilling i dine browserindstillinger.",
+ "OptOutErrorNoCookies": "Tracking tilvalgs-feature kræver, at cookies er aktiveret",
"OptOutExplanation": "Matomo er dedikeret til at værne om personlige oplysninger på internettet. For at give dine besøgende valgmulighed for at framelde Matomo Web Analyse, kan du tilføje den følgende HTML-kode på en af dine hjemmesider, f. eks. på en fortrolighedspolitik side.",
"OptOutExplanationIntro": "Koden vil vise en Iframe, der indeholder et link til dine besøgende til at framelde Matomo ved at sætte en opt out-cookie i browseren. Se herunder (eller %1$sKlik her%2$s) for at få vist indholdet af iFramen.",
"OptOutForYourVisitors": "Matomo opt-out for dine besøgende",
- "PiwikIsInstalledAt": "Matomo er installeret på",
+ "OptingYouOut": "Vælger dig fra, vent venligst…",
"PersonalPluginSettings": "Personlige indstillinger for udvidelsesmoduler",
+ "PiwikIsInstalledAt": "Matomo er installeret på",
"PluginSettingChangeNotAllowed": "Du må ikke ændre værdien \"%1$s\" i udvidelse \"%2$s\"",
"PluginSettingReadNotAllowed": "Du har ikke tilladelse til at læse værdien af ​​indstillingen \"%1$s\" i udvidelsen \"%2$s\"",
"PluginSettings": "Programudvidelses indstilinger",
"PluginSettingsIntro": "Her kan du ændre indstillingerne for følgende 3. parts udvidelsesmoduler:",
- "PluginSettingsValueNotAllowed": "Værdien for feltet \"%1$s\" i udvidelsen \"%2$s\" er ikke tilladt",
"PluginSettingsSaveFailed": "Kunne ikke gemme udvidelsesmodul indstillinger",
"PluginSettingsSaveSuccess": "Udvidelse indstillinger opdateret.",
- "TrackingFailures": "Sporingsfejl",
- "SettingsSaveSuccess": "Indstillinger opdateret.",
+ "PluginSettingsValueNotAllowed": "Værdien for feltet \"%1$s\" i udvidelsen \"%2$s\" er ikke tilladt",
+ "Problem": "Problem",
+ "ProtocolNotDetectedCorrectly": "Du benhytter i øjeblikket Matomo over en sikker SSL-forbindelse (via HTTPS), men Matomo kunne kun detektere en ikke-sikker forbindelse på serveren.",
+ "ProtocolNotDetectedCorrectlySolution": "For at sikre at Matomo behandler anmodninger og dit indhold over HTTPS, skal du måske redigere din %1$s fil og enten konfigurere dine proxy indstillinger, eller du kan tilføje linjen %2$s under sektionen %3$s. %4$sLæs mere%5$s",
+ "ReleaseChannel": "Frigiv kanal",
"SendPluginUpdateCommunication": "Send en e-mail når der er en opdatering til et plugin",
"SendPluginUpdateCommunicationHelp": "En e-mail vil blive sendt til Superbrugere, når der er en ny version tilgængelig for denne programudvidelse.",
+ "SettingsSaveSuccess": "Indstillinger opdateret.",
+ "Solution": "Løsning",
"StableReleases": "Hvis Matomo er en kritisk del af virksomheden, anbefaler vi at man bruger den nyeste stabile udgave. Hvis man bruger den nyeste beta, og finder en fejl eller har et forslag, %1$sse her%2$s.",
- "LtsReleases": "LTS (Long Term Support) versioner modtager kun sikkerheds- og fejlrettelser.",
"SystemPluginSettings": "Indstillinger for system udvidelsesmoduler",
"TrackAGoal": "Spor et mål",
"TrackingCode": "Sporingskode",
"TrackingCodeIntro": "Matomo tilbyder forskellige metoder til indlejring af sporingskoden på din hjemmesiden, i din mobilapp eller anden enhed eller applikation.",
+ "TrackingFailureAuthenticationProblem": "Forespørgsel var ikke autentificeret, men autentifikation var krævet.",
+ "TrackingFailureAuthenticationSolution": "Sæt eller ret et \"token_auth\" i din tracking-forespørgsel.",
+ "TrackingFailureInvalidSiteProblem": "Sitet eksisterer ikke.",
+ "TrackingFailureInvalidSiteSolution": "Opdatér det konfigurerede idSite i trackeren.",
+ "TrackingFailures": "Sporingsfejl",
+ "TrackingFailuresEmail1": "Dette er blot for at fortælle dig, at der i de seneste dage har optrådt %s forskellige sporingsfejl.",
+ "TrackingFailuresEmail2": "For at se alle fejlede tracking-forespørgsler, %1$s klik her %2$s.",
+ "TrackingFailuresEmailSubject": "Trackingfejl i din Matomo Analytics",
+ "TrackingFailuresIntroduction": "Denne side vider trackingfejl som opstod de sidste %s dage. Vær venligst opmærksom på, at kun de mest almindelige former for trackingfejl er registreret og ikke dem alle.",
+ "TrackingURL": "Tracking URL",
"TrustedHostConfirm": "Er du sikker på, at du vil ændre det betroede Matomo værtsnavn?",
"TrustedHostSettings": "Betroet Matomo værtsnavn",
"UiDemo": "UI-demo",
+ "UncheckToOptOut": "Fjern markeringen for at fravælge tracking.",
"UpdateSettings": "Opdater indstillinger",
"UseCustomLogo": "Anvend brugerdefineret logo",
"ValidPiwikHostname": "Gyldigt Matomo værtsnavn",
+ "ViewAllTrackingFailures": "Vis alle sporingsfejl",
"WithOptionalRevenue": "med valgfri indtægter",
- "YouAreOptedOut": "Du har fravalgt tracking.",
"YouAreNotOptedOut": "Du tillader tracking.",
+ "YouAreOptedOut": "Du har fravalgt tracking.",
"YouMayOptOut": "Når du besøger websitet bliver du tildelt et unikt identifikationsnummer, som er placeret i en cookie på din computer, og som bruges til at analysere, hvor mange, der besøger websitet, hvilke sider, der bliver set og lignende.",
- "YouMayOptOutBis": "Du har mulighed for at fravælge, at denne cookie placeres på din enhed.",
- "OptingYouOut": "Vælger dig fra, vent venligst...",
- "ProtocolNotDetectedCorrectly": "Du benhytter i øjeblikket Matomo over en sikker SSL-forbindelse (via HTTPS), men Matomo kunne kun detektere en ikke-sikker forbindelse på serveren.",
- "ProtocolNotDetectedCorrectlySolution": "For at sikre at Matomo behandler anmodninger og dit indhold over HTTPS, skal du måske redigere din %1$s fil og enten konfigurere dine proxy indstillinger, eller du kan tilføje linjen %2$s under sektionen %3$s. %4$sLæs mere%5$s",
"YouMayOptOut2": "Du har mulighed for at vælge at dette website ikke indsamler eller analyserer de handlinger du foretager her.",
"YouMayOptOut3": "Hvis du gør det, beskytter du dit privatliv, men du forhindrer også ejeren af websitet fra at lære af dine handlinger, og dermed blive i stand til at forbedre brugeroplevelsen for dig og andre brugere.",
- "UncheckToOptOut": "Fjern markeringen for at fravælge tracking.",
- "CheckToOptIn": "Afkryds feltet for at tillade tracking.",
- "OptOutErrorNoCookies": "Tracking tilvalgs-feature kræver, at cookies er aktiveret",
- "MissingTrackingCodeEmailSubject": "Ingen trafik for %s er registreret i Matomo Analytics. Kom i gang nu",
- "JsTrackingCodeMissingEmail1": "For få dage siden tilføjede du websitet '%s' til din Matomo Analytics. Vi tjekkede lige og det ser ikke ud til at din Matomo registrerer nogen trafik fra dette website.",
- "JsTrackingCodeMissingEmail2": "For at påbegynde tracking og få indsigt i dine brugere, er det nødvendigt at tilslutte tracking til dit website eller mobil-app. For websites skal du blot tilføje trackingkoden lige før %s-taggen.",
- "JsTrackingCodeMissingEmail3": "For at finde og tilpasse din trackingkode, skal du %1$s klikke her %2$s (eller kigge nærmere på %3$s JavaScript Tracking Client guide %4$s).",
- "TrackingFailuresIntroduction": "Denne side vider trackingfejl som opstod de sidste %s dage. Vær venligst opmærksom på, at kun de mest almindelige former for trackingfejl er registreret og ikke dem alle.",
- "NoKnownFailures": "Der er ikke kendte sporingsfejl.",
- "Problem": "Problem",
- "Solution": "Løsning",
- "TrackingURL": "Tracking URL",
- "LearnMore": "Læs mere",
- "DeleteAllFailures": "Slet alle fejl",
- "NTrackingFailures": "%s sporingsfejl",
- "ViewAllTrackingFailures": "Vis alle sporingsfejl",
- "TrackingFailureInvalidSiteProblem": "Sitet eksisterer ikke.",
- "TrackingFailureInvalidSiteSolution": "Opdatér det konfigurerede idSite i trackeren.",
- "TrackingFailureAuthenticationProblem": "Forespørgsel var ikke autentificeret, men autentifikation var krævet.",
- "TrackingFailureAuthenticationSolution": "Sæt eller ret et \"token_auth\" i din tracking-forespørgsel.",
- "ConfirmDeleteAllTrackingFailures": "Er du sikker på, at du vil slette alle sporingsfejl?",
- "ConfirmDeleteThisTrackingFailure": "Er du sikker på, at du vil slette denne sporingsfejl?",
- "TrackingFailuresEmailSubject": "Trackingfejl i din Matomo Analytics",
- "TrackingFailuresEmail1": "Dette er blot for at fortælle dig, at der i de seneste dage har optrådt %s forskellige sporingsfejl.",
- "TrackingFailuresEmail2": "For at se alle fejlede tracking-forespørgsler, %1$s klik her %2$s.",
- "ImportFromGoogleAnalytics": "Importer fra Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Hvis du har en Google Analytics bruger og er ved at skifte til Matomo, kan du importere din eksisterende data ved hjælp af %1$sGoogleAnalyticsImporter%2$s plugin'et."
+ "YouMayOptOutBis": "Du har mulighed for at fravælge, at denne cookie placeres på din enhed."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/el.json b/plugins/CoreAdminHome/lang/el.json
index 51ff4cd188..1218390b8c 100644
--- a/plugins/CoreAdminHome/lang/el.json
+++ b/plugins/CoreAdminHome/lang/el.json
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Αποστολή e-mail όταν υπάρχει διαθέσιμη ενημέρωση για ένα πρόσθετο",
"SendPluginUpdateCommunicationHelp": "Ένα e-mail θα στέλνεται στους Υπερ-Χρήστες όταν θα υπάρχει διαθέσιμη νέα έκδοση για ένα πρόσθετο.",
"SettingsSaveSuccess": "Οι ρυθμίσεις ενημερώθηκαν.",
+ "SinglePageApplicationDescription": "Αν ιχνηλατείτε μια εφαρμογή μοναδικής σελίδας (ΕΜΣ) ή προοδευτική εφαρμογή ιστού (ΠΕΙ), δείτε αυτό τον %1$sοδηγό%2$s.",
"Solution": "Λύση",
"StableReleases": "Αν το Matomo αποτελεί ένα κρίσιμο κομμάτι της επιχείρησής σας, συνιστούμε να χρησιμοποιείτε την τελευταία σταθερή έκδοση. Αν χρησιμοποιείτε την τελευταία δοκιμαστική έκδοση και βρείτε ένα σφάλμα ή έχετε να κάνετε μια πρόταση, παρακαλώ %1$sδείτε εδώ%2$s.",
"SystemPluginSettings": "Ρυθμίσεις Συστήματος Πρόσθετου",
diff --git a/plugins/CoreAdminHome/lang/en.json b/plugins/CoreAdminHome/lang/en.json
index 51f29e3d34..f5c03a78f6 100644
--- a/plugins/CoreAdminHome/lang/en.json
+++ b/plugins/CoreAdminHome/lang/en.json
@@ -24,6 +24,7 @@
"ForBetaTestersOnly": "For beta testers only",
"HttpTrackingApi": "HTTP Tracking API",
"HttpTrackingApiDescription": "The %1$sHTTP Tracking API%2$s allows you to track anything. This may be useful if you are using a programming language for which no SDK exists yet. It may also be useful when you want to track devices or application in a special way.",
+ "SinglePageApplicationDescription": "If you are tracking a single-page application (SPA) or progressive web application (PWA), please see %1$sthis guide%2$s.",
"ImageTracking": "Image Tracking",
"ImageTrackingIntro1": "When a visitor has disabled JavaScript, or when JavaScript cannot be used, you can use an image tracking link to track visitors.",
"ImageTrackingIntro2": "Generate the link below and copy-paste the generated HTML in the page. If you're using this as a fallback for JavaScript tracking, you can surround it in %1$s tags.",
diff --git a/plugins/CoreAdminHome/lang/es-ar.json b/plugins/CoreAdminHome/lang/es-ar.json
index 7052f0e741..250d9f5bba 100644
--- a/plugins/CoreAdminHome/lang/es-ar.json
+++ b/plugins/CoreAdminHome/lang/es-ar.json
@@ -4,45 +4,60 @@
"Administration": "Administración",
"ArchivingSettings": "Configuración de archivado",
"BrandingSettings": "Configuración de marcas y logos",
- "ErrorEmailFromAddressNotValid": "La dirección SMTP no es válida",
- "ReleaseChannel": "Canal de lanzamiento",
+ "BruteForce": "Fuerza bruta",
+ "CheckToOptIn": "Seleccioná esta casilla para incluirte.",
"ClickHereToOptIn": "Hacé clic acá para adherirte.",
"ClickHereToOptOut": "Hacé clic acá para quitar adhesión.",
+ "ConfirmDeleteAllTrackingFailures": "¿Estás seguro que querés eliminar todas las fallas de rastreo?",
+ "ConfirmDeleteThisTrackingFailure": "¿Estás seguro que querés eliminar esta falla de rastreo?",
+ "Cors": "Cors",
"CorsDomains": "Dominios de compartición de recursos de origen cruzados (CORS)",
- "CorsDomainsHelp": "Podés definir dominios o subdominios como http:\/\/ejemplo.com o http:\/\/stats.ejemplo.com. O agregar solicitudes de dominios cruzados para todos los dominios, somplemente agregando un asterisco.",
+ "CorsDomainsHelp": "Podés definir dominios o subdominios como http://ejemplo.com o http://stats.ejemplo.com. O agregar solicitudes de dominios cruzados para todos los dominios, somplemente agregando un asterisco.",
"CustomLogoFeedbackInfo": "Si personalizás el logo de Matomo, quizá también te interese ocultar el enlace de %1$s en el menú principal. Para hacerlo, simplemente deshabilitá el plugin Feedback en la página de %2$sAdministrador de plugins%3$s.",
"CustomLogoHelpText": "Podés personalizar el logo de Matomo, el cual será visualizado en la interface de usuario y en los informes de correo electrónico.",
+ "DeleteAllFailures": "Eliminar todas las fallas",
"DevelopmentProcess": "Mientras nuestro proceso de desarrollo incluye miles de pruebas automatizadas, los Beta Testers juegan un rol fundamental en lograr la \"Política sin errores\" de Matomo.",
"EmailServerSettings": "Configuración del servidor de correo electrónico",
+ "ErrorEmailFromAddressNotValid": "La dirección SMTP no es válida",
+ "FaviconUpload": "Seleccioná un favicón para subir",
+ "FileUploadDisabled": "No está habilitada la subida de archivos en tu configuración PHP. Para subir un logo personalizado, por favor, establecé %s en php.ini, y reiniciá tu servidor web.",
"ForBetaTestersOnly": "Solamente para probadores de versiones beta",
+ "HttpTrackingApi": "API de rastreo HTTP",
+ "HttpTrackingApiDescription": "La %1$sAPI de rastreo HTTP%2$s te permite rastrear todo. Esto puede resultar útil si estás programando un lenguaje para el cual todavía no existe un SDK. También podría ser útil cuando querés rastrear ciertos dispositivos o aplicaciones en particular.",
"ImageTracking": "Rastreo mediante imágenes",
"ImageTrackingIntro1": "Cuando un visitante deshabilitó JavaScript ocuando JavaScript que no se puede usar, podés utilizar un enlace de rastreo mediante imagen para rastrear a los visitantes.",
"ImageTrackingIntro2": "Generá el enlace de abajo y copiá y pegá el código HTML generado en la página. Si estás usando esto como un resguardo para el rastreo mediante JavaScript, podés cubrirlo con %1$s etiquetas.",
"ImageTrackingIntro3": "Para la lista completa de opciones que puede utilizar con un vínculo de seguimiento de imagen, consulte el %1$sTracking API Documentación%2$s.",
"ImageTrackingLink": "Enlace de rastreo mediante imagen",
+ "ImportFromGoogleAnalytics": "Importar desde Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Si tenés datos existentes en Google Analytics y te estás cambiando a Matomo, podés exportar esos datos usando el plugin %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Importar registros del servidor",
"ImportingServerLogsDesc": "Una alternativa para el rastreo de los visitantes a través del navegador (ya sea a través de JavaScript o de un enlace de imagen) es importar continuamente los registros del servidor. Aprendé más sobre los %1$sanálisis del archivo de registro del servidor%2$s.",
"InvalidPluginsWarning": "Los siguientes plugins no son compatibles con %1$s y pueden que no se carguen: %2$s.",
"InvalidPluginsYouCanUninstall": "Podés actualizar o desinstalar estos plugins en la página %1$sAdministrar plugins%2$s.",
- "JavaScriptTracking": "Seguimiento vía JavaScript",
- "HttpTrackingApi": "API de rastreo HTTP",
- "HttpTrackingApiDescription": "La %1$sAPI de rastreo HTTP%2$s te permite rastrear todo. Esto puede resultar útil si estás programando un lenguaje para el cual todavía no existe un SDK. También podría ser útil cuando querés rastrear ciertos dispositivos o aplicaciones en particular.",
+ "JSTrackingIntro1": "Podés rastrear a los visitantes de tu sitio web de diferentes maneras. Lo más recomendado es hacerlo a través de JavaScript. Para usar este método, tenés que asegurarte de que cada página de tu sitio web tiene código JavaScript, el cual podés generar acá.",
+ "JSTrackingIntro2": "Una vez que tengás el código de rastreo de JavaScript para tu sitio web, copialo y pegalo en todas las páginas en las que querés rastrear con Matomo.",
+ "JSTrackingIntro3a": "En la mayoría de los sitios web, blogs, foros, etc, podés usar un plugin prediseñado para hacer el trabajo técnico por vos. (Mirá nuestra %1$slista de plugins usados para integrar Matomo%2$s.)",
+ "JSTrackingIntro3b": "Si no existe ningún plugin, podés editar las plantillas de tu sitio web y agregar el código de seguimiento de JavaScript a la etiqueta &lt;/head&gt;, la cual está definida habitualmente en un archivo de plantilla \"headed.php\", \"header.tpl\", o similar.",
+ "JSTrackingIntro4": "Si no querés usar JavaScript para rastrear visitantes, %1$sgenerá un enlace de imagen de rastreo, abajo%2$s.",
+ "JSTrackingIntro5": "Si querés hacer más cosas que rastrear las visualizaciones de lás páginas, por favor, revisá la %1$sdocumentación de rastreo de JavaScript de Matomo%2$s para ver la lista de funciones disponibles. Con estas funciones podés rastrear metas, variables personalizadas, órdenes de comercio electrónicos, changuitos abandonados y más.",
"JSTracking_CampaignKwdParam": "Parámetro de palabra clave por campaña",
"JSTracking_CampaignNameParam": "Parámetro de nombre de campaña",
"JSTracking_CodeNoteBeforeClosingHead": "Asegurate de que este código esté en cada página de tu sitio web. Te recomendamos pegarlo inmediatamente antes de la etiqueta de cierre de %1$s.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Asegurate de que este código esté en cada página de tu sitio web. Te recomendamos pegarlo inmediatamente antes de la etiqueta de cierre del encabezado.",
- "JSTracking_CustomCampaignQueryParam": "Usá nombres de parámetros de consultas personalizadas, tanto para el nombre como para la palabra clave",
"JSTracking_CrossDomain": "Predeterminadamente, el identificador del visitante que registra a un visitante único se almacena en la cookie propia en el navegador, la cual sólo se puede acceder por páginas del mismo dominio. Habilitar enlaces de dominio cruzado te permite hacer un seguimiento de todas las acciones y vistas de página de un visitante específico en la misma visita, incluso cuando visita páginas de diferentes dominios. Cuando un usuario hace clic en una de las direcciones web alias de tu sitio, obtendrá un parámetro \"pk_vid\" en la dirección, seguido de la identificación del visitante.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Nota: para usar enlace de dominio cruzado, tenés que especificar más de un nombre de dominio (dirección web) para tu sitio web.",
+ "JSTracking_CustomCampaignQueryParam": "Usá nombres de parámetros de consultas personalizadas, tanto para el nombre como para la palabra clave",
"JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sMatomo detectará automáticamente los parámetros de Google Analytics.%2$s",
"JSTracking_DisableCookies": "Deshabilitar todas las cookies de rastreo",
"JSTracking_DisableCookiesDesc": "Deshabilita todas las cookies propias. Las cookies existentes de Matomo para este sitio web serán eliminadas en la vista de la próxima página.",
"JSTracking_EnableCrossDomainLinking": "Habilita los enlaces de dominio cruzado",
"JSTracking_EnableDoNotTrack": "Habilitar detección de DoNotTrack en el lado del cliente",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Nota: el soporte para DoNotTrack en el lado del servidor fue activado, por lo que esta opción no tendrá ningún efecto.",
"JSTracking_EnableDoNotTrackDesc": "Por lo tanto, las solicitudes de rastreo no serán enviadas si el visitante no quiere ser rastreado.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Nota: el soporte para DoNotTrack en el lado del servidor fue activado, por lo que esta opción no tendrá ningún efecto.",
+ "JSTracking_EndNote": "Nota: podés generar un código de rastreo personalizado en la sección de administración del %1$s código de rastreo %2$s.",
"JSTracking_GroupPageTitlesByDomain": "Al rastrear, anteponer el dominio del sitio al título",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Por lo tanto, si alguien visita la página \"Acerca de …\" de un blog %1$s será registrado como \"blog \/ Acerca de…\". Esta es la manera más fácil de ver un pantallazo de tu tráfico por subdominio.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Por lo tanto, si alguien visita la página \"Acerca de …\" de un blog %1$s será registrado como \"blog / Acerca de…\". Esta es la manera más fácil de ver un pantallazo de tu tráfico por subdominio.",
"JSTracking_MergeAliases": "En el informe \"Enlaces externos\", ocultá los clics para conocer los alias de las direcciones web de",
"JSTracking_MergeAliasesDesc": "Así los clics al enlace de las direcciones web alias (por ejemplo: %s) no serán contadas como \"enlace externo\".",
"JSTracking_MergeSubdomains": "Rastrear visitantes en todos los subdominios de",
@@ -52,110 +67,95 @@
"JSTracking_TrackNoScript": "Sigue a los usuarios con JavaScript deshabilitado",
"JSTracking_VisitorCustomVars": "Rastrear variables personalizadas para este visitante",
"JSTracking_VisitorCustomVarsDesc": "Por ejemplo, con el nombre de variable \"Tipo\" y el valor \"Cliente\".",
- "JSTracking_EndNote": "Nota: podés generar un código de rastreo personalizado en la sección de administración del %1$s código de rastreo %2$s.",
- "JSTrackingIntro1": "Podés rastrear a los visitantes de tu sitio web de diferentes maneras. Lo más recomendado es hacerlo a través de JavaScript. Para usar este método, tenés que asegurarte de que cada página de tu sitio web tiene código JavaScript, el cual podés generar acá.",
- "JSTrackingIntro2": "Una vez que tengás el código de rastreo de JavaScript para tu sitio web, copialo y pegalo en todas las páginas en las que querés rastrear con Matomo.",
- "JSTrackingIntro3a": "En la mayoría de los sitios web, blogs, foros, etc, podés usar un plugin prediseñado para hacer el trabajo técnico por vos. (Mirá nuestra %1$slista de plugins usados para integrar Matomo%2$s.)",
- "JSTrackingIntro3b": "Si no existe ningún plugin, podés editar las plantillas de tu sitio web y agregar el código de seguimiento de JavaScript a la etiqueta &lt;\/head&gt;, la cual está definida habitualmente en un archivo de plantilla \"headed.php\", \"header.tpl\", o similar.",
- "JSTrackingIntro4": "Si no querés usar JavaScript para rastrear visitantes, %1$sgenerá un enlace de imagen de rastreo, abajo%2$s.",
- "JSTrackingIntro5": "Si querés hacer más cosas que rastrear las visualizaciones de lás páginas, por favor, revisá la %1$sdocumentación de rastreo de JavaScript de Matomo%2$s para ver la lista de funciones disponibles. Con estas funciones podés rastrear metas, variables personalizadas, órdenes de comercio electrónicos, changuitos abandonados y más.",
+ "JavaScriptTracking": "Seguimiento vía JavaScript",
+ "JsTrackingCodeMissingEmail1": "Hace unos días agregaste el sitio web \"%s\" a tu cuenta de Matomo Analytics. Recién revisamos y Matomo no parece tener registros de tráfico para este sitio web.",
+ "JsTrackingCodeMissingEmail2": "Para comenzar a rastrear datos y entender a tus usuarios, necesitás configurar el rastreo en tu sitio web o aplicación móvil. Para el caso de los sitios web, simplemente insertá el código de rastreo justo antes de la etiqueta %s.",
+ "JsTrackingCodeMissingEmail3": "Para encontrar y personalizar tu código de rastreo, %1$shacé clic acá%2$s (o mirá la %3$sguía de cliente de rastreo de JavaScript%4$s).",
+ "LearnMore": "Aprendé más",
"LogoNotWriteableInstruction": "Para usar tu logo personalizado en lugar del logo predeterminado de Matomo, dale permiso de escritura a este directorio: %1$sMatomo necesita el acceso de escritura a tus logos guardados en los archivos %2$s.",
- "FileUploadDisabled": "No está habilitada la subida de archivos en tu configuración PHP. Para subir un logo personalizado, por favor, establecé %s en php.ini, y reiniciá tu servidor web.",
- "LogoUploadFailed": "No se pudo procesar el archivo subido. Por favor, revisá si el archivo tiene un formato válido.",
"LogoUpload": "Seleccioná un logo para subir",
- "FaviconUpload": "Seleccioná un favicón para subir",
+ "LogoUploadFailed": "No se pudo procesar el archivo subido. Por favor, revisá si el archivo tiene un formato válido.",
"LogoUploadHelp": "Please upload a file in %1$s formats with a minimum height of %2$s pixels.",
+ "LtsReleases": "Las versiones LTS (soporte a largo plazo) reciben sólo actualizaciones de seguridad y correcciones de fallos.",
+ "MenuDevelopment": "Desarrollo",
"MenuDiagnostic": "Diagnóstico",
"MenuGeneralSettings": "Configuración general",
- "MenuSystem": "Sistema",
- "MenuDevelopment": "Desarrollo",
"MenuMeasurables": "Medibles",
+ "MenuSystem": "Sistema",
+ "MissingTrackingCodeEmailSubject": "No hay registro de tráfico para %s en Matomo Analytics; comenzá ahora",
+ "NTrackingFailures": "%s fallas de rastreo",
+ "NoKnownFailures": "No hay fallos conocidos de rastreo.",
"OptOutComplete": "Quitado de adhesión completo; tus visitas a este sitio web no serán registradas por la herramienta de análisis web.",
"OptOutCompleteBis": "Tené en cuenta que si eliminás tus cookies, eliminás la cookie de quitado de adhesión, o si cambiás de computadora o navegador web, deberás realizar el proceso de quitado de adhesión nuevamente.",
- "OptOutDntFound": "No estás siendo rastreado, ya que tu navegador web está informando que no querés que suceda esto. Esto es una configuración de tu navegador, por lo tanto no vas a poder adherirte hasta que no deshabilités la función \"Do Not Track\" \/ \"DNT\" \/ \"Rastreo\".",
+ "OptOutDntFound": "No estás siendo rastreado, ya que tu navegador web está informando que no querés que suceda esto. Esto es una configuración de tu navegador, por lo tanto no vas a poder adherirte hasta que no deshabilités la función \"Do Not Track\" / \"DNT\" / \"Rastreo\".",
+ "OptOutErrorNoCookies": "La función de no siguimiento requiere que las cookies estén habilitadas.",
+ "OptOutErrorNotHttps": "La función de no seguimiento puede que no funcione porque este sitio no fue cargado sobre HTTPS. Por favor, recargá la página para saber si cambió tu estado de no seguimiento.",
+ "OptOutErrorWindowOpen": "La función de no seguimiento puede que no funcione porque parece que la ventana emergente de esta función fue bloqueada. Por favor, recargá la página para saber si cambió tu estado de no seguimiento.",
"OptOutExplanation": "Matomo está comprometida a ofrecer privacidad en Internet. Para proveer a tus visitantes la opción de no recolectar sus datos de navegación con las herramientas de análisis web de Matomo, podés agregar el siguiente código HTML en alguna página de tu sitio web, como por ejemplo la página de \"Política de privacidad\".",
"OptOutExplanationIntro": "Este código mostrará un iFrame conteniendo un enlace para que tus visitantes puedan dejar de ser rastreados por Matomo, estableciendo una cookie de no seguimiento en sus navegadores web. Mirá abajo (o %1$shacé clic acá%2$s) para ver el contenido que será mostrado por el iFrame.",
"OptOutForYourVisitors": "No seguimiento de Matomo para tus visitantes",
- "PiwikIsInstalledAt": "Matomo está instalado en",
+ "OptingYouOut": "Quitando adhesión. Por favor, esperá…",
"PersonalPluginSettings": "Configuración de plugins personales",
+ "PiwikIsInstalledAt": "Matomo está instalado en",
"PluginSettingChangeNotAllowed": "No estás permitido de cambiar el valor de la configuración \"%1$s\" en el plugin \"%2$s\"",
"PluginSettingReadNotAllowed": "No tenés permisos para cambiar el valor de la configuración \"%1$s\" en el plugin \"%2$s\"",
"PluginSettings": "Configuración de plugin",
"PluginSettingsIntro": "Acá podés cambiar la configuración de los siguientes plugins de terceros:",
- "PluginSettingsValueNotAllowed": "No está permitido el valor para el campo \"%1$s\" en el plugin \"%2$s\"",
"PluginSettingsSaveFailed": "Ocurrió un error al guardar la configuración del plugin",
"PluginSettingsSaveSuccess": "Se actualizó la configuración del plugin.",
- "TrackingFailures": "Fallas de rastreo",
- "SettingsSaveSuccess": "Configuración actualizada.",
+ "PluginSettingsValueNotAllowed": "No está permitido el valor para el campo \"%1$s\" en el plugin \"%2$s\"",
+ "Problem": "Problema",
+ "ProtocolNotDetectedCorrectly": "Actualmente estás viendo Matomo sobre una conexión SSL segura (usando HTTPS), pero Matomo podría no detectar una conexión no segura en el servidor.",
+ "ProtocolNotDetectedCorrectlySolution": "Para asegurarte de que Matomo solicita y ofrece tu contenido de forma segura sobre HTTPS, podés editar tu archivo %1$s y, o bien configurar tu proxy, o bien agregar la línea %2$s debajo de la sección %3$s. %4$sAprendé más%5$s",
+ "ReleaseChannel": "Canal de lanzamiento",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Alguien eliminó todos los tokens de autenticación en tu cuenta.",
+ "SecurityNotificationCheckTwoFactor": "Por favor, revisá la aplicación o dispositivo de tu autenticación de dos factores.",
+ "SecurityNotificationEmailSubject": "Notificación de seguridad",
+ "SecurityNotificationIfItWasYou": "Si fuiste vos, no pasa nada. Si no reconoés esta actividad, por favor, cambiá tu contraseña.",
+ "SecurityNotificationRecoveryCodesRegeneratedBody": "Alguien generó nuevos códigos de recuperación de la autenticación de dos factores para tu cuenta.",
+ "SecurityNotificationRecoveryCodesShowedBody": "Alguien vio los códigos de recuperación de la autenticación de dos factores de tu cuenta.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Otro súperusuario (%1$s) modificó la configuración del sistema. Configuración afectada: %2$s. Si estás al tanto de esta actividad, no pasa nada. Pero si no la reconocés, por favor, ponete en contacto con los demás súperusuarios.",
+ "SecurityNotificationSettingsChangedByUserBody": "Alguién modificó la configuración del sistema: Configuración afectada: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Alguien creó un token de autenticación (descripción: %s) en tu cuenta. Si no fuiste vos, eliminá el token.",
+ "SecurityNotificationTokenAuthDeletedBody": "Alguien eliminó un token de autenticación (descripción: %s) en tu cuenta.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Alguien deshabilitó la autenticación de dos factores en tu cuenta.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Alguien habilitó la autenticación de dos factores en tu cuenta.",
+ "SecurityNotificationUserCreatedBody": "Alguien creó un nuevo usuario (nombre de usuario: %s) en tu cuenta.",
+ "SecurityNotificationUserDeletedBody": "Alguien eliminó un usuario (nombre de usuario: %s) en tu cuenta.",
"SendPluginUpdateCommunication": "Enviar un correo electrónico cuando haya disponible una actualización del plugin",
"SendPluginUpdateCommunicationHelp": "Se enviará un correo electrónico a los súperusuarios cuando haya una nueva versión disponible del plugin.",
+ "SettingsSaveSuccess": "Configuración actualizada.",
+ "Solution": "Solución",
"StableReleases": "Si Matomo es parte fundamental de tu modelo de negocios, entonces te recomendamos que usés la última versión estable. Si usás la última versión beta y encontrás algún error o tenés alguna sugerencia, por favor, %1$smirá esto%2$s.",
- "LtsReleases": "Las versiones LTS (soporte a largo plazo) reciben sólo actualizaciones de seguridad y correcciones de fallos.",
"SystemPluginSettings": "Configuración de plugin de sistema",
"TrackAGoal": "Rastreá una meta",
"TrackingCode": "Código de rastreo",
"TrackingCodeIntro": "Matomo te ofrece varias formas de insertar el código de rastreo para tu sitio web, aplicación móvil e incluso cualquier dispositivo o aplicación.",
+ "TrackingFailureAuthenticationProblem": "La solicitud no fue autenticada, pero se requería autenticación.",
+ "TrackingFailureAuthenticationSolution": "Establecé o corregí la \"token_auth\" en tu solicitud de rastreo.",
+ "TrackingFailureInvalidSiteProblem": "El sitio no existe.",
+ "TrackingFailureInvalidSiteSolution": "Actualizá el idSite configurado en el rastreador.",
+ "TrackingFailures": "Fallas de rastreo",
+ "TrackingFailuresEmail1": "Esto es sólo para hacerte saber que %s diferentes tipos de fallos de rastreo han ocurrido en los últimos días.",
+ "TrackingFailuresEmail2": "Para ver todas las solicitudes de rastreo que fallaron, %1$shacé clic acá%2$s.",
+ "TrackingFailuresEmailSubject": "Fallas de rastreo en tu cuenta de Matomo Analytics",
+ "TrackingFailuresIntroduction": "Esta página lista los fallos de rastreo que han ocurrido en los últimos %s días. Por favor, tené en cuenta sólo se registran las clases de fallos más comunes y no todos ellos.",
+ "TrackingURL": "Dirección web de rastreo",
"TrustedHostConfirm": "¿Estás seguro que querés cambiar el nombre de dominio (\"hostname\") de confianza de Matomo?",
"TrustedHostSettings": "Nombre de dominio de confianza de Matomo",
+ "TwoFactorAuth": "Autenticación de dos factores",
"UiDemo": "Demo de interface gráfica",
+ "UncheckToOptOut": "No seleccionés esta casilla para excluirte.",
"UpdateSettings": "Configuración de actualización",
"UseCustomLogo": "Usar un logo personalizado",
"ValidPiwikHostname": "Nombre de dominio válido de Matomo",
+ "ViewAllTrackingFailures": "Ver todas las fallas de rastreo",
"WithOptionalRevenue": "con una facturación opcional",
- "YouAreOptedOut": "Actualmente no estás siendo rastrado.",
"YouAreNotOptedOut": "No estás excluido del seguimiento.",
+ "YouAreOptedOut": "Actualmente no estás siendo rastrado.",
"YouMayOptOut": "Podés elegir no tener un único número de identificación de la cookie de análisis web asignada a tu computadora para prevenir la agregación y el análisis de datos recolectados en este sitio web.",
- "YouMayOptOutBis": "Para elegir esto, por favor, hacé clic debajo para recibir una cookie para no adherirte a ser rastreado.",
- "OptingYouOut": "Quitando adhesión. Por favor, esperá",
- "ProtocolNotDetectedCorrectly": "Actualmente estás viendo Matomo sobre una conexión SSL segura (usando HTTPS), pero Matomo podría no detectar una conexión no segura en el servidor.",
- "ProtocolNotDetectedCorrectlySolution": "Para asegurarte de que Matomo solicita y ofrece tu contenido de forma segura sobre HTTPS, podés editar tu archivo %1$s y, o bien configurar tu proxy, o bien agregar la línea %2$s debajo de la sección %3$s. %4$sAprendé más%5$s",
"YouMayOptOut2": "Podés evitar que este sitio web agregue y analice las acciones que hagás acá.",
"YouMayOptOut3": "Al hacerlo protegerás tu privacidad, pero también evitarás que el propietario conozca tus acciones y cree una mejor experiencia para vos y para otros usuarios.",
- "UncheckToOptOut": "No seleccionés esta casilla para excluirte.",
- "CheckToOptIn": "Seleccioná esta casilla para incluirte.",
- "OptOutErrorNoCookies": "La función de no siguimiento requiere que las cookies estén habilitadas.",
- "OptOutErrorNotHttps": "La función de no seguimiento puede que no funcione porque este sitio no fue cargado sobre HTTPS. Por favor, recargá la página para saber si cambió tu estado de no seguimiento.",
- "OptOutErrorWindowOpen": "La función de no seguimiento puede que no funcione porque parece que la ventana emergente de esta función fue bloqueada. Por favor, recargá la página para saber si cambió tu estado de no seguimiento.",
- "MissingTrackingCodeEmailSubject": "No hay registro de tráfico para %s en Matomo Analytics; comenzá ahora",
- "JsTrackingCodeMissingEmail1": "Hace unos días agregaste el sitio web \"%s\" a tu cuenta de Matomo Analytics. Recién revisamos y Matomo no parece tener registros de tráfico para este sitio web.",
- "JsTrackingCodeMissingEmail2": "Para comenzar a rastrear datos y entender a tus usuarios, necesitás configurar el rastreo en tu sitio web o aplicación móvil. Para el caso de los sitios web, simplemente insertá el código de rastreo justo antes de la etiqueta %s.",
- "JsTrackingCodeMissingEmail3": "Para encontrar y personalizar tu código de rastreo, %1$shacé clic acá%2$s (o mirá la %3$sguía de cliente de rastreo de JavaScript%4$s).",
- "TrackingFailuresIntroduction": "Esta página lista los fallos de rastreo que han ocurrido en los últimos %s días. Por favor, tené en cuenta sólo se registran las clases de fallos más comunes y no todos ellos.",
- "NoKnownFailures": "No hay fallos conocidos de rastreo.",
- "Problem": "Problema",
- "Solution": "Solución",
- "TrackingURL": "Dirección web de rastreo",
- "LearnMore": "Aprendé más",
- "DeleteAllFailures": "Eliminar todas las fallas",
- "NTrackingFailures": "%s fallas de rastreo",
- "ViewAllTrackingFailures": "Ver todas las fallas de rastreo",
- "TrackingFailureInvalidSiteProblem": "El sitio no existe.",
- "TrackingFailureInvalidSiteSolution": "Actualizá el idSite configurado en el rastreador.",
- "TrackingFailureAuthenticationProblem": "La solicitud no fue autenticada, pero se requería autenticación.",
- "TrackingFailureAuthenticationSolution": "Establecé o corregí la \"token_auth\" en tu solicitud de rastreo.",
- "ConfirmDeleteAllTrackingFailures": "¿Estás seguro que querés eliminar todas las fallas de rastreo?",
- "ConfirmDeleteThisTrackingFailure": "¿Estás seguro que querés eliminar esta falla de rastreo?",
- "TrackingFailuresEmailSubject": "Fallas de rastreo en tu cuenta de Matomo Analytics",
- "TrackingFailuresEmail1": "Esto es sólo para hacerte saber que %s diferentes tipos de fallos de rastreo han ocurrido en los últimos días.",
- "TrackingFailuresEmail2": "Para ver todas las solicitudes de rastreo que fallaron, %1$shacé clic acá%2$s.",
- "ImportFromGoogleAnalytics": "Importar desde Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Si tenés datos existentes en Google Analytics y te estás cambiando a Matomo, podés exportar esos datos usando el plugin %1$sGoogleAnalyticsImporter%2$s.",
- "SecurityNotificationEmailSubject": "Notificación de seguridad",
- "SecurityNotificationRecoveryCodesShowedBody": "Alguien vio los códigos de recuperación de la autenticación de dos factores de tu cuenta.",
- "SecurityNotificationRecoveryCodesRegeneratedBody": "Alguien generó nuevos códigos de recuperación de la autenticación de dos factores para tu cuenta.",
- "SecurityNotificationTwoFactorAuthEnabledBody": "Alguien habilitó la autenticación de dos factores en tu cuenta.",
- "SecurityNotificationTwoFactorAuthDisabledBody": "Alguien deshabilitó la autenticación de dos factores en tu cuenta.",
- "SecurityNotificationTokenAuthCreatedBody": "Alguien creó un token de autenticación (descripción: %s) en tu cuenta. Si no fuiste vos, eliminá el token.",
- "SecurityNotificationTokenAuthDeletedBody": "Alguien eliminó un token de autenticación (descripción: %s) en tu cuenta.",
- "SecurityNotificationAllTokenAuthDeletedBody": "Alguien eliminó todos los tokens de autenticación en tu cuenta.",
- "SecurityNotificationSettingsChangedByUserBody": "Alguién modificó la configuración del sistema: Configuración afectada: %s.",
- "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Otro súperusuario (%1$s) modificó la configuración del sistema. Configuración afectada: %2$s. Si estás al tanto de esta actividad, no pasa nada. Pero si no la reconocés, por favor, ponete en contacto con los demás súperusuarios.",
- "SecurityNotificationUserCreatedBody": "Alguien creó un nuevo usuario (nombre de usuario: %s) en tu cuenta.",
- "SecurityNotificationUserDeletedBody": "Alguien eliminó un usuario (nombre de usuario: %s) en tu cuenta.",
- "SecurityNotificationIfItWasYou": "Si fuiste vos, no pasa nada. Si no reconoés esta actividad, por favor, cambiá tu contraseña.",
- "SecurityNotificationCheckTwoFactor": "Por favor, revisá la aplicación o dispositivo de tu autenticación de dos factores.",
- "BruteForce": "Fuerza bruta",
- "TwoFactorAuth": "Autenticación de dos factores",
- "Cors": "Cors"
+ "YouMayOptOutBis": "Para elegir esto, por favor, hacé clic debajo para recibir una cookie para no adherirte a ser rastreado."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/es.json b/plugins/CoreAdminHome/lang/es.json
index 3dcdf529a1..043c308cee 100644
--- a/plugins/CoreAdminHome/lang/es.json
+++ b/plugins/CoreAdminHome/lang/es.json
@@ -4,45 +4,59 @@
"Administration": "Administración",
"ArchivingSettings": "Configuración de archivado",
"BrandingSettings": "Configuración del Branding",
- "ErrorEmailFromAddressNotValid": "El SMTP de la dirección no es valido",
- "ReleaseChannel": "Canal de lanzamiento",
+ "BruteForce": "Fuerza Bruta",
+ "CheckToOptIn": "Marque esta casilla para adherirse.",
"ClickHereToOptIn": "Haga clic aquí para optar.",
"ClickHereToOptOut": "Haga clic aquí para no ser seguido.",
+ "ConfirmDeleteAllTrackingFailures": "Está seguro que desea eliminar todos los fallos de seguimiento?",
+ "ConfirmDeleteThisTrackingFailure": "¿Está seguro que desea eliminar esta falla de seguimiento?",
"CorsDomains": "Dominios de Intercambio de recursos de origen cruzado (CORS)",
- "CorsDomainsHelp": "Puede definir dominios o subdominios tales como http:\/\/example.com o http:\/\/stats.example.com. O permitir las peticiones de dominio cruzado para todos los dominios simplemente agregando un *",
+ "CorsDomainsHelp": "Puede definir dominios o subdominios tales como http://example.com o http://stats.example.com. O permitir las peticiones de dominio cruzado para todos los dominios simplemente agregando un *",
"CustomLogoFeedbackInfo": "Si personaliza el logo de Matomo, puede que también esté interesado en ocultar el %1$s enlace en el menú superior. Para hacerlo, puede deshabilitar el complemento Feedback en la página de %2$sAdministración de complementos%3$s.",
"CustomLogoHelpText": "Puede personalizar el logo de Matomo que será mostrado en la interfaz de usuario y los informes por correo electrónico.",
+ "DeleteAllFailures": "Eliminar todas las fallas",
"DevelopmentProcess": "Mientras que nuestro proceso de desarrollo incluye miles de pruebas automatizadas, los Beta testers juegan un rol clave en lograr \"Política de sin errores\" en Matomo.",
"EmailServerSettings": "Configuración del servidor de correo electrónico",
+ "ErrorEmailFromAddressNotValid": "El SMTP de la dirección no es valido",
+ "FaviconUpload": "Selecciona un Favicon para subir",
+ "FileUploadDisabled": "La carga de archivos no está habilitada en su configuración de PHP. Para cargar su logotipo personalizado, por favor ingrese %s en el php.ini y reinicie su servidor de internet.",
"ForBetaTestersOnly": "Solamente para beta testers",
+ "HttpTrackingApi": "API de seguimiento HTTP",
+ "HttpTrackingApiDescription": "La %1$sHTTP Tracking API%2$s le permite rastrear todo. Puede ser útil si está utilizando un lenguaje de programación el cual no posee aun un SDK. Lo mismo ocurre cuando desea rastrear dispositivos o aplicaciones de una manera especial.",
"ImageTracking": "Monitoreo mediante imagen",
"ImageTrackingIntro1": "Cuando un visitante ha deshabilitado JavaScript o cuando no puede utilizarse, puede usar un enlace de imagen como vínculo de seguimiento para monitorear visitantes.",
"ImageTrackingIntro2": "Generar el enlace de abajo y copiar y pegar el código HTML generado en la página. Si lo está utilizando como una alternativa para el seguimiento vía JavaScript, puede envolverlo en %1$s identificaciones.",
"ImageTrackingIntro3": "Para la lista completa de opciones que puede utilizar con un vínculo de seguimiento de imagen, consulte la %1$sDocumentación API de rastreo%2$s.",
"ImageTrackingLink": "Enlace de monitoreo por imagen",
+ "ImportFromGoogleAnalytics": "Importar de Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Si tiene una propiedad de Google Analytics y está migrando a Matomo, puede importar los datos existentes una el plugin %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Importando los registros del servidor",
"ImportingServerLogsDesc": "Una alternativa para el seguimiento de los visitantes a través del navegador (ya sea a través de JavaScript o un enlace de imagen) es importar continuamente los registros del servidor. Aprenda más acerca del %1$sarchivo de registro analítico del servidor%2$s.",
"InvalidPluginsWarning": "Los siguientes complementos no son compatibles con %1$s y podrían no ser cargados: %2$s.",
"InvalidPluginsYouCanUninstall": "Puede actualizar o desinstalar estos complementos en la página %1$sGestionar Complementos%2$s.",
- "JavaScriptTracking": "Seguimiento con JavaScript",
- "HttpTrackingApi": "API de seguimiento HTTP",
- "HttpTrackingApiDescription": "La %1$sHTTP Tracking API%2$s le permite rastrear todo. Puede ser útil si está utilizando un lenguaje de programación el cual no posee aun un SDK. Lo mismo ocurre cuando desea rastrear dispositivos o aplicaciones de una manera especial.",
+ "JSTrackingIntro1": "Puedes rastrear visitantes hacia su sitio web de muchas maneras. La forma recomendada de hacerlo es con JavaScript. Para usar este método solo debe asegurarse de que cada página de su sitio de internet tenga cierto código JavaScript, el cual puede generar aquí.",
+ "JSTrackingIntro2": "Una vez que tenga el código de seguimiento JavaScript para su sitio web, cópielo y péguelo en todas las páginas que desee rastrear con Matomo.",
+ "JSTrackingIntro3a": "En la mayoría de sitos web, blogs, CMS, etc. puede utilizar plugins precodificados para que realicen el trabajo técnico por usted. (Vea nuestra%1$slista de plugins para integrar Matomo%2$s.)",
+ "JSTrackingIntro3b": "Si no existe ningún plugin, siempre puede editar las plantillas de su sitio web y agregar código JavaScript de seguimiento en la etiqueta &lt;/head&gt;, la cual suele estar definida en \"header.php\", \"header.tpl\" o ficheros similares.",
+ "JSTrackingIntro4": "Si no desea utilizar JavaScript para rastrear visitantes, %1$sgenere un enlace de imagen de rastreo%2$s.",
+ "JSTrackingIntro5": "Si desea hacer más que rastrear vistas de páginas, revise la %1$sDocumentación de Javascript de Matomo%2$s acerca de las funciones disponibles. Estas puede rastrear objetivos, variables personalizadas, órdenes de comercio electrónico, carritos abandonados y más.",
"JSTracking_CampaignKwdParam": "Parámetro palabra clave de la campaña",
"JSTracking_CampaignNameParam": "Parámetro Nombre de la campaña",
"JSTracking_CodeNoteBeforeClosingHead": "Asegúrese que este código se encuentre en cada página de su sitio web. Recomendamos copiarlo inmediatamente antes de cerrar la etiqueta %1$s",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Asegúrate de que este código es insertado con un elemento script en cada página de su sitio web. Recomendamos pegarlo justo antes de cerrar la etiqueta de cabecera.",
- "JSTracking_CustomCampaignQueryParam": "Utiliza nombres de parámetros de consulta personalizados para el nombre de la campaña y la palabra clave",
"JSTracking_CrossDomain": "Por defecto, el \"visitor ID\", que identifica unívocamente a un visitante, se almacena, en el navegador, en las cookies de origen, que solo pueden ser accedidas por páginas del mismo dominio. Habilitando el \"cross domain linking\" te permite atribuir a la misma visita todas las acciones y páginas vistas de un visitante específico aunque las páginas sean de dominios diferentes. Cada vez que un usuario siga un enlace a una URL de uno de tus sitios web que son alias del principal, el \"visitor ID\" se añadirá en el valor de un parámetro de la URL llamado \"pk_vid\"",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Nota: Para usar enlaces cruzados de dominio, debe especificar más de un nombre de dominio (URLs) para su sitio web.",
+ "JSTracking_CustomCampaignQueryParam": "Utiliza nombres de parámetros de consulta personalizados para el nombre de la campaña y la palabra clave",
"JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sMatomo detectará automáticamente los parámetros de Google Analytics.%2$s",
"JSTracking_DisableCookies": "Desactivar todas las cookies de rastreo",
"JSTracking_DisableCookiesDesc": "Desactiva todas las cookies de origen. Las actuales cookies generadas por Matomo en este sitio de internet serán eliminadas con la próxima visita al mismo.",
"JSTracking_EnableCrossDomainLinking": "Habilita el \"cross domain linking\"",
"JSTracking_EnableDoNotTrack": "Habilitar detección por parte del cliente de DoNotTrack",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Nota: Soporte del lado del servidor para DoNotTrack ha sido activado, por lo que esta opción no tendrá ningún efecto.",
"JSTracking_EnableDoNotTrackDesc": "De esta manera las solicitudes de seguimiento no será enviada si el visitante no desea ser seguido.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Nota: Soporte del lado del servidor para DoNotTrack ha sido activado, por lo que esta opción no tendrá ningún efecto.",
+ "JSTracking_EndNote": "Nota: Puedes generar un código de seguimiento personalizado en la sección %1$sCódigo de seguimiento%2$s",
"JSTracking_GroupPageTitlesByDomain": "Anteponer el dominio del sitio al título de la página a rastrear",
- "JSTracking_GroupPageTitlesByDomainDesc1": "De esta manera si alguien visita la página 'About' del blog %1$s se registrará como 'blog\/About'. Esta es la forma más fácil de conseguir un resumen del tráfico de acuerdo a los subdominios.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "De esta manera si alguien visita la página 'About' del blog %1$s se registrará como 'blog/About'. Esta es la forma más fácil de conseguir un resumen del tráfico de acuerdo a los subdominios.",
"JSTracking_MergeAliases": "En el informe *Enlaces salientes\" puede ocultar los clics a los alias URL conocidos de",
"JSTracking_MergeAliasesDesc": "De esta forma los clics que han recibido los enlaces de los alias de URL (por ej. %s) no serán contados como \"Outlink\".",
"JSTracking_MergeSubdomains": "Rastrear visitantes a través de todos los subdominios de",
@@ -52,106 +66,92 @@
"JSTracking_TrackNoScript": "Rastrear usuarios que tengan JavaScript deshabilitado",
"JSTracking_VisitorCustomVars": "Rastrear variables personalizadas para este visitante",
"JSTracking_VisitorCustomVarsDesc": "Por ejemplo, con el nombre de variable \"Tipo\" y el valor \"Cliente\".",
- "JSTracking_EndNote": "Nota: Puedes generar un código de seguimiento personalizado en la sección %1$sCódigo de seguimiento%2$s",
- "JSTrackingIntro1": "Puedes rastrear visitantes hacia su sitio web de muchas maneras. La forma recomendada de hacerlo es con JavaScript. Para usar este método solo debe asegurarse de que cada página de su sitio de internet tenga cierto código JavaScript, el cual puede generar aquí.",
- "JSTrackingIntro2": "Una vez que tenga el código de seguimiento JavaScript para su sitio web, cópielo y péguelo en todas las páginas que desee rastrear con Matomo.",
- "JSTrackingIntro3a": "En la mayoría de sitos web, blogs, CMS, etc. puede utilizar plugins precodificados para que realicen el trabajo técnico por usted. (Vea nuestra%1$slista de plugins para integrar Matomo%2$s.)",
- "JSTrackingIntro3b": "Si no existe ningún plugin, siempre puede editar las plantillas de su sitio web y agregar código JavaScript de seguimiento en la etiqueta &lt;\/head&gt;, la cual suele estar definida en \"header.php\", \"header.tpl\" o ficheros similares.",
- "JSTrackingIntro4": "Si no desea utilizar JavaScript para rastrear visitantes, %1$sgenere un enlace de imagen de rastreo%2$s.",
- "JSTrackingIntro5": "Si desea hacer más que rastrear vistas de páginas, revise la %1$sDocumentación de Javascript de Matomo%2$s acerca de las funciones disponibles. Estas puede rastrear objetivos, variables personalizadas, órdenes de comercio electrónico, carritos abandonados y más.",
+ "JavaScriptTracking": "Seguimiento con JavaScript",
+ "JsTrackingCodeMissingEmail1": "Unos días atrás agregó el sitio weg '%s' a su Matomo Analytics. Lo hemos verificado y su Matomo no parece poseer ningún tráfico registrado para este sitio web.",
+ "JsTrackingCodeMissingEmail2": "Para empezar a rastrear datos y obtener conocimientos de sus usuarios, necesitará configurarlo, sea en su sitio web o aplicación móvil. Para sitios web simplemente incruste el código de rastreo justo antes de la etiqueta %s.",
+ "JsTrackingCodeMissingEmail3": "Para encontrar y personalizar su código de rastreo, %1$sclic acá%2$s (o lea la guía %3$sJavascript Tracking Client%4$s).",
+ "LearnMore": "Aprender más",
"LogoNotWriteableInstruction": "Para utilizar su logo personalizado en lugar del logo estándar de Matomo puede conceder permisos de escritura a este directorio: %1$s Matomo necesita el permiso de escritura para sus logos guardados en los archivos %2$s.",
- "FileUploadDisabled": "La carga de archivos no está habilitada en su configuración de PHP. Para cargar su logotipo personalizado, por favor ingrese %s en el php.ini y reinicie su servidor de internet.",
- "LogoUploadFailed": "El fichero no ha podido subirse de forma correcta. Por favor, comprueba si el fichero tiene un formato correcto.",
"LogoUpload": "Seleccione un logo para subir",
- "FaviconUpload": "Selecciona un Favicon para subir",
+ "LogoUploadFailed": "El fichero no ha podido subirse de forma correcta. Por favor, comprueba si el fichero tiene un formato correcto.",
"LogoUploadHelp": "Sube un archivo en formato %1$s con una altura mínima de %2$s píxeles.",
+ "LtsReleases": "Las versiones LTS (Soporte de larga duración) reciben solo correcciones de seguridad y errores.",
+ "MenuDevelopment": "Desarrollo",
"MenuDiagnostic": "Diagnóstico",
"MenuGeneralSettings": "Configuración general",
- "MenuSystem": "Sistema",
- "MenuDevelopment": "Desarrollo",
"MenuMeasurables": "Medibles",
+ "MenuSystem": "Sistema",
+ "MissingTrackingCodeEmailSubject": "Sin tráfico registrado para %s en Matomo Analytics, empieze ahora",
+ "NTrackingFailures": "%s fallas de seguimiento",
+ "NoKnownFailures": "No existen fallos conocidos en el seguimiento.",
"OptOutComplete": "Opt-out completado; sus visitas a este sitio de internet no serán grabadas por la herramienta de Análisis de internet.",
"OptOutCompleteBis": "Tenga en cuenta que si elimina sus cookies, elimina la cookie opt-out, o si cambia de ordenador o navegador, deberá llevar a cabo el procedimiento opt-out otra vez.",
"OptOutDntFound": "No está siendo rastreado desde que su navegador está informando que esa es su elección. Esta es una opción de su navegador, así que no será posible hasta tanto no deshabilite la función 'No rastrear'.",
+ "OptOutErrorNoCookies": "La característica de seguimiento opt-out requiere de cookies para poder habilitarla.",
+ "OptOutErrorNotHttps": "La característica de seguimiento opt-out puede que no funcione debido a que este sitio no se cargó sobre HTTPS. Por favor recarge y compruebe que el estatus de opt-out ha cambiado.",
+ "OptOutErrorWindowOpen": "La característica de seguimiento opt-out puede que no funcione debido a que parece que el popup de opt-out fue bloqueado. Por favor recargue la página para comprobar si el estatus de opt-out ha cambiado.",
"OptOutExplanation": "Matomo se dedica a dar privacidad en internet. Para darles a sus visitantes la opción de no ser rastreados por Matomo, puede añadir el siguiente código HTML en una de sus páginas de su sitio web, por ejemplo, en la página de Política de Privacidad.",
"OptOutExplanationIntro": "Este código mostrará un Iframe que contiene un enlace para que sus visitantes puedan optar por no participar en Matomo al establecer una cookie de exclusión en sus navegadores. Vea más abajo (o %1$s o haga clic aquí %2$s) para ver el contenido que se mostrará en el iFrame.",
"OptOutForYourVisitors": "Opción de no seguimiento de Matomo para sus visitantes",
- "PiwikIsInstalledAt": "Matomo está instalado en",
+ "OptingYouOut": "Opción a salir, por favor espere…",
"PersonalPluginSettings": "Ajustes de complemento personal",
+ "PiwikIsInstalledAt": "Matomo está instalado en",
"PluginSettingChangeNotAllowed": "No tiene permitido cambiar el valor de configuración \"%1$s\" en el complemento \"%2$s\"",
"PluginSettingReadNotAllowed": "No está permitido que lea el valor de la opción \"%1$s\" en el complemento \"%2$s\"",
"PluginSettings": "Ajustes de complemento",
"PluginSettingsIntro": "Aquí puede cambiar la configuración de los siguientes complementos de terceros:",
- "PluginSettingsValueNotAllowed": "El valor del campo \"%1$s\" del complemento \"%2$s\" no es permitido",
"PluginSettingsSaveFailed": "Error al guardar la configuración del complemento",
"PluginSettingsSaveSuccess": "Ajustes del complemento actualizado.",
- "TrackingFailures": "Fallas de seguimiento",
- "SettingsSaveSuccess": "Ajustes actualizados.",
+ "PluginSettingsValueNotAllowed": "El valor del campo \"%1$s\" del complemento \"%2$s\" no es permitido",
+ "Problem": "Problema",
+ "ProtocolNotDetectedCorrectly": "Actualmente estás usando Matomo solo puede detectar una conexión insegura en el servidor.",
+ "ProtocolNotDetectedCorrectlySolution": "Para asegurarse que Matomo peticiona y satisface de manera segura su contenido a través de HTTPS, puede modificar su archivo %1$s o configurar los datos de su proxy o puede agregar la siguiente línea %2$s bajo la sección %3$s. %4$sAprenda más%5$s",
+ "ReleaseChannel": "Canal de lanzamiento",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Alguien ha eliminado todos los tokens de autenticación de su cuenta.",
+ "SecurityNotificationEmailSubject": "Notificación de seguridad",
+ "SecurityNotificationIfItWasYou": "Si era usted, ignore este mensaje; de lo contrario, cambie la contraseña.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Otro super-usuario (%1$s) ha modificado la configuración del sistema. Los parámetros afectados son: %2$s. Si reconoce estos cambios ignore esto, si no contacte con el resto de super-usuarios.",
+ "SecurityNotificationSettingsChangedByUserBody": "Alguien ha modificado la configuración del sistema. Los parámetros afectados son: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Alguien ha creado un token de autenticación (descripción: %s) en su cuenta. Si no fue usted elimine el token.",
+ "SecurityNotificationTokenAuthDeletedBody": "Alguien ha eliminado un token de autenticación (descripción: %s) de su cuenta.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Alguien ha deshabilitado la autenticación de 2 pasos en tu cuenta.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Alguien ha habilitado la autenticación de 2 pasos en tu cuenta.",
+ "SecurityNotificationUserCreatedBody": "Alguien ha creado un nuevo usuario (login: %s) en su cuenta.",
+ "SecurityNotificationUserDeletedBody": "Alguien ha eliminado un usuario (login: %s) de su cuenta.",
"SendPluginUpdateCommunication": "Envíe un correo electrónico cuando la actualización del complemento esté disponible",
"SendPluginUpdateCommunicationHelp": "Se enviará un correo electrónico a los Super Usuarios cuando haya disponible una nueva versión de un complemento.",
+ "SettingsSaveSuccess": "Ajustes actualizados.",
+ "Solution": "Solución",
"StableReleases": "Si Matomo es una parte crítica de su negocio, le recomendamos que utilice la última versión estable. Si usa la última versión beta y encuentra un error o tiene alguna sugerencia, por favor %1$sver aquí%2$s.",
- "LtsReleases": "Las versiones LTS (Soporte de larga duración) reciben solo correcciones de seguridad y errores.",
"SystemPluginSettings": "Ajustes de complemento del sistema",
"TrackAGoal": "Seguimiento de un objetivo",
"TrackingCode": "Código de seguimiento",
"TrackingCodeIntro": "Matomo le ofrece varias maneras de incrustar el código de rastreo para su sitio web, aplicación móvil e incluso para cualquier dispositivo o aplicación.",
+ "TrackingFailureAuthenticationProblem": "La solicitud no se autenticó, pero es obligatorio poseer una.",
+ "TrackingFailureAuthenticationSolution": "Configure o corrija un \"token_auth\" en su solicitud de seguimiento.",
+ "TrackingFailureInvalidSiteProblem": "Este sitio no existe.",
+ "TrackingFailureInvalidSiteSolution": "Actualice el idSite configurado en el rastreador.",
+ "TrackingFailures": "Fallas de seguimiento",
+ "TrackingFailuresEmail1": "Esto es solo para hacerle saber que %s se han producido diferentes tipos de fallas de seguimiento en los últimos días.",
+ "TrackingFailuresEmail2": "Para ver todas las peticiones de fallas de seguimiento haga %1$s clic aquí%2$s.",
+ "TrackingFailuresEmailSubject": "Fallas de seguimiento en su Matomo Analytics",
+ "TrackingFailuresIntroduction": "Esta página enumera las fallas de seguimiento que ocurrieron durante los últimos %s días. Tenga en cuenta que solo las fallas más usuales y comunes de errores de seguimiento se registran, pero no todas.",
+ "TrackingURL": "URL de seguimiento",
"TrustedHostConfirm": "¿Está seguro que desea cambiar el hostname de confianza Matomo?",
"TrustedHostSettings": "Nombre del servidor de alojamiento confiable Matomo",
+ "TwoFactorAuth": "Autenticación de doble factor",
"UiDemo": "Demo UI",
+ "UncheckToOptOut": "Desmarque esta casilla para excluirse",
"UpdateSettings": "Parámetros de actualización",
"UseCustomLogo": "Usar un logo personalizado",
"ValidPiwikHostname": "Hostname válido Matomo",
+ "ViewAllTrackingFailures": "Ver todas las fallas de seguimiento",
"WithOptionalRevenue": "con una facturación opcional",
- "YouAreOptedOut": "Actualmente está siendo excluido.",
"YouAreNotOptedOut": "Está siendo rastreado",
+ "YouAreOptedOut": "Actualmente está siendo excluido.",
"YouMayOptOut": "Puede escojer no tener un único número de identificación de la cookie de análisis de internet asignado a su ordenador para prevenir la agregación y el análisis de datos recogidos en este sitio de internet.",
- "YouMayOptOutBis": "Para escoger esto, por favor haga clic debajo para recibir una cookie opt-out (para no ser seguido).",
- "OptingYouOut": "Opción a salir, por favor espere...",
- "ProtocolNotDetectedCorrectly": "Actualmente estás usando Matomo solo puede detectar una conexión insegura en el servidor.",
- "ProtocolNotDetectedCorrectlySolution": "Para asegurarse que Matomo peticiona y satisface de manera segura su contenido a través de HTTPS, puede modificar su archivo %1$s o configurar los datos de su proxy o puede agregar la siguiente línea %2$s bajo la sección %3$s. %4$sAprenda más%5$s",
"YouMayOptOut2": "Puede optar por evitar que este sitio web agregue y analice las acciones que realiza aquí.",
"YouMayOptOut3": "Al hacerlo, protegerá su privacidad, pero también evitará que el propietario aprenda de sus acciones y cree una mejor experiencia para usted y demás usuarios.",
- "UncheckToOptOut": "Desmarque esta casilla para excluirse",
- "CheckToOptIn": "Marque esta casilla para adherirse.",
- "OptOutErrorNoCookies": "La característica de seguimiento opt-out requiere de cookies para poder habilitarla.",
- "OptOutErrorNotHttps": "La característica de seguimiento opt-out puede que no funcione debido a que este sitio no se cargó sobre HTTPS. Por favor recarge y compruebe que el estatus de opt-out ha cambiado.",
- "OptOutErrorWindowOpen": "La característica de seguimiento opt-out puede que no funcione debido a que parece que el popup de opt-out fue bloqueado. Por favor recargue la página para comprobar si el estatus de opt-out ha cambiado.",
- "MissingTrackingCodeEmailSubject": "Sin tráfico registrado para %s en Matomo Analytics, empieze ahora",
- "JsTrackingCodeMissingEmail1": "Unos días atrás agregó el sitio weg '%s' a su Matomo Analytics. Lo hemos verificado y su Matomo no parece poseer ningún tráfico registrado para este sitio web.",
- "JsTrackingCodeMissingEmail2": "Para empezar a rastrear datos y obtener conocimientos de sus usuarios, necesitará configurarlo, sea en su sitio web o aplicación móvil. Para sitios web simplemente incruste el código de rastreo justo antes de la etiqueta %s.",
- "JsTrackingCodeMissingEmail3": "Para encontrar y personalizar su código de rastreo, %1$sclic acá%2$s (o lea la guía %3$sJavascript Tracking Client%4$s).",
- "TrackingFailuresIntroduction": "Esta página enumera las fallas de seguimiento que ocurrieron durante los últimos %s días. Tenga en cuenta que solo las fallas más usuales y comunes de errores de seguimiento se registran, pero no todas.",
- "NoKnownFailures": "No existen fallos conocidos en el seguimiento.",
- "Problem": "Problema",
- "Solution": "Solución",
- "TrackingURL": "URL de seguimiento",
- "LearnMore": "Aprender más",
- "DeleteAllFailures": "Eliminar todas las fallas",
- "NTrackingFailures": "%s fallas de seguimiento",
- "ViewAllTrackingFailures": "Ver todas las fallas de seguimiento",
- "TrackingFailureInvalidSiteProblem": "Este sitio no existe.",
- "TrackingFailureInvalidSiteSolution": "Actualice el idSite configurado en el rastreador.",
- "TrackingFailureAuthenticationProblem": "La solicitud no se autenticó, pero es obligatorio poseer una.",
- "TrackingFailureAuthenticationSolution": "Configure o corrija un \"token_auth\" en su solicitud de seguimiento.",
- "ConfirmDeleteAllTrackingFailures": "Está seguro que desea eliminar todos los fallos de seguimiento?",
- "ConfirmDeleteThisTrackingFailure": "¿Está seguro que desea eliminar esta falla de seguimiento?",
- "TrackingFailuresEmailSubject": "Fallas de seguimiento en su Matomo Analytics",
- "TrackingFailuresEmail1": "Esto es solo para hacerle saber que %s se han producido diferentes tipos de fallas de seguimiento en los últimos días.",
- "TrackingFailuresEmail2": "Para ver todas las peticiones de fallas de seguimiento haga %1$s clic aquí%2$s.",
- "ImportFromGoogleAnalytics": "Importar de Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Si tiene una propiedad de Google Analytics y está migrando a Matomo, puede importar los datos existentes una el plugin %1$sGoogleAnalyticsImporter%2$s.",
- "SecurityNotificationEmailSubject": "Notificación de seguridad",
- "SecurityNotificationTwoFactorAuthEnabledBody": "Alguien ha habilitado la autenticación de 2 pasos en tu cuenta.",
- "SecurityNotificationTwoFactorAuthDisabledBody": "Alguien ha deshabilitado la autenticación de 2 pasos en tu cuenta.",
- "SecurityNotificationTokenAuthCreatedBody": "Alguien ha creado un token de autenticación (descripción: %s) en su cuenta. Si no fue usted elimine el token.",
- "SecurityNotificationTokenAuthDeletedBody": "Alguien ha eliminado un token de autenticación (descripción: %s) de su cuenta.",
- "SecurityNotificationAllTokenAuthDeletedBody": "Alguien ha eliminado todos los tokens de autenticación de su cuenta.",
- "SecurityNotificationSettingsChangedByUserBody": "Alguien ha modificado la configuración del sistema. Los parámetros afectados son: %s.",
- "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Otro super-usuario (%1$s) ha modificado la configuración del sistema. Los parámetros afectados son: %2$s. Si reconoce estos cambios ignore esto, si no contacte con el resto de super-usuarios.",
- "SecurityNotificationUserCreatedBody": "Alguien ha creado un nuevo usuario (login: %s) en su cuenta.",
- "SecurityNotificationUserDeletedBody": "Alguien ha eliminado un usuario (login: %s) de su cuenta.",
- "SecurityNotificationIfItWasYou": "Si era usted, ignore este mensaje; de lo contrario, cambie la contraseña.",
- "BruteForce": "Fuerza Bruta",
- "TwoFactorAuth": "Autenticación de doble factor"
+ "YouMayOptOutBis": "Para escoger esto, por favor haga clic debajo para recibir una cookie opt-out (para no ser seguido)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/fi.json b/plugins/CoreAdminHome/lang/fi.json
index aa607209db..2dace30f7a 100644
--- a/plugins/CoreAdminHome/lang/fi.json
+++ b/plugins/CoreAdminHome/lang/fi.json
@@ -87,14 +87,14 @@
"OptOutExplanation": "Matomo on mukana mahdollistamassa yksityisyyttä internetissä. Jos haluat antaa kävijöillesi mahdollisuuden kieltää seuranta, lisää seuraava HTML-koodi verkkosivullesi, esimerkiksi \"Yksityisyyskäytännöt\"-sivulle.",
"OptOutExplanationIntro": "Tämä koodi näyttää IFRAME:n, joka sisältää linkin jolla käyttäjäsi voivat kieltää seuraamisensa Matomoassa. Tämä toteutetaan asettamalla käyttäjän selaimeen eväste. Alla näet mitä käyttäjä näkee selaimessaan (voit myös katsoa %1$stästä%2$s)",
"OptOutForYourVisitors": "Matomon poistaminen käytöstä kävijöillesi (opt-out)",
- "OptingYouOut": "Seurantasi estetään, hetkinen...",
+ "OptingYouOut": "Seurantasi estetään, hetkinen…",
"PersonalPluginSettings": "Omat liitännäisasetukset",
"PiwikIsInstalledAt": "Matomo on asennettu kohteeseen",
"PluginSettingChangeNotAllowed": "Arvojen muuttaminen \"%1$s\" liitännäisessä \"%2$s\" -asetuksissa ei ole sallittua",
"PluginSettingReadNotAllowed": "Et voi lukea asetusta \"%1$s\" liitännäisestä \"%2$s\"",
"PluginSettings": "Liitännäisen asetukset",
"PluginSettingsIntro": "Täällä voit muuttaa kolmannen osapuolen liitännäisten asetuksia:",
- "PluginSettingsSaveFailed": "Liitännäisten asetusten tallentaminen epäonnistui",
+ "PluginSettingsSaveFailed": "Liitännäisen asetusten tallentaminen ei onnistunut",
"PluginSettingsSaveSuccess": "Liitännäisen asetukset päivitetty.",
"PluginSettingsValueNotAllowed": "Arvo kentälle \"%1$s\" liitännäisessä \"%2$s\" ei ole sallittu",
"Problem": "Ongelma",
@@ -127,6 +127,8 @@
"UseCustomLogo": "Käytä kustomoitua logoa",
"ValidPiwikHostname": "Voimassaoleva Matomon isäntänimi",
"ViewAllTrackingFailures": "Näytä kaikki seurantavirheet",
+ "WhatIsNew": "Mitä uutta",
+ "WhatIsNewTooltip": "Katso mitä uutta Matomo sisältää",
"WithOptionalRevenue": "valinnaisten tuottojen kanssa",
"YouAreNotOptedOut": "Et ole kieltänyt seurantaa",
"YouAreOptedOut": "Et ole mukana seurannassa.",
diff --git a/plugins/CoreAdminHome/lang/fr.json b/plugins/CoreAdminHome/lang/fr.json
index b4dd90d32d..afae017813 100644
--- a/plugins/CoreAdminHome/lang/fr.json
+++ b/plugins/CoreAdminHome/lang/fr.json
@@ -3,82 +3,82 @@
"AddNewTrustedHost": "Ajouter un nouvel hôte de confiance",
"Administration": "Administration",
"ArchivingSettings": "Paramètres d'archivage",
- "BrandingSettings": "Paramètres de l'image de marque",
+ "BrandingSettings": "Paramètres de logo",
"BruteForce": "Force brute",
"CheckToOptIn": "Cochez cette case pour ne plus être exclu(e).",
"ClickHereToOptIn": "Cliquez ici pour inclure votre ordinateur.",
"ClickHereToOptOut": "Cliquez ici pour exclure votre ordinateur.",
- "ConfirmDeleteAllTrackingFailures": "Êtes-vous sûr(e) de vouloir supprimer toutes les erreurs de suivi ?",
- "ConfirmDeleteThisTrackingFailure": "Êtes-vous sûr(e) de vouloir supprimer cette erreur de suivi ?",
+ "ConfirmDeleteAllTrackingFailures": "Voulez-vous vraiment supprimer toutes les erreurs de suivi ?",
+ "ConfirmDeleteThisTrackingFailure": "Voulez-vous vraiment supprimer cette erreur de suivi ?",
"Cors": "cors",
"CorsDomains": "Domaines CORS (Cross-Origin Resource Sharing)",
- "CorsDomainsHelp": "Vous pouvez définir des noms de domaines ou sous-domaines tels que http://exemple.com ou http://stats.exemple.com. Pour autoriser les requêtes entre tous les domaines ajoutez simplement un *",
- "CustomLogoFeedbackInfo": "Si vous personnalisez le logo Matomo, vous pouvez être aussi vouloir cacher le lien %1$s du menu du haut. Pour ce faire, vous pouvez désactiver le plugin de Feedback dans la page de %2$sGestionnaire de Plugins%3$s.",
+ "CorsDomainsHelp": "Vous pouvez définir des noms de domaines ou sous-domaines tels que http://exemple.com ou http://stats.exemple.com. Pour autoriser les requêtes entre tous les domaines ajoutez simplement une *",
+ "CustomLogoFeedbackInfo": "Si vous personnalisez le logo Matomo, vous pourriez aussi vouloir cacher le lien %1$s du menu du haut. Pour ce faire, vous pouvez désactiver l'extension « Feedback » dans la page de %2$sGestionnaire d'extensions%3$s.",
"CustomLogoHelpText": "Vous pouvez personnaliser le logo Matomo qui sera affiché dans l'interface utilisateur et les rapports par courriel.",
"DeleteAllFailures": "Supprimer toutes les erreurs",
- "DevelopmentProcess": "Bien que nos processus de développement incluent des milliers de tests automatisés, les bêta-testeurs jouent un rôle clé dans l'accomplissement de notre \"politique zéro bug\" pour Matomo.",
- "EmailServerSettings": "Paramètres du serveur mail",
- "ErrorEmailFromAddressNotValid": "L'adresse d'origine SMTP n'est pas valide",
+ "DevelopmentProcess": "Bien que nos processus de développement incluent des milliers de tests automatisés, les bêta-testeurs jouent un rôle clé dans l'accomplissement de notre « politique zéro bogue » pour Matomo.",
+ "EmailServerSettings": "Paramètres du serveur de courriels",
+ "ErrorEmailFromAddressNotValid": "L'adresse d'expéditeur SMTP n'est pas valide",
"FaviconUpload": "Sélectionnez un favicon à télécharger",
"FileUploadDisabled": "Le téléversement de fichiers n'est pas activé dans votre configuration PHP. Pour téléverser un logo personnalisé veuillez définir %s dans php.ini et redémarrer votre serveur web.",
"ForBetaTestersOnly": "Pour les bêta testeurs uniquement",
"HttpTrackingApi": "API de suivi HTTP",
- "HttpTrackingApiDescription": "%1$sL'API de suivi HTTP %2$svous permet de suivre ce que vous souhaitez. Elle peut être utile si vous utilisez un langage de programmation qui n'a pas encore de SDK. Cela peut aussi être utile si vous souhaitez suivre des périphériques ou applications de manière particulière.",
+ "HttpTrackingApiDescription": "%1$sL'API de suivi HTTP %2$svous permet de suivre ce que vous souhaitez. Elle peut être utile si vous utilisez un langage de programmation qui n'a pas encore de SDK. Cela peut aussi être utile si vous souhaitez suivre des appareils ou des applications de manière particulière.",
"ImageTracking": "Suivi par image",
- "ImageTrackingIntro1": "Quand un visiteur désactive JavaScript, ou quand JavaScript ne peut être utilisé, vous pouvez utiliser le lien de suivi par image pour suivre les visiteurs.",
- "ImageTrackingIntro2": "Générez le lien ci-dessous et copiez-collez le code HTML généré dans vos pages web. Si vous utilisez cela comme méthode de secours au suivi JavaScript, vous pouvez l'insérer entre des balises%1$s.",
+ "ImageTrackingIntro1": "Quand un visiteur désactive JavaScript, ou quand JavaScript ne peut être utilisé, vous pouvez utiliser le lien de suivi par image pour enregistrer les visiteurs.",
+ "ImageTrackingIntro2": "Générez le lien ci-dessous et copiez-collez le code HTML dans la page web. Si vous utilisez cela comme méthode de secours au suivi JavaScript, vous pouvez l'insérer entre des balises%1$s.",
"ImageTrackingIntro3": "Pour la liste complète des options que vous pouvez utiliser avec un lien de suivi par image, consultez la %1$sDocumentation de l'API de suivi%2$s.",
"ImageTrackingLink": "Lien de suivi par image",
"ImportFromGoogleAnalytics": "Importer depuis Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Si vous avez une propriété Google Analytics et que vous passez à Matomo, vous pouvez importer vos données existantes en utilisant le %1$splugin GoogleAnalyticsImporter%2$s.",
+ "ImportFromGoogleAnalyticsDescription": "Si vous avez une propriété Google Analytics et que vous passez à Matomo, vous pouvez importer vos données existantes en utilisant l'extension %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Importation des logs du serveur",
"ImportingServerLogsDesc": "Une alternative au suivi des visiteurs via leur navigateur (par JavaScript ou par image) est d'importer de manière continue les logs du serveur. Apprenez-en plus à propos des %1$sstatistiques via les logs serveur%2$s.",
- "InvalidPluginsWarning": "Les plugins suivants ne sont pas compatibles avec %1$s et ne peuvent pas être chargés : %2$s.",
- "InvalidPluginsYouCanUninstall": "Vous pouvez mettre à jour ou désinstaller ces plugins sur la page %1$sManagePlugins%2$s.",
+ "InvalidPluginsWarning": "Les extensions suivantes ne sont pas compatibles avec %1$s et ne peuvent pas être chargées : %2$s.",
+ "InvalidPluginsYouCanUninstall": "Vous pouvez mettre à jour ou désinstaller ces extensions sur la page %1$sExtensions%2$s.",
"JSTrackingIntro1": "Vous pouvez suivre les visiteurs de votre site web de différentes manières. La méthode recommandée est de le faire via JavaScript. Pour utiliser cette méthode, vous devez vous assurer que chaque page de votre site web contient du code JavaScript ; que vous pouvez générer ici.",
"JSTrackingIntro2": "Une fois que vous avez le code de suivi JavaScript pour votre site web, copiez-collez le sur toutes les pages dont vous voulez effectuer le suivi avec Matomo.",
- "JSTrackingIntro3a": "Dans la plupart des sites web, blogs, CMS, etc. vous pouvez utiliser un plugin pour faire le travail technique à votre place (voir notre %1$sliste de plugins existants pour intégrer Matomo%2$s.)",
- "JSTrackingIntro3b": "Si aucun plug-in n'existe, vous pouvez modifier vos modèles de site Web et ajouter le code de suivi JavaScript au fichier &lt;/head&gt; balise qui est souvent définie dans un fichier de modèle 'header.php', 'header.tpl' ou similaire.",
+ "JSTrackingIntro3a": "Dans la plupart des sites web, blogs, CMS, etc. vous pouvez utiliser un extension pour faire le travail technique à votre place (voir notre %1$sliste d'extensions existantes pour intégrer Matomo%2$s.)",
+ "JSTrackingIntro3b": "Si aucune extension n'existe, vous pouvez modifier les pages modèles du site Web et placer le code de suivi JavaScript dans la balise &lt;/head&gt; qui se trouve souvent dans un fichier de modèle 'header.php', 'header.tpl' ou similaire.",
"JSTrackingIntro4": "Si vous ne souhaitez pas utiliser JavaScript pour effectuer le suivi des visiteurs, %1$sgénérez un lien de suivi par image ci-dessous%2$s.",
"JSTrackingIntro5": "Si vous voulez faire plus qu'effectuer le suivi des visites de pages, veuillez consulter %1$sla documentation Matomo JavaScript Tracking%2$s pour connaître la liste des fonctions disponibles. En utilisant ces fonctions vous pouvez effectuer le suivi des objectifs, variables personnalisées, commandes de e-commerce, chariots/paniers abandonnés et plus encore.",
"JSTracking_CampaignKwdParam": "Paramètre de la campagne de mot-clé",
"JSTracking_CampaignNameParam": "Paramètre nom de la campagne",
"JSTracking_CodeNoteBeforeClosingHead": "Vérifiez que ce code est présent sur l'ensemble des pages de votre site web. Nous vous recommandons de le placer immédiatement avant la balise de fermeture %1$s.",
- "JSTracking_CodeNoteBeforeClosingHeadEmail": "Assurez-vous que ce code est intégré dans un élément de script sur chaque page de votre site web. Nous vous conseillons de le coller juste avant la balise de fermeture des entêtes 'head'.",
- "JSTracking_CrossDomain": "Par défaut, l'ID du visiteur qui identifie un visiteur unique est stocké dans les cookies de premier niveau ne peuvant uniquement être accédés par des pages du même domaine. Activer l'association croisée des domaines vous permet de suivre toutes les actions et vues de pages d'un visiteur spécifique sur plusieurs domaines. Quand un utilisateur clique sur le lien vers une des URL alias de votre site web, cela va ajouter un paramètre d'URL pk_vid faisant suivre l'ID du visiteur.",
- "JSTracking_CrossDomain_NeedsMultipleDomains": "Note : pour utiliser la liaison inter-domaine, vous devez spécifier plus qu'un nom de domaine (URLs) pour votre site web.",
+ "JSTracking_CodeNoteBeforeClosingHeadEmail": "Assurez-vous que ce code est intégré dans un élément de script sur chaque page de votre site web. Nous vous conseillons de le coller juste avant la balise de fermeture « head ».",
+ "JSTracking_CrossDomain": "Par défaut, l'ID du visiteur qui identifie un visiteur unique est stocké dans les cookies de premier niveau du navigateur qui sont accessible uniquement aux pages du même domaine. Activer les cookies inter- domaines vous permet de suivre toutes les actions et vues de pages d'un visiteur spécifique sur plusieurs domaines. Quand un utilisateur clique sur le lien vers une des URL alias de votre site web, cela va ajouter un paramètre d'URL pk_vid faisant suivre l'ID du visiteur.",
+ "JSTracking_CrossDomain_NeedsMultipleDomains": "Note : pour utiliser les cookies inter-domaine, vous devez spécifier plus qu'un nom de domaine (URL) pour votre site web.",
"JSTracking_CustomCampaignQueryParam": "Utilisez des paramètres de requête personnalisés pour le nom et le mot-clé de la campagne",
"JSTracking_CustomCampaignQueryParamDesc": "Note : %1$sMatomo détectera automatiquement les paramètres de Google Analytics.%2$s",
"JSTracking_DisableCookies": "Désactiver tous les cookies de suivi",
- "JSTracking_DisableCookiesDesc": "Désactive tous les cookies de première partie. Les cookies Matomo existants pour ce site web seront supprimés lors de la prochaine visite de la page.",
- "JSTracking_EnableCrossDomainLinking": "Active l'association croisée des domaines",
- "JSTracking_EnableDoNotTrack": "Activer la détection côté client de \"ne pas suivre\"",
- "JSTracking_EnableDoNotTrackDesc": "Donc les requêtes de suivi ne seront pas envoyées si les visiteurs ne souhaitent pas être suivis.",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Note : Le support de la détection côté serveur de \"ne pas suivre\" est activé, cette option n'aura donc aucun effet.",
- "JSTracking_EndNote": "Note : vous pouvez générer un code de suivi personnalisé dans la section d'administration %1$sCode de suivi%2$s.",
+ "JSTracking_DisableCookiesDesc": "Désactive tous les cookies originaux. Les cookies Matomo existants pour ce site web seront supprimés lors de la prochaine visite de la page.",
+ "JSTracking_EnableCrossDomainLinking": "Active les cookies inter-domaines",
+ "JSTracking_EnableDoNotTrack": "Activer la détection côté client de « ne pas suivre »",
+ "JSTracking_EnableDoNotTrackDesc": "Ainsi, les requêtes de suivi ne seront pas envoyées si les visiteurs ne le souhaitent pas.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Note : la détection côté serveur de « ne pas suivre » est activée, cette option n'aura donc aucun effet.",
+ "JSTracking_EndNote": "Note : vous pouvez générer un code de suivi personnalisé dans la section d'administration %1$sCode de suivi%2$s.",
"JSTracking_GroupPageTitlesByDomain": "Préfixer le domaine du site au titre de la page lors du suivi",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Si un internaute visite la page \"À propos\" sur blog.%1$s, la visite sera enregistrée en tant que \"blog / À propos\". C'est la manière la plus facile d'avoir un aperçu du trafic par sous-domaine.",
- "JSTracking_MergeAliases": "Dans le rapport des liens sortants, cacher les clics vers des alias d'adresses connues telles que",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Si un internaute visite la page « À propos » sur le blog.%1$s, la visite sera enregistrée en tant que « blog / À propos ». C'est la manière la plus facile d'avoir un aperçu du trafic par sous-domaine.",
+ "JSTracking_MergeAliases": "Dans le rapport des liens sortants, masquer les clics vers des alias d'adresses connues telles que",
"JSTracking_MergeAliasesDesc": "Ainsi un clic sur les adresses d'alias (ex %s) ne sera pas compté comme un lien sortant.",
"JSTracking_MergeSubdomains": "Suivre les visiteurs sur tous les sous-domaines de",
"JSTracking_MergeSubdomainsDesc": "Ainsi si un visiteur visite %1$s et %2$s, cela sera comptabilisé comme une visite unique.",
"JSTracking_PageCustomVars": "Suivre une variable personnalisée pour chaque affichage de page",
- "JSTracking_PageCustomVarsDesc": "Par exemple, avec une variable nommée \"categorie\" et la valeur \"livre blancs\".",
- "JSTracking_TrackNoScript": "Suivre les utilisateurs qui n'ont pas activé JavaScript",
+ "JSTracking_PageCustomVarsDesc": "Par exemple, avec une variable nommée « categorie » et la valeur « livre blancs ».",
+ "JSTracking_TrackNoScript": "Suivre les utilisateurs qui ont désactivé JavaScript",
"JSTracking_VisitorCustomVars": "Effectuer le suivi des variables personnalisées pour ce visiteur",
- "JSTracking_VisitorCustomVarsDesc": "Par exemple, avec une variable nommée \"type\" et la valeur \"client\".",
+ "JSTracking_VisitorCustomVarsDesc": "Par exemple, avec une variable nommée « type » et la valeur « client ».",
"JavaScriptTracking": "Suivi par JavaScript",
- "JsTrackingCodeMissingEmail1": "Il y a quelques jours vous avez ajouté le site web '%s' à votre Matomo. Nous venons de vérifier et il semble que votre Matomo n'aie pas enregistré de trafic pour ce site web.",
+ "JsTrackingCodeMissingEmail1": "Il y a quelques jours vous avez ajouté le site web '%s' à votre Matomo. Nous venons de vérifier et il semble que votre Matomo n'ait pas enregistré de trafic pour ce site web.",
"JsTrackingCodeMissingEmail2": "Pour commencer à suivre les données et obtenir des informations sur vos utilisateurs, vous devez configurer le suivi sur votre site Web ou votre application mobile. Pour les sites Web, intégrez simplement le code de suivi juste avant la balise %s.",
"JsTrackingCodeMissingEmail3": "Afin de trouver et de personnaliser votre code de suivi, %1$scliquez ici%2$s (or bien consultez le %3$sguide du client JavaScript de suivi %4$s).",
- "LearnMore": "En apprendre plus",
- "LogoNotWriteableInstruction": "Afin d'utiliser votre logo personnalité au lieu du logo par défaut Matomo, ajoutez des permissions à ce répertoire : %1$s Matomo a besoin d'un accès en écriture à vos logos stockés dans les fichiers %2$s.",
- "LogoUpload": "Sélectionnez le logo à télécharger",
- "LogoUploadFailed": "Le fichier téléversé n'a pas pu être pris en compte. Veuillez vérifier que le fichier a un format valide.",
- "LogoUploadHelp": "Veuillez télécharger un fichier dans un des formats suivants %1$s avec une hauteur minimale de %2$s pixels.",
- "LtsReleases": "Les versions LTS (Long Term Support) ne reçoivent que des corrections de sécurité et de bogues.",
+ "LearnMore": "En savoir plus",
+ "LogoNotWriteableInstruction": "Afin d'utiliser votre logo personnalité au lieu du logo par défaut Matomo, modifiez des permissions de ce répertoire : %1$s Matomo a besoin d'un accès en écriture à vos logos stockés dans les fichiers %2$s.",
+ "LogoUpload": "Sélectionnez le logo à téléverser",
+ "LogoUploadFailed": "Le fichier téléversé n'a pas pu être traité. Veuillez vérifier que le fichier est d'un format valide.",
+ "LogoUploadHelp": "Veuillez téléverser un fichier dans un des formats suivants %1$s avec une hauteur minimale de %2$s pixels.",
+ "LtsReleases": "Les versions LTS (Long Term Support) ne reçoivent que des correctifs de sécurité et de bogues.",
"MenuDevelopment": "Développement",
- "MenuDiagnostic": "Diagnostique",
+ "MenuDiagnostic": "Diagnostic",
"MenuGeneralSettings": "Paramètres généraux",
"MenuMeasurables": "Éléments mesurables",
"MenuSystem": "Système",
@@ -86,35 +86,35 @@
"NTrackingFailures": "%s erreurs de suivi",
"NoKnownFailures": "Il n'y a aucune erreur de suivi connue.",
"OptOutComplete": "Cookie d'exclusion installé. Vos visites sur ce site web ne seront PAS enregistrées par notre outil d'analyse web.",
- "OptOutCompleteBis": "Note : si vous nettoyez vos cookies et supprimez le cookie d'exclusion, ou bien si vous changez d'ordinateur et/ou de navigateur, il vous faudra de nouveau effectuer la procédure d'exclusion.",
- "OptOutDntFound": "Vous n'êtes pas suivi parce que votre navigateur transmet que vous ne voulez pas l'être. Ceci est un paramètre de votre navigateur et vous ne serez pas en mesure de participer avant d'avoir désactivé la fonctionnalité \"ne pas suivre\".",
+ "OptOutCompleteBis": "Note : si vous nettoyez vos cookies et supprimez le cookie d'exclusion, ou bien si vous changez d'ordinateur et/ou de navigateur, il vous faudra de nouveau effectuer la procédure d'exclusion.",
+ "OptOutDntFound": "Vous n'êtes pas suivi parce que votre navigateur indique que vous ne voulez pas l'être. Ceci est un paramètre de votre navigateur et vous ne serez pas en mesure de participer avant d'avoir désactivé la fonctionnalité « ne pas suivre ».",
"OptOutErrorNoCookies": "La fonctionnalité de désactivation du suivi nécessite que les cookies soient autorisés.",
"OptOutErrorNotHttps": "La fonctionnalité de désactivation du suivi pourrait ne pas fonctionner car ce site n'a pas été chargé en HTTPS. Veuillez recharger la page pour vérifier que le statut de ce suivi a bien été changé.",
"OptOutErrorWindowOpen": "La fonctionnalité de désactivation du suivi pourrait ne pas marcher car il semble que la popup de désactivation a été bloquée. Veuillez recharger la page pour vérifier que le statut a bien été changé.",
- "OptOutExplanation": "Matomo met un point d'honneur à respecter la vie privée sur Internet. Pour fournir à vos visiteurs le choix de ne pas apparaître dans les analyses de Matomo, vous pouvez ajouter le code HTML suivant sur une des pages de votre site web, par exemple dans la page \"Politique de confidentialité\".",
- "OptOutExplanationIntro": "Ce code affichera une iFrame contenant un lien permettant à vos visiteurs de se désinscrire de Matomo en plaçant un cookie de désinscription dans leur navigateur web. Voir ci-dessous (ou %1$sclick here%2$s) pour visualiser le contenu qui sera affiché par l'iFrame.",
- "OptOutForYourVisitors": "Exclusion de Matomo pour vos visiteurs",
- "OptingYouOut": "Désinscription en cours, veuillez patienter…",
- "PersonalPluginSettings": "Paramètres personnel de plugins",
+ "OptOutExplanation": "Matomo met un point d'honneur à respecter la vie privée sur l'Internet. Pour fournir à vos visiteurs le choix de ne pas apparaître dans les analyses de Matomo, vous pouvez ajouter le code HTML suivant sur une des pages de votre site web, par exemple dans la page « Politique de confidentialité ».",
+ "OptOutExplanationIntro": "Ce code affichera un cadre interne (iFrame) contenant un lien permettant à vos visiteurs de ne pas être suivis par Matomo en plaçant un cookie de désactivation dans leur navigateur web. Voir ci-dessous (ou %1$scliquez icie%2$s) pour visualiser le contenu qui sera affiché par ce cadre.",
+ "OptOutForYourVisitors": "Désactivation de Matomo pour vos visiteurs",
+ "OptingYouOut": "Désactivation en cours, veuillez patienter…",
+ "PersonalPluginSettings": "Paramètres personnels d'extension",
"PiwikIsInstalledAt": "Matomo est installé à l'adresse",
- "PluginSettingChangeNotAllowed": "Vous n'êtes pas autorisé(e) à modifier la valeur du paramètre \"%1$s\" du plugin \"%2$s\"",
- "PluginSettingReadNotAllowed": "Vous n'êtes pas autorisé(e) à voir la valeur du paramètre \"%1$s\" dans le plugin \"%2$s\"",
- "PluginSettings": "Paramètres des plugins",
- "PluginSettingsIntro": "Ici vous pouvez modifier les paramètres des composants tierce partie suivants :",
- "PluginSettingsSaveFailed": "Impossible de sauvegarder les paramètres du plugin",
- "PluginSettingsSaveSuccess": "Paramètres du plugins mis à jour.",
- "PluginSettingsValueNotAllowed": "La valeur du champ \"%1$s\" dans le plugin \"%2$s\" n'est pas autorisée",
+ "PluginSettingChangeNotAllowed": "Vous n'avez pas l'autorisation de modifier la valeur du paramètre \"%1$s\" de l'extension \"%2$s\"",
+ "PluginSettingReadNotAllowed": "Vous n'avez pas l'autorisation de voir la valeur du paramètre \"%1$s\" de l'extension \"%2$s\"",
+ "PluginSettings": "Paramètres des extensions",
+ "PluginSettingsIntro": "Vous pouvez modifier ici les paramètres des extensions tierces suivantes :",
+ "PluginSettingsSaveFailed": "Impossible d'enregistrer les paramètres de l'extension",
+ "PluginSettingsSaveSuccess": "Paramètres de l'extension mis à jour.",
+ "PluginSettingsValueNotAllowed": "La valeur du champ \"%1$s\" dans l'extension \"%2$s\" n'est pas autorisée",
"Problem": "Problème",
- "ProtocolNotDetectedCorrectly": "Vous visualisez actuellement Matomo via une connexion SSL sécurisée (en utilisant HTTPS), mais Matomo n'a pu détecter qu'une connexion non sécurisée sur le serveur.",
- "ProtocolNotDetectedCorrectlySolution": "Afin de vous assurer que Matomo demande et sever votre contenu de manière sécurisée au travers du protocole HTTPS, vous devriez éditer votre fichier %1$s et configuration vos paramètres de proxy ou bien vous pouvez ajouter la ligne %2$s sous la section %3$s %4$sEn savoir plus%5$s",
- "ReleaseChannel": "Canal de sortie",
+ "ProtocolNotDetectedCorrectly": "Vous affichez actuellement Matomo via une connexion SSL sécurisée (en utilisant HTTPS), mais Matomo ne peut détecter qu'une connexion non sécurisée sur le serveur.",
+ "ProtocolNotDetectedCorrectlySolution": "Afin de vous assurer que Matomo demande et serve votre contenu de manière sécurisée via HTTPS, vous devriez modifier votre fichier %1$s et soit configurer vos paramètres de proxy, soit ajouter la ligne %2$s sous la section %3$s %4$sen savoir plus%5$s",
+ "ReleaseChannel": "Canal de publication",
"SecurityNotificationAllTokenAuthDeletedBody": "Quelqu'un a supprimé tous les jetons d'authentification de votre compte.",
- "SecurityNotificationCheckTwoFactor": "Veuillez vérifier votre application ou appareil d'authentification à deux facteurs.",
+ "SecurityNotificationCheckTwoFactor": "Veuillez vérifier votre application ou appareil pour l'authentification à deux facteurs.",
"SecurityNotificationEmailSubject": "Notification de sécurité",
"SecurityNotificationIfItWasYou": "Si c'était vous, continuez. Si vous ne reconnaissez pas cette activité, veuillez réinitialiser votre mot de passe.",
"SecurityNotificationRecoveryCodesRegeneratedBody": "Quelqu'un a généré de nouveaux codes de récupération d'authentification à deux facteurs pour votre compte.",
"SecurityNotificationRecoveryCodesShowedBody": "Quelqu'un a consulté les codes de récupération d'authentification à deux facteurs de votre compte.",
- "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Un autre super utilisateur (%1$s) a modifié les paramètres système. Paramètres concernés : %2$s. Si vous connaissez cette activité, continuez. Si vous ne reconnaissez pas cette activité, veuillez contacter les autres super utilisateurs.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Un autre super utilisateur (%1$s) a modifié les paramètres système. Paramètres concernés : %2$s. Si vous êtes au courant de cette activité, continuez. Si vous ne l'êtes pas, veuillez contacter les autres super utilisateurs.",
"SecurityNotificationSettingsChangedByUserBody": "Quelqu'un a modifié les paramètres du système. Paramètres concernés : %s.",
"SecurityNotificationTokenAuthCreatedBody": "Quelqu'un a créé un jeton d'authentification (description : %s) dans votre compte. Si ce n'est pas vous, supprimez le jeton.",
"SecurityNotificationTokenAuthDeletedBody": "Quelqu'un a supprimé un jeton d'authentification (description : %s) dans votre compte.",
@@ -122,30 +122,30 @@
"SecurityNotificationTwoFactorAuthEnabledBody": "Quelqu'un a activé l'authentification à deux facteurs dans votre compte.",
"SecurityNotificationUserCreatedBody": "Quelqu'un a créé un nouvel utilisateur (connexion : %s) dans votre compte.",
"SecurityNotificationUserDeletedBody": "Quelqu'un a supprimé un utilisateur (connexion : %s) de votre compte.",
- "SendPluginUpdateCommunication": "Envoyer un courriel lorsqu'une mise à jour d'un composant est disponible",
- "SendPluginUpdateCommunicationHelp": "Un courriel sera envoyé aux super utilisateurs quand une nouvelle version de plugin sera disponible.",
+ "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.",
"Solution": "solution",
- "StableReleases": "Si Matomo représente une part critique de vos affaires, nous vous recommandons d'utiliser la dernière version stable. Si vous utilisez la dernière version et que vous trouverez un bug ou avez une suggestion, %1$scliquez ici%2$s svp.",
- "SystemPluginSettings": "Paramètres système de plugins",
+ "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",
"TrackAGoal": "Effectuer le suivi d'un objectif",
"TrackingCode": "Code de suivi",
"TrackingCodeIntro": "Matomo vous permet d'intégrer le code de suivi dans votre site web, application mobile ou même pour n'importe quel périphérique ou application de plusieurs manières.",
- "TrackingFailureAuthenticationProblem": "La requête n'était pas authentifiée mais une demande d'authentification a été présentée.",
- "TrackingFailureAuthenticationSolution": "Définissez or corrigez le \"token_auth\" dans vos requêtes de suivi.",
+ "TrackingFailureAuthenticationProblem": "La requête n'était pas authentifiée alors qu'elle était requise.",
+ "TrackingFailureAuthenticationSolution": "Définissez ou corrigez « token_auth » dans vos requêtes de suivi.",
"TrackingFailureInvalidSiteProblem": "Ce site n'existe pas.",
- "TrackingFailureInvalidSiteSolution": "Mettez à jour le idSite configuré dans le traceur.",
+ "TrackingFailureInvalidSiteSolution": "Mettez à jour le idSite configuré.",
"TrackingFailures": "Erreurs de suivi",
- "TrackingFailuresEmail1": "C'est simplement pour vous avertir %s sortes différentes d'erreurs de suivi sont survenues ces derniers jours.",
- "TrackingFailuresEmail2": "Afin de visualiser toutes les erreurs de suivi %1$s cliquez ici %2$s.",
+ "TrackingFailuresEmail1": "C'est simplement pour vous avertir que %s différents types d'erreurs de suivi sont survenus ces derniers jours.",
+ "TrackingFailuresEmail2": "Afin de visualiser toutes les erreurs de suivi %1$scliquez ici%2$s.",
"TrackingFailuresEmailSubject": "Erreurs de suivi dans Matomo",
- "TrackingFailuresIntroduction": "Cette page répertorie toutes les erreurs de suivi qui sont arrivées durant les %s derniers jours. Veuillez noter qu'uniquement les erreurs les plus connues sont enregistrées et non toutes.",
+ "TrackingFailuresIntroduction": "Cette page répertorie les erreurs de suivi apparues durant les %s derniers jours. Veuillez noter que toutes les erreurs ne sont pas enregistrées mais uniquement les types les plus courants.",
"TrackingURL": "URL de suivi",
- "TrustedHostConfirm": "Êtes-vous sûr(e) de vouloir changer le nom d'hôte autorisé ?",
- "TrustedHostSettings": "Nom d'hôte",
+ "TrustedHostConfirm": "Voulez-vous vraiment modifier le nom d'hôte de confiance ?",
+ "TrustedHostSettings": "Nom d'hôte de confiance de Matomo",
"TwoFactorAuth": "Authentification à deux facteurs",
- "UiDemo": "Demo interface utilisateur",
- "UncheckToOptOut": "Décochez cette case pour être exclu(e).",
+ "UiDemo": "Démo d'interface utilisateur",
+ "UncheckToOptOut": "Décochez cette case pour vous exclure.",
"UpdateSettings": "Paramètres de mise à jour",
"UseCustomLogo": "Utiliser un logo personnalisé",
"ValidPiwikHostname": "Nom d'hôte Matomo valide",
@@ -155,7 +155,7 @@
"WhatIsNewNoChangesTitle": "Aucun changement récent",
"WhatIsNewTitle": "Voici les nouveautés de Matomo",
"WhatIsNewTooltip": "Découvrez les nouveautés de Matomo",
- "WithOptionalRevenue": "avec revenu optimal",
+ "WithOptionalRevenue": "avec revenu optionnel",
"YouAreNotOptedOut": "Vous n'êtes pas exclu(e).",
"YouAreOptedOut": "Vous n'êtes actuellement pas suivi(e).",
"YouMayOptOut": "Vous pouvez choisir ici de NE PAS autoriser le suivi de votre ordinateur via un cookie lui assignant un numéro d'identification unique. Notre outil d'analyse web n'enregistrera pas l'activité de votre ordinateur.",
diff --git a/plugins/CoreAdminHome/lang/hi.json b/plugins/CoreAdminHome/lang/hi.json
index 2a16a49df5..b2fba30910 100644
--- a/plugins/CoreAdminHome/lang/hi.json
+++ b/plugins/CoreAdminHome/lang/hi.json
@@ -16,16 +16,18 @@
"ImageTrackingLink": "इमेज ट्रैकिंग का लिंक",
"ImportingServerLogs": "सर्वर लॉग्स का आयात",
"ImportingServerLogsDesc": "ब्राउज़र (या तो जावास्क्रिप्ट या एक छवि लिंक के माध्यम से) के माध्यम से दर्शकों ट्रैकिंग के लिए एक विकल्प लगातार सर्वर लॉग आयात है. सर्वर %1$s लॉग फ़ाइल एनालिटिक्स %2$s के बारे में अधिक जानें.",
- "JavaScriptTracking": "जावास्क्रिप्ट ट्रैकिंग",
+ "JSTrackingIntro2": "एक बार जब आप अपनी वेबसाइट के लिए जावास्क्रिप्ट ट्रैकिंग कोड है कॉपी और सभी पृष्ठों पर जोड़ दें आप Matomo के साथ ट्रैक करना चाहते हैं",
+ "JSTrackingIntro4": "आप आगंतुकों को ट्रैक करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहते हैं, %1$s तो नीचे एक छवि ट्रैकिंग %2$s लिंक उत्पन्न करते हैं.",
+ "JSTrackingIntro5": "आप ट्रैक पृष्ठ विचारों से अधिक करना चाहते हैं, उपलब्ध कार्यों की सूची के लिए %1$s Matomo जावास्क्रिप्ट ट्रैकिंग दस्तावेज़ीकरण %2$s की जाँच करें. इन कार्यों का उपयोग कर आप लक्ष्यों, कस्टम चर, ईकॉमर्स आदेश, परित्यक्त गाड़ियां और अधिक ट्रैक कर सकते हैं.",
"JSTracking_CampaignKwdParam": "अभियान खोजशब्द प्राचल",
"JSTracking_CampaignNameParam": "अभियान का नाम प्राचल",
"JSTracking_CustomCampaignQueryParam": "अभियान का नाम और कीवर्ड के लिए कस्टम क्वेरी प्राचल नाम का प्रयोग करें",
"JSTracking_CustomCampaignQueryParamDesc": "नोट: %1$s Matomo स्वतः गूगल एनालिटिक्स मापदंडों की पहचान करेगा.%2$s",
"JSTracking_EnableDoNotTrack": "ग्राहक की ओर \"ट्रैक नहीं\" का पता लगाना सक्षम",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "नोट: सर्वर साइड, समर्थन सक्षम किया गया है \"ट्रैक नहीं\" इसलिए इस विकल्प का कोई प्रभाव नहीं पड़ेगा.",
"JSTracking_EnableDoNotTrackDesc": "आगंतुकों को ट्रैक करना नहीं चाहते हैं तो ट्रैकिंग अनुरोध को नहीं भेजा जाएगा.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "नोट: सर्वर साइड, समर्थन सक्षम किया गया है \"ट्रैक नहीं\" इसलिए इस विकल्प का कोई प्रभाव नहीं पड़ेगा.",
"JSTracking_GroupPageTitlesByDomain": "ट्रैकिंग से पहले साइट डोमेन पृष्ठ शीर्षक में जोड़े",
- "JSTracking_GroupPageTitlesByDomainDesc1": "किसी के ब्लॉग पर 'के बारे में' पृष्ठ पर जाता है तो अगर. %1$s यह ब्लॉग के बारे में \/ 'के रूप में दर्ज किया जाएगा. इस उप डोमेन से अपने यातायात का अवलोकन प्राप्त करने के लिए सबसे आसान तरीका है.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "किसी के ब्लॉग पर 'के बारे में' पृष्ठ पर जाता है तो अगर. %1$s यह ब्लॉग के बारे में / 'के रूप में दर्ज किया जाएगा. इस उप डोमेन से अपने यातायात का अवलोकन प्राप्त करने के लिए सबसे आसान तरीका है.",
"JSTracking_MergeAliases": "\"आउटलिंक\" रिपोर्ट में,",
"JSTracking_MergeSubdomains": "के सभी उप डोमेंस भर में आगंतुकों खोज",
"JSTracking_MergeSubdomainsDesc": "तो एक आगंतुक का दौरा %1$s और %2$s अगर वे एक अद्वितीय आगंतुक के रूप में गिना जाएगा.",
@@ -33,9 +35,7 @@
"JSTracking_PageCustomVarsDesc": "उदाहरण के लिए, चर नाम \"श्रेणी\" के साथ और मूल्य \"श्वेत पत्र\".",
"JSTracking_VisitorCustomVars": "इस आगंतुक के लिए कस्टम चर खोजे",
"JSTracking_VisitorCustomVarsDesc": "उदाहरण के लिए, चर नाम \"प्रकार\" के साथ और मूल्य \"ग्राहक\".",
- "JSTrackingIntro2": "एक बार जब आप अपनी वेबसाइट के लिए जावास्क्रिप्ट ट्रैकिंग कोड है कॉपी और सभी पृष्ठों पर जोड़ दें आप Matomo के साथ ट्रैक करना चाहते हैं",
- "JSTrackingIntro4": "आप आगंतुकों को ट्रैक करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना चाहते हैं, %1$s तो नीचे एक छवि ट्रैकिंग %2$s लिंक उत्पन्न करते हैं.",
- "JSTrackingIntro5": "आप ट्रैक पृष्ठ विचारों से अधिक करना चाहते हैं, उपलब्ध कार्यों की सूची के लिए %1$s Matomo जावास्क्रिप्ट ट्रैकिंग दस्तावेज़ीकरण %2$s की जाँच करें. इन कार्यों का उपयोग कर आप लक्ष्यों, कस्टम चर, ईकॉमर्स आदेश, परित्यक्त गाड़ियां और अधिक ट्रैक कर सकते हैं.",
+ "JavaScriptTracking": "जावास्क्रिप्ट ट्रैकिंग",
"LogoUpload": "अपलोड करने के लिए किसी लोगो को चुनें",
"MenuDiagnostic": "डायग्नोस्टिक",
"MenuGeneralSettings": "सामान्य सेटिंग्स",
@@ -45,6 +45,7 @@
"OptOutDntFound": "आप अपने ब्राउज़र आप नहीं करना चाहते हैं कि रिपोर्ट कर रहा है के बाद से नज़र रखी जा रही नहीं कर रहे हैं । आप ' ट्रैक न करें' सुविधा का प्रयोग नहीं जब तक आप चुनते में करने में सक्षम नहीं होगा, तो यह आपके ब्राउजर की एक सेटिंग है।",
"OptOutExplanation": "Matomo इंटरनेट पर गोपनीयता प्रदान करने के लिए समर्पित है. Matomo वेब विश्लेषिकी से बाहर निकलने के विकल्प के साथ अपने आगंतुकों प्रदान करने के लिए, आप अपनी वेबसाइट के पेज में से एक पर निम्नलिखित HTML कोड जोड़ सकते हैं, एक गोपनीयता नीति पेज में उदाहरण के लिए.",
"OptOutForYourVisitors": "अपने दर्शकों के लिए Matomo ऑप्ट आउट",
+ "OptingYouOut": "आप छोड़ने पर, कृपया प्रतीक्षा करें …",
"PiwikIsInstalledAt": "Matomo में स्थापित किया गया है",
"StableReleases": "Matomo अपने व्यापार का एक महत्वपूर्ण हिस्सा है, तो हम आपको नवीनतम स्थिर रिलीज उपयोग की सलाह देते हैं. आप नवीनतम बीटा का उपयोग करें और आप एक बग मिल या एक सलाह देना चाहते हैं, %1$sयहां देखें%2$s.",
"TrackAGoal": "एक लक्ष्य की खोज",
@@ -56,7 +57,6 @@
"WithOptionalRevenue": "वैकल्पिक राजस्व के साथ",
"YouAreOptedOut": "आप वर्तमान में बाहर निकले जाते हैं.",
"YouMayOptOut": "आप इस वेबसाइट पर एकत्र आंकड़ों का एकत्रीकरण और विश्लेषण से बचने के लिए अपने कंप्यूटर के लिए आवंटित एक अद्वितीय वेब विश्लेषण कुकी पहचान संख्या नहीं चुन सकते हैं.",
- "YouMayOptOutBis": "उसे विकल्प बनाने के लिए, कुकी को प्राप्त करने के लिए नीचे क्लिक करें.",
- "OptingYouOut": "आप छोड़ने पर, कृपया प्रतीक्षा करें ..."
+ "YouMayOptOutBis": "उसे विकल्प बनाने के लिए, कुकी को प्राप्त करने के लिए नीचे क्लिक करें."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/hu.json b/plugins/CoreAdminHome/lang/hu.json
index 8e639ddb00..e8f75ab949 100644
--- a/plugins/CoreAdminHome/lang/hu.json
+++ b/plugins/CoreAdminHome/lang/hu.json
@@ -4,12 +4,14 @@
"Administration": "Adminisztráció",
"ArchivingSettings": "Archiválási beállítások",
"BrandingSettings": "Arculat beállítások",
- "ReleaseChannel": "Release csatorna",
+ "CheckToOptIn": "Pipálja be a követés engedélyezéséhez.",
"ClickHereToOptIn": "Kattintson ide a bekapcsoláshoz.",
"ClickHereToOptOut": "Kattintson ide a kikapcsoláshoz.",
"CustomLogoFeedbackInfo": "A Matomo logó konfigurálása esetén érdekes lehet a felső menüben található %1$s link eltávolítása is. Ehhez a %2$sBővítmények%3$s oldalon ki kell kapcsolni a Feedback bővítményt.",
"CustomLogoHelpText": "A felhasználói felületen és az e-mail jelentésekben megjelenő Matomo logó testreszabható.",
"EmailServerSettings": "E-mail szerver beállítások",
+ "FaviconUpload": "Válasszon egy Favicon-t a feltöltéshez",
+ "FileUploadDisabled": "A fájlfeltöltés nincs engedélyezve a PHP konfigurációban. Egyedi logó feltöltéséhez be kell állítani a php.ini fájlban a következőt: %s. A webszerver újraindítása is szükséges lehet.",
"ForBetaTestersOnly": "Csak béta tesztelőknek",
"ImageTracking": "Kép Követés",
"ImageTrackingIntro1": "Ha egy látogatónál le van tiltva a JavaScript, vagy JavaScript egyéb okokból nem használható, lehetőség van egy kép követési link segítségével követni a látogatókat.",
@@ -20,7 +22,9 @@
"ImportingServerLogsDesc": "A látogatók böngésző (JavaScript vagy kép) általi követése helyett lehetőség van a szervernaplók folyamatos importálására. További részletek: %1$sSzervernapló analízis%2$s.",
"InvalidPluginsWarning": "A következő bővítmény nem kompatibilisek evvel: %1$s ezért nem lehet őket betölteni: %2$s.",
"InvalidPluginsYouCanUninstall": "A bővítmények frissíthetők vagy törölhetők a %1$sBővítmények%2$s oldalon.",
- "JavaScriptTracking": "JavaScript Követés",
+ "JSTrackingIntro2": "A lent látható generált kódnak (vagy annak egy módosított változatának) szerepelnie kell minden oldalon, amit a Matomonek követnie kell.",
+ "JSTrackingIntro4": "JavaScript követés helyett lehetőség van kép alapú követés használatára is, mely %1$saz alábbi linkre kattintva generálható%2$s.",
+ "JSTrackingIntro5": "Ha az oldalmegtekintések követése nem elég, tekintse meg a %1$sMatomo Javascript Követés dokumentációt%2$s a további funkciókért. Ezek használatával lehetőség van egyéni célok, saját változók, ecommerce rendelések, otthagyott bevásárló kosarak, stb, követésére.",
"JSTracking_CampaignKwdParam": "Kampány Kulcsszó paraméter",
"JSTracking_CampaignNameParam": "Kampány Név paraméter",
"JSTracking_CustomCampaignQueryParam": "Saját paraméter nevek használata a kampány név és a kulcsszó mezőkhöz",
@@ -28,10 +32,10 @@
"JSTracking_DisableCookies": "Minden követő süti tiltása",
"JSTracking_DisableCookiesDesc": "Letilt minden első féltől származó sütit. A már meglévő sütik a következő oldalbetöltéskor törlődni fognak.",
"JSTracking_EnableDoNotTrack": "Kliens oldali DoNotTrack engedélyezése",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Megjegyzés: A szerver oldali DoNotTrack már engedélyezve van, így ennek az opciónak arra nincs hatása.",
"JSTracking_EnableDoNotTrackDesc": "A látogatónak lehetősége van a követés megtiltására, így a követési kérések nem lesznek elküldve.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Megjegyzés: A szerver oldali DoNotTrack már engedélyezve van, így ennek az opciónak arra nincs hatása.",
"JSTracking_GroupPageTitlesByDomain": "Az weboldal domain nevének hozzáfűzése az oldal címéhez",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Ha valaki a 'Rólunk' oldalt látogatja meg a(z) blog.%1$s weboldalon, a naplóban 'blog \/ Rólunk' fog szerepelni. Ez a legegyszerűbb módja a látogatások aldomain szerinti áttekintésének.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Ha valaki a 'Rólunk' oldalt látogatja meg a(z) blog.%1$s weboldalon, a naplóban 'blog / Rólunk' fog szerepelni. Ez a legegyszerűbb módja a látogatások aldomain szerinti áttekintésének.",
"JSTracking_MergeAliases": "A \"Kilépési lapok\" jelentésben az ismert álnevek (URLek) elrejtése a következőnél:",
"JSTracking_MergeAliasesDesc": "Egy álnevet (URLt) (pl. %s) tartalmazó linkre kattintás nem lesz \"Kilépési lapként\" számolva.",
"JSTracking_MergeSubdomains": "Látogatók követése a következő összes aldomainjén:",
@@ -40,55 +44,51 @@
"JSTracking_PageCustomVarsDesc": "Példa: változó: \"Kategória\", érték: \"Újság\".",
"JSTracking_VisitorCustomVars": "Saját változó kovetése látogatónként",
"JSTracking_VisitorCustomVarsDesc": "Példa: változó: \"Típus\", érték: \"Ügyfél\".",
- "JSTrackingIntro2": "A lent látható generált kódnak (vagy annak egy módosított változatának) szerepelnie kell minden oldalon, amit a Matomonek követnie kell.",
- "JSTrackingIntro4": "JavaScript követés helyett lehetőség van kép alapú követés használatára is, mely %1$saz alábbi linkre kattintva generálható%2$s.",
- "JSTrackingIntro5": "Ha az oldalmegtekintések követése nem elég, tekintse meg a %1$sMatomo Javascript Követés dokumentációt%2$s a további funkciókért. Ezek használatával lehetőség van egyéni célok, saját változók, ecommerce rendelések, otthagyott bevásárló kosarak, stb, követésére.",
+ "JavaScriptTracking": "JavaScript Követés",
"LogoNotWriteableInstruction": "Egyedi logó használatához írási jogosultságra van szükség a következő könyvtárhoz: %1$s A logók tárolásához a következőfájlokhoz írási jogosultság szükséges: %2$s.",
- "FileUploadDisabled": "A fájlfeltöltés nincs engedélyezve a PHP konfigurációban. Egyedi logó feltöltéséhez be kell állítani a php.ini fájlban a következőt: %s. A webszerver újraindítása is szükséges lehet.",
- "LogoUploadFailed": "A feltöltött fájl nem feldolgozható. Kérjük ellenőrizze, hogy a fájl formátuma érvényes-e.",
"LogoUpload": "Válasszon egy logót a feltöltéshez",
- "FaviconUpload": "Válasszon egy Favicon-t a feltöltéshez",
+ "LogoUploadFailed": "A feltöltött fájl nem feldolgozható. Kérjük ellenőrizze, hogy a fájl formátuma érvényes-e.",
"LogoUploadHelp": "A feltöltött fájlnak %1$s formátumban, minimum %2$s pixel magasnak kell lennie.",
+ "LtsReleases": "LTS (Hosszútávú támogatás) kiadások csak biztonsági és hibajavítási frissítéseket kapnak",
+ "MenuDevelopment": "Fejlesztés",
"MenuDiagnostic": "Diagnosztika",
"MenuGeneralSettings": "Alapbeállítások",
- "MenuDevelopment": "Fejlesztés",
"MenuMeasurables": "mérhetők",
"OptOutComplete": "Követés kikapcsolva; a látogatások semmilyen statisztikában nem fognak szerepelni.",
"OptOutCompleteBis": "Megjegyzés: abban az esetben, ha a követést tiltó süti törlődik, más számítógépről vagy böngészőből látogatja meg a weboldalt, a követést ismét le kell tiltania.",
"OptOutDntFound": "Ön nem lekövethető, mert a böngészője azt jelzni, hogy ön ezt nem kívánta. Ez az állapot nem fog addig változni, amíg le nem tiltja a 'Do Not Track' funkciót.",
"OptOutExplanation": "A Matomo tiszteletben tartja a magánéletet Internet. Annak érdekében, hogy látogatóinak lehetősége legyen a követés kikapcsolására, helyezze el az alábbi HTML kódot például egy Adatvédelmi Tájékoztató oldalon.",
"OptOutForYourVisitors": "Matomo követés letiltása látogatók által",
- "PiwikIsInstalledAt": "Matomo telepítve itt:",
+ "OptingYouOut": "Kiléptetés alatt, kis türelmet…",
"PersonalPluginSettings": "Személyes bővítmény beállítások",
+ "PiwikIsInstalledAt": "Matomo telepítve itt:",
"PluginSettingChangeNotAllowed": "Önnek nincs jogosultsága a(z) \"%1$s\" beállítás módosításához a(z) \"%2$s\" bővítményben",
"PluginSettingReadNotAllowed": "Önnek nincs jogosultséga a(z) \"%1$s\" beállítás megtekintéséhez a(z) \"%2$s\" bővítményben",
"PluginSettings": "Bővítmény beállítások",
"PluginSettingsIntro": "Itt módosíthatók a harmadik féltől származó bővítmények beállításai:",
- "PluginSettingsValueNotAllowed": "A(z) \"%1$s\" mező értéke a(z) \"%2$s\" bővítményben érvénytelen",
"PluginSettingsSaveFailed": "A bővítmény beállítások mentése sikertelen",
+ "PluginSettingsValueNotAllowed": "A(z) \"%1$s\" mező értéke a(z) \"%2$s\" bővítményben érvénytelen",
+ "ProtocolNotDetectedCorrectly": "Jelenleg biztonságos SSL kapcsolat van ön és a Matomo csak nem biztonságos kapcsolatot tudott észlelni.",
+ "ProtocolNotDetectedCorrectlySolution": "Hogy biztos minden kérés és kiszolgálás HTTPS-en keresztül biztonságosan történjen, szerkeszteni kell a %1$s fájlt és ellenőrizni a proxy beállításokat vagy hozzá kell adni a %2$s sort, lentebb a %3$s szekcióban. %4$sTovábbi információk%5$s",
+ "ReleaseChannel": "Release csatorna",
"SendPluginUpdateCommunication": "Küldjön egy emailt, mikor egy bővítmény frissítés elérhetővé válik",
"SendPluginUpdateCommunicationHelp": "Az adminisztrátorok emailben értesülnek ha egy bővítményhez frissítés érhető el.",
"StableReleases": "Ha a Matomo fontos része a vállalkozásának, javasoljuk, hogy a legfrissebb stabil kiadást használja. Ha a legfrissebb béte kiadást használja és hibát talál vagy javaslata van, kérjük %1$skattintson ide%2$s.",
- "LtsReleases": "LTS (Hosszútávú támogatás) kiadások csak biztonsági és hibajavítási frissítéseket kapnak",
"SystemPluginSettings": "Rendszer bővítmény beállításai",
"TrackAGoal": "Cél követése",
"TrackingCode": "Követőkód",
"TrustedHostConfirm": "Biztosan meg akarja változtatni a megbízható Matomo hosztnevet?",
"TrustedHostSettings": "Megbízható Matomo Hosztnév",
+ "UncheckToOptOut": "A tiltáshoz kattintsa ki ezt a checkboxot.",
"UpdateSettings": "Beállítások frissítése",
"UseCustomLogo": "Saját logó használata",
"ValidPiwikHostname": "Érvényes Matomo Hosztnév",
"WithOptionalRevenue": "opcionális jövedelemmel",
- "YouAreOptedOut": "A követés jelenleg ki van kapcsolva.",
"YouAreNotOptedOut": "A követés engedélyezett.",
+ "YouAreOptedOut": "A követés jelenleg ki van kapcsolva.",
"YouMayOptOut": "Lehetőség van a számítógépen tárolt egyedi azonosító süti letiltására, hogy a látogatás ne szerepeljen semmilyen statisztikában.",
- "YouMayOptOutBis": "Az alábbi kapcsoló segítségével engedélyezhető a követő süti használata.",
- "OptingYouOut": "Kiléptetés alatt, kis türelmet...",
- "ProtocolNotDetectedCorrectly": "Jelenleg biztonságos SSL kapcsolat van ön és a Matomo csak nem biztonságos kapcsolatot tudott észlelni.",
- "ProtocolNotDetectedCorrectlySolution": "Hogy biztos minden kérés és kiszolgálás HTTPS-en keresztül biztonságosan történjen, szerkeszteni kell a %1$s fájlt és ellenőrizni a proxy beállításokat vagy hozzá kell adni a %2$s sort, lentebb a %3$s szekcióban. %4$sTovábbi információk%5$s",
"YouMayOptOut2": "Megtilthatja, hogy ez a weboldal adatot gyűjtsön az ezen a weboldalon történő látogatásairól és azokat analalitikai célokra felhasználja.",
"YouMayOptOut3": "Ha így tesz, azzal digitális adatvédelmét erősíti, de egyúttal megakadályozza, hogy a weboldal tulajdonosa tanuljon látogatásai szokásaiból és ezáltal egy jobb felhasználói élményt nyújthasson Önnek és más látogatóknak.",
- "UncheckToOptOut": "A tiltáshoz kattintsa ki ezt a checkboxot.",
- "CheckToOptIn": "Pipálja be a követés engedélyezéséhez."
+ "YouMayOptOutBis": "Az alábbi kapcsoló segítségével engedélyezhető a követő süti használata."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/it.json b/plugins/CoreAdminHome/lang/it.json
index 0715f8eb13..7715e9c90c 100644
--- a/plugins/CoreAdminHome/lang/it.json
+++ b/plugins/CoreAdminHome/lang/it.json
@@ -94,7 +94,7 @@
"OptOutExplanation": "Matomo è impegnato ad assicurare la riservatezza su Internet. Per dare ai tuoi visitatori la possibilità di escludersi dalle Statistiche Web di Matomo, è possibile aggiungere il seguente codice HTML in una pagina del tuo sito web, ad esempio in una pagina sulla privacy.",
"OptOutExplanationIntro": "Questo codice mostrerà ai tuoi visitatori un iframe contenente un link per escludersi da Matomo (opt-out) impostando un cookie apposito nel loro browser. Guarda qui sotto (o %1$s clicca qui %2$s) per vedere il contenuto che verrà mostrato dall'iframe.",
"OptOutForYourVisitors": "Matomo opt-out per i tuoi visitatori",
- "OptingYouOut": "Sto acquisendo la tua rinuncia, attendi...",
+ "OptingYouOut": "Sto acquisendo la tua rinuncia, attendi…",
"PersonalPluginSettings": "Impostazioni Personali Plugin",
"PiwikIsInstalledAt": "Matomo è installato su",
"PluginSettingChangeNotAllowed": "Non sei abilitato a cambiare il valore dell'impostazione \"%1$s\" nel plugin \"%2$s\"",
diff --git a/plugins/CoreAdminHome/lang/nb.json b/plugins/CoreAdminHome/lang/nb.json
index c8c0eaa6ed..d1bf9470c5 100644
--- a/plugins/CoreAdminHome/lang/nb.json
+++ b/plugins/CoreAdminHome/lang/nb.json
@@ -37,7 +37,7 @@
"InvalidPluginsYouCanUninstall": "Du kan oppdatere eller avinstallere disse utvidelsene på %1$sAdministrer utvidelser%2$s-siden.",
"JSTrackingIntro1": "Du kan spore besøkende på nettsiden din på flere forskjellige måte. Den anbefalte måten er å gjøre det gjennom JavaScript. For å bruke denne metoden må hver av de enkelte nettsidene ha litt JavaScript-kode, som du kan generere her.",
"JSTrackingIntro2": "Når du har JavaScript-sporingskoden for ditt nettsted, kopier og lim den inn på alle nettsteder som du vil spore med Matomo.",
- "JSTrackingIntro3a": "På de fleste nettsider, blogger, innholdsbehandlingssystemer, osv. kan du bruke et forberedt programtillegg til å gjøre det tekniske arbeidet for deg. (Sjekk %1$slisten over programtillegg brukt til å integrere Matomo%2$s.)",
+ "JSTrackingIntro3a": "På de fleste nettsider, blogger, innholdsbehandlingssystemer, osv. kan du bruke et ferdiglagd programtillegg til å gjøre det tekniske arbeidet for deg. (Sjekk %1$slisten over programtillegg brukt til å integrere Matomo%2$s.)",
"JSTrackingIntro3b": "Hvis det ikke finnes noen programtillegg kan du redigere dine nettsidemaler og legge til JavaScript-sproingskoden til i &lt;/head&gt;-taggen, som ofte er definert i «header.php», «header.tpl» eller lignende malfil.",
"JSTrackingIntro4": "Hvis du ikke vil bruke JavaScript for å spore besøkere, %1$skan du generere en bildesporingslenke nedenfor%2$s.",
"JSTrackingIntro5": "Hvis du vil gjøre mer enn å spore sidevisninger, vennligst sjekk ut %1$sMatomo JavaScript Tracking documentation%2$s for en liste med tilgjengelige funksjoner. Ved å bruke disse funksjonene kan du spore mål, tilpassede variabler, e-handelsordre, forlatte handlevogner og mer.",
@@ -100,10 +100,10 @@
"PluginSettingChangeNotAllowed": "Du har ikke tillatelse til å endre verdien på innstillingen «%1$s» i utvidelsen «%2$s»",
"PluginSettingReadNotAllowed": "Du har ikke tillatelse til å lese verdien av innstillingen «%1$s» i utvidelsen «%2$s»",
"PluginSettings": "Innstillinger for utvidelser",
- "PluginSettingsIntro": "Her kan du endre innstillinger for følgende 3. parts utvidelser:",
+ "PluginSettingsIntro": "Her kan du endre innstillinger for følgende tredjepartsutvidelser:",
"PluginSettingsSaveFailed": "Klarte ikke å lagre innstillinger for utvidelser",
"PluginSettingsSaveSuccess": "Utvidelsesinnstillingene ble oppdaterte.",
- "PluginSettingsValueNotAllowed": "Verdien for feltet «%1$s» i utvidelsen «%2$s» er ikke tillatt",
+ "PluginSettingsValueNotAllowed": "Verdien for feltet «%1$s» i «%2$s»-utvidelsen er ikke tillatt",
"Problem": "Problem",
"ProtocolNotDetectedCorrectly": "Du ser nå Matomo over en sikret SSL-tilkobling (ved bruk av HTTPS), men Matomo kunne kun oppdage en ikke-sikker tilkobling til tjeneren.",
"ProtocolNotDetectedCorrectlySolution": "For å forsikre deg om at Matomo mottar sikre spørringer og leverer innhold over HTTPS, kan du redigere din %1$s-fil og enten sette opp dine mellomtjener-innstillinger, eller du kan legge inn linjen %2$s under avsnittet %3$s. %4$sLær mer%5$s",
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Send en e-post når en oppdatering for en utvidelse er tilgjengelig",
"SendPluginUpdateCommunicationHelp": "En e-post vil bli sendt til superbrukere når det er en ny versjon tilgjengelig for en utvidelse.",
"SettingsSaveSuccess": "Innstillingene ble oppdaterte.",
+ "SinglePageApplicationDescription": "Hvis du sporer et enkeltsidig program (SPA) eller et progressivt vev-program (PWA), sjekk %1$sdenne veiledningen%2$s.",
"Solution": "Løsning",
"StableReleases": "Hvis Matomo er en kritisk del av din forretning anbefaler vi at du bruker den nyeste stabile versjonen. Hvis du bruker den nyeste betaen og du finner en feil eller har et forbedringsforslag, vennligst %1$sse her%2$s.",
"SystemPluginSettings": "Systeminnstillinger for utvidelser",
@@ -151,6 +152,7 @@
"ValidPiwikHostname": "Gyldig Matomo-vertsnavn",
"ViewAllTrackingFailures": "Vis alle sporingsfeil",
"WhatIsNew": "Nyheter",
+ "WhatIsNewNoChanges": "Ingenting nytt for øyeblikket",
"WhatIsNewNoChangesTitle": "Ingen nylige endringer",
"WhatIsNewTitle": "Dette er nytt i Matomo",
"WhatIsNewTooltip": "Lær hva som er nytt i Matomo",
diff --git a/plugins/CoreAdminHome/lang/nl.json b/plugins/CoreAdminHome/lang/nl.json
index e3b8c2c293..4cf84020b5 100644
--- a/plugins/CoreAdminHome/lang/nl.json
+++ b/plugins/CoreAdminHome/lang/nl.json
@@ -4,45 +4,58 @@
"Administration": "Administratie",
"ArchivingSettings": "Archiveringsinstellingen",
"BrandingSettings": "Merkinstellingen",
- "ErrorEmailFromAddressNotValid": "Het SMTP afzender adres is niet geldig",
- "ReleaseChannel": "Versiekanaal",
+ "CheckToOptIn": "Schakel dit vakje in om u aan te melden.",
"ClickHereToOptIn": "Klik hier om u aan te melden.",
"ClickHereToOptOut": "Klik hier om u af te melden.",
+ "ConfirmDeleteAllTrackingFailures": "Weet u zeker dat u alle tracking fouten wilt verwijderen?",
+ "ConfirmDeleteThisTrackingFailure": "Weet u zeker dat u deze tracking fout wilt verwijderen?",
"CorsDomains": "Cross-Origin Resource Sharing (CORS) domeinen",
- "CorsDomainsHelp": "U kunt domeinen of subdomeinen definiëren, zoals http:\/\/example.com of http:\/\/stats.example.com. Of om crossdomeinverzoeken voor alle domeinen toe te staan, kunt u een * toevoegen.",
+ "CorsDomainsHelp": "U kunt domeinen of subdomeinen definiëren, zoals http://example.com of http://stats.example.com. Of om crossdomeinverzoeken voor alle domeinen toe te staan, kunt u een * toevoegen.",
"CustomLogoFeedbackInfo": "Als u het Matomo logo bijwerkt, heeft u wellicht ook interesse om de %1$s link te verbergen in het menu bovenaan. Om dit te doen, kunt u de feedback plugin uitschakelen in de pagina van de %2$sManage Plugins%3$s.",
"CustomLogoHelpText": "U kunt het Matomo logo aanpassen dat wordt weergegeven in de gebruikersinterface en in de e-mail rapportages.",
+ "DeleteAllFailures": "Verwijder alle fouten",
"DevelopmentProcess": "Hoewel ons ontwikkelproces duizenden geautomatiseerde tests kent, spelen Beta Testers een sleutelrol in het bereiken van de \"Geen bugs policy\" in Matomo.",
"EmailServerSettings": "E-mailserverinstellingen",
+ "ErrorEmailFromAddressNotValid": "Het SMTP afzender adres is niet geldig",
+ "FaviconUpload": "Selecteer een favicon om te uploaden",
+ "FileUploadDisabled": "Het uploaden van documenten is niet geactiveerd in je PHP configuratie. Om een aangepast logo up te loaden pas %s aan in php.ini en herstart de webserver.",
"ForBetaTestersOnly": "Alleen voor bèta testers",
+ "HttpTrackingApi": "HTTP Tracking API",
+ "HttpTrackingApiDescription": "De %1$sHTTP Tracking API%2$s stelt je in staat om alles te volgen. Dit kan nuttig zijn als je een programmeertaal gebruikt waarvoor nog geen SDK bestaat. Dit kan ook nuttig zijn als je apparaten of applicaties op een speciale manier wilt volgen.",
"ImageTracking": "Afbeelding tracking",
"ImageTrackingIntro1": "Wanneer een bezoeker JavaScript heeft uitgeschakeld, of wanneer JavaScript niet kan worden gebruikt, kun je een tracking afbeelding gebruiken om bezoekers te volgen.",
"ImageTrackingIntro2": "Genereer de link hieronder en kopieer de gegenereerde HTML in de pagina. Als je dit gebruikt als fallback voor JavaScript tracking, kun je het insluiten in %1$s tags.",
"ImageTrackingIntro3": "Voor de volledige lijst met mogelijkheden bij het gebruik van een afbeelding als tracking, zie de %1$sTracking API documentatie%2$s.",
"ImageTrackingLink": "Afbeelding Tracking Link",
+ "ImportFromGoogleAnalytics": "Importeer van Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Indien u een Google Analytics eigendomsrecht heeft en overschakelt naar Matomo kan u de bestaande gegevens importeren met de %1$sGoogleAnalyticsImporter%2$s plugin.",
"ImportingServerLogs": "Importeer server logbestanden",
"ImportingServerLogsDesc": "Een alternatief om bezoekers te volgen via de browser (ofwel via JavaScript of via een afbeelding) is continu server logs importeren. Lees meer over %1$sServer Logbestanden Analyses%2$s.",
"InvalidPluginsWarning": "De volgende plugins werken niet met %1$s en konden niet geladen worden: %2$s.",
"InvalidPluginsYouCanUninstall": "U kunt deze plugins updaten of installatie ongedaan maken op de %1$sManage Plugins%2$s pagina.",
- "JavaScriptTracking": "JavaScript Tracking",
- "HttpTrackingApi": "HTTP Tracking API",
- "HttpTrackingApiDescription": "De %1$sHTTP Tracking API%2$s stelt je in staat om alles te volgen. Dit kan nuttig zijn als je een programmeertaal gebruikt waarvoor nog geen SDK bestaat. Dit kan ook nuttig zijn als je apparaten of applicaties op een speciale manier wilt volgen.",
+ "JSTrackingIntro1": "Je kunt bezoekers aan je website op meerdere manieren volgen. De geadviseerde manier is om dit via JavaScript te doen. Om deze manier te gebruiken moet je ervoor zorgen dat elke pagina van je website een stukje JavaScript-code bevat die je hier kunt genereren.",
+ "JSTrackingIntro2": "Wanneer je de JavaScript code voor je website hebt, kopieer en plak de code naar alle pagina's die je wilt volgen met Matomo",
+ "JSTrackingIntro3a": "In de meeste websites, blogs, CMS'en etc. kun je een plugin gebruiken om het technische werk voor je uit te voeren. (Kijk op onze %1$slijst met plugins om Matomo%2$s te integreren.)",
+ "JSTrackingIntro3b": "Als er geen plugin bestaat dan kun je je website template aanpassen en daar de JavaScript tracking-code aan de &lt;/head&gt; tag toe te voegen. Dit wordt vaak gedefinieerd in een 'header.php', 'header.tpl' of vergelijkbaar bestand.",
+ "JSTrackingIntro4": "Indien je geen gebruik wilt maken van JavaScript om gebruikers te volgen, %1$skun je een afbeelding tracking link hieronder genereren.%2$s",
+ "JSTrackingIntro5": "Indien je meer wilt bijhouden dan paginaweergaves, lees dan de %1$sMatomo Javascript Tracking documentatie%2$s voor de lijst van beschikbare functies. Via deze functies kun je doelen, eigen variabelen, ecommerce bestellingen, afgebroken bestellingen en meer.",
"JSTracking_CampaignKwdParam": "Campagne sleutelwoord parameter",
"JSTracking_CampaignNameParam": "Campagne naam parameter",
"JSTracking_CodeNoteBeforeClosingHead": "Zorg ervoor dat deze code op elke pagina van je website staat. We raden je aan om de code vlak voor de sluit %1$s tag in te plakken.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Zorg ervoor dat deze code is ingebed in een scriptelement op elke pagina van je website. We raden je aan om de code voor de sluit head tag in te plakken.",
- "JSTracking_CustomCampaignQueryParam": "Gebruik aangepaste query parameter namen voor de campagne naam & sleutelwoorden",
"JSTracking_CrossDomain": "Standaard wordt de bezoeker-ID die een unieke bezoeker identificeert opgeslagen in de browsers first-party cookies die alleen benaderd kunnen worden door pagina's vanuit hetzelfde domein. Door domein cross linking in te schakelen kun je alle acties en pageviews van een specifieke bezoeker volgen, ook al bekijken ze pagina's van verschillende domeinen. Als een bezoeker klikt op een link van een van je website alias URL's dan wordt een URL-parameter pk_vid met de bezoeker-ID toegevoegd.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Let op: Om cross domein linking te gebruiken moet je meer dan een domeinnaam (URL's) voor je website specificeren.",
+ "JSTracking_CustomCampaignQueryParam": "Gebruik aangepaste query parameter namen voor de campagne naam & sleutelwoorden",
"JSTracking_CustomCampaignQueryParamDesc": "Opmerking: %1$s Matomo detecteert automatisch Google Analytics parameters.%2$s",
"JSTracking_DisableCookies": "Schakel alle tracking cookies uit",
"JSTracking_DisableCookiesDesc": "Schakelt alle first party cookies uit. Bestaande Matomo cookies voor deze website zullen worden verwijderd bij het opnieuw laden van de pagina.",
"JSTracking_EnableCrossDomainLinking": "Activeert cross domein linking",
"JSTracking_EnableDoNotTrack": "Schakel Client side DoNotTrack detectie in.",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Opmerking: Server side DoNotTrack ondersteuning is ingeschakeld, deze optie heeft dus geen effect.",
"JSTracking_EnableDoNotTrackDesc": "Tracking verzoeken zullen niet worden verzonden indien de bezoeker niet wenst gevolgd te worden.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Opmerking: Server side DoNotTrack ondersteuning is ingeschakeld, deze optie heeft dus geen effect.",
+ "JSTracking_EndNote": "Opmerking: Na het installatie proces, kun je custom tracking code genereren in het %1$sTracking Code%2$s admin gedeelte.",
"JSTracking_GroupPageTitlesByDomain": "Plaats het sitedomein voor de paginatitel tijdens het traceren.",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Als iemand de 'over mij' bezoekt op blog.%1$s wordt het bewaard als 'blog \/ over mij'. Dit is de gemakkelijkste manier om een overzicht volgens subdomein te krijgen op je verkeer.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Als iemand de 'over mij' bezoekt op blog.%1$s wordt het bewaard als 'blog / over mij'. Dit is de gemakkelijkste manier om een overzicht volgens subdomein te krijgen op je verkeer.",
"JSTracking_MergeAliases": "In het \"Uitgaande links\" rapport, verberg kliks naar bekende aliassen van",
"JSTracking_MergeAliasesDesc": "zo zullen kliks op links naar Ailias URL's (bijv. %s) zullen niet worden geteld worden als \"Uitgaande Link\"",
"JSTracking_MergeSubdomains": "Volg bezoekers op elk subdomein van",
@@ -52,93 +65,80 @@
"JSTracking_TrackNoScript": "Volg gebruikers als JavaScript uitgeschakeld is",
"JSTracking_VisitorCustomVars": "Houd aangepaste variabelen bij voor deze bezoeker",
"JSTracking_VisitorCustomVarsDesc": "Bijvoorbeeld met variabele naam \"Type\" en waarde \"Klant\"",
- "JSTracking_EndNote": "Opmerking: Na het installatie proces, kun je custom tracking code genereren in het %1$sTracking Code%2$s admin gedeelte.",
- "JSTrackingIntro1": "Je kunt bezoekers aan je website op meerdere manieren volgen. De geadviseerde manier is om dit via JavaScript te doen. Om deze manier te gebruiken moet je ervoor zorgen dat elke pagina van je website een stukje JavaScript-code bevat die je hier kunt genereren.",
- "JSTrackingIntro2": "Wanneer je de JavaScript code voor je website hebt, kopieer en plak de code naar alle pagina's die je wilt volgen met Matomo",
- "JSTrackingIntro3a": "In de meeste websites, blogs, CMS'en etc. kun je een plugin gebruiken om het technische werk voor je uit te voeren. (Kijk op onze %1$slijst met plugins om Matomo%2$s te integreren.)",
- "JSTrackingIntro3b": "Als er geen plugin bestaat dan kun je je website template aanpassen en daar de JavaScript tracking-code aan de &lt;\/head&gt; tag toe te voegen. Dit wordt vaak gedefinieerd in een 'header.php', 'header.tpl' of vergelijkbaar bestand.",
- "JSTrackingIntro4": "Indien je geen gebruik wilt maken van JavaScript om gebruikers te volgen, %1$skun je een afbeelding tracking link hieronder genereren.%2$s",
- "JSTrackingIntro5": "Indien je meer wilt bijhouden dan paginaweergaves, lees dan de %1$sMatomo Javascript Tracking documentatie%2$s voor de lijst van beschikbare functies. Via deze functies kun je doelen, eigen variabelen, ecommerce bestellingen, afgebroken bestellingen en meer.",
+ "JavaScriptTracking": "JavaScript Tracking",
+ "JsTrackingCodeMissingEmail1": "Een par dagen geleden heb je de website '%s' aan je Matomo Analyses toegevoegd. We hebben net een controle uitgevoerd en het lijkt alsof Matomo helemaal geen verkeer heeft vastgelegd voor deze website.",
+ "JsTrackingCodeMissingEmail2": "Om te beginnen met tracking data en daardoor inzicht te krijgen in je bezoekers moet je eerst tracking inrichten op je website of mobiele app. Voor een website voeg je simpelweg de tracking code in vlak voor de %s tag.",
+ "JsTrackingCodeMissingEmail3": "Om je tracking code te vinden en aan te passen, %1$s klik hier%2$s (of kijk in de %3$sJavaScript Tracking Client handleiding%4$s).",
+ "LearnMore": "Meer weten",
"LogoNotWriteableInstruction": "Om je eigen logo te gebruiken in plaats van het standaard Matomo-logo moet je schrijfrechten geven op de directory: %1$s. Matomo heeft schrijfrechten nodig voor je logo's die opgeslagen zijn in de bestanden %2$s.",
- "FileUploadDisabled": "Het uploaden van documenten is niet geactiveerd in je PHP configuratie. Om een aangepast logo up te loaden pas %s aan in php.ini en herstart de webserver.",
- "LogoUploadFailed": "Het geüploade bestand kon niet worden verwerkt. Controleer of het bestand een geldig bestandsformaat heeft.",
"LogoUpload": "Selecteer een logo om te uploaden",
- "FaviconUpload": "Selecteer een favicon om te uploaden",
+ "LogoUploadFailed": "Het geüploade bestand kon niet worden verwerkt. Controleer of het bestand een geldig bestandsformaat heeft.",
"LogoUploadHelp": "Upload een bestand in %1$s formaten met een minimum hoogte van %2$s pixels.",
+ "LtsReleases": "LTS(Lange Termijn Support) versies ontvangen alleen security en bug oplossingen.",
+ "MenuDevelopment": "Ontwikkeling",
"MenuDiagnostic": "Diagnostisch",
"MenuGeneralSettings": "Algemene instellingen",
- "MenuSystem": "Systeem",
- "MenuDevelopment": "Ontwikkeling",
"MenuMeasurables": "Meetbaar",
+ "MenuSystem": "Systeem",
+ "MissingTrackingCodeEmailSubject": "Geen verkeer voor %s opgenomen in Matomo Analyses, begin er nu mee.",
+ "NTrackingFailures": "%s tracking fouten",
+ "NoKnownFailures": "Er zijn geen bekende tracking fouten",
"OptOutComplete": "Opt-out ingesteld; uw bezoeken aan deze website zullen niet worden opgeslagen voor analyse.",
"OptOutCompleteBis": "Als u uw cookies wist, de opt-out cookie verwijdert of wisselt van computer of webbrowser, zult u deze opt-out procedure opnieuw moeten uitvoeren.",
"OptOutDntFound": "Je bezoek wordt niet gemeten omdat je browser aangeeft dat je dat niet wil. Dit is een instelling van je browser, dus je kunt geen gebruik maken van opt-in totdat je de 'Volg mij Niet'-functie uitschakelt.",
+ "OptOutErrorNoCookies": "Voor de tracking opt-out functie moeten cookies zijn ingeschakeld.",
+ "OptOutErrorNotHttps": "De tracking opt-out-functie werkt mogelijk niet omdat deze site niet via HTTPS is geladen. Laad de pagina opnieuw om te controleren of uw opt-out status is gewijzigd.",
+ "OptOutErrorWindowOpen": "De tracking Opt-out-functie werkt mogelijk niet omdat het lijkt alsof de opt-out-pop-up is geblokkeerd. Laad de pagina opnieuw om te controleren of uw opt-out status is gewijzigd.",
"OptOutExplanation": "Matomo is ingericht om privacy op internet te respecteren. U kunt uw bezoekers de opt-out optie van Matomo Web Analytics aanbieden. Daartoe kunt u de volgende HTML-code toevoegen aan uw website, bijvoorbeeld op een pagina met een Privacybeleid.",
"OptOutExplanationIntro": "Deze code toont een Iframe met een link waarmee je bezoekers kunnen aangeven dat ze niet gevolgd willen worden door Matomo, hiervoor wordt een opt-out cookie geplaatst in hun webbrowser. Kijk hieronder(of %1$s klik hier%2$s) om de inhoud van het te tonen Iframe te bekijken.",
"OptOutForYourVisitors": "Matomo opt-out voor uw bezoekers",
- "PiwikIsInstalledAt": "Matomo is geïnstalleerd in",
+ "OptingYouOut": "Opt-out inschakelen, even geduld a.u.b…",
"PersonalPluginSettings": "Persoonlijke plugin-instellingen",
+ "PiwikIsInstalledAt": "Matomo is geïnstalleerd in",
"PluginSettingChangeNotAllowed": "U bent niet gemachtigd om de waarde aan te passen van de instelling \"%1$s\" in plugin \"%2$s\"",
"PluginSettingReadNotAllowed": "Je hebt geen toestemming voor het uitlezen van de instelling \"%1$s\" uit de plugin \"%2$s\"",
"PluginSettings": "Plugin-instellingen",
"PluginSettingsIntro": "Hier kunt u instellingen aanpassen voor de volgende plugins van derden:",
- "PluginSettingsValueNotAllowed": "De waarde voor veld \"%1$s\" in plugin \"%2$s\" is niet toegestaan",
"PluginSettingsSaveFailed": "Opslaan van plugin instellingen niet gelukt",
"PluginSettingsSaveSuccess": "Plugin-instellingen bijgewerkt.",
- "TrackingFailures": "Tracking fouten",
- "SettingsSaveSuccess": "Instellingen bijgewerkt.",
+ "PluginSettingsValueNotAllowed": "De waarde voor veld \"%1$s\" in plugin \"%2$s\" is niet toegestaan",
+ "Problem": "Probleem",
+ "ProtocolNotDetectedCorrectly": "Op dit moment bezoek je Matomo geen beveiligde verbinding op de server kunnen vinden.",
+ "ProtocolNotDetectedCorrectlySolution": "Om zeker te zijn dat Matomo verzoeken van je content over een beveiligde HTTPS verbinding serveert, kan je in het bestand %1$s de proxy settings aanpassen of je kan de regel %2$s onder sectie %3$s aanpassen. %4$sLeer meer%5$s",
+ "ReleaseChannel": "Versiekanaal",
"SendPluginUpdateCommunication": "Stuur een email wanneer een plugin update beschikbaar is.",
"SendPluginUpdateCommunicationHelp": "Een email wordt verstuurd naar de Super User wanneer er een nieuwe versie voor de plugin is.",
+ "SettingsSaveSuccess": "Instellingen bijgewerkt.",
+ "Solution": "Oplossing",
"StableReleases": "Indien Matomo een essentieel onderdeel is van uw zaak, dan raaden wij aan om de laatste stabiele versie te draaien. Indien je de laatste beta gebruikt en je ontdekt bugs of hebt een suggestie, %1$skijk dan hier%2$s.",
- "LtsReleases": "LTS(Lange Termijn Support) versies ontvangen alleen security en bug oplossingen.",
"SystemPluginSettings": "Systeem Plugin Instellingen",
"TrackAGoal": "Hou een doel bij",
"TrackingCode": "Trackingcode",
"TrackingCodeIntro": "Matomo biedt je meerdere manieren om de tracking code op je website, mobiele app en zelfs voor elk apparaat of applicatie in te voegen",
+ "TrackingFailureAuthenticationProblem": "Aanvraag was niet geautoriseerd maar autorisatie was verplicht.",
+ "TrackingFailureAuthenticationSolution": "Zet of corrigeer een \"token_auth\" in je tracking aanvraag.",
+ "TrackingFailureInvalidSiteProblem": "De website bestaat niet.",
+ "TrackingFailureInvalidSiteSolution": "Update de geconfigureerde idSite in de tracker.",
+ "TrackingFailures": "Tracking fouten",
+ "TrackingFailuresEmail1": "Dit is om je te laten weten dat er gedurende de afgelopen dagen %s verschillende tracking fouten zijn opgetreden.",
+ "TrackingFailuresEmail2": "Om alle foute tracking aanvragen te bekijken %1$sklik hier%2$s.",
+ "TrackingFailuresEmailSubject": "Tracking fouten in je Matomo Analyses",
+ "TrackingFailuresIntroduction": "Deze pagina toont de tracking fouten die tijdens de afgelopen %s dagen zijn opgetreden. Bedenk daarbij dat alleen de meest voorkomende tracking fouten zijn gelogd en dus niet alle.",
+ "TrackingURL": "Tracking URL",
"TrustedHostConfirm": "Weet je zker dat je de vertrouwde Matomo hostnaam wilt aanpassen?",
"TrustedHostSettings": "Toegestane Matomo hostnaam",
"UiDemo": "UI Demo",
+ "UncheckToOptOut": "Schakel dit vakje uit om u af te melden.",
"UpdateSettings": "Instellingen bijwerken",
"UseCustomLogo": "Aangepast logo gebruiken",
"ValidPiwikHostname": "Geldige Matomo hostnaam",
+ "ViewAllTrackingFailures": "Bekijk alle tracking fouten",
"WithOptionalRevenue": "met optionele inkomsten",
- "YouAreOptedOut": "U bent momenteel afgemeld.",
"YouAreNotOptedOut": "U bent momenteel aangemeld.",
+ "YouAreOptedOut": "U bent momenteel afgemeld.",
"YouMayOptOut": "U kunt ervoor kiezen om geen uniek cookie identificatie nummer van uw computer te hebben, zodat er op deze website van uw apparaat geen data verzameld of geanalyseerd kan worden.",
- "YouMayOptOutBis": "Om hiervoor te kiezen kunt u hieronder klikken om een opt-out cookie te ontvangen.",
- "OptingYouOut": "Opt-out inschakelen, even geduld a.u.b...",
- "ProtocolNotDetectedCorrectly": "Op dit moment bezoek je Matomo geen beveiligde verbinding op de server kunnen vinden.",
- "ProtocolNotDetectedCorrectlySolution": "Om zeker te zijn dat Matomo verzoeken van je content over een beveiligde HTTPS verbinding serveert, kan je in het bestand %1$s de proxy settings aanpassen of je kan de regel %2$s onder sectie %3$s aanpassen. %4$sLeer meer%5$s",
"YouMayOptOut2": "U kunt ervoor kiezen om te voorkomen dat deze website de acties die u uitvoert kan analyseren.",
"YouMayOptOut3": "Hierdoor wordt uw privacy beschermd, maar wordt ook voorkomen dat de beheerder van de website van uw acties kan leren en een betere ervaring voor u en andere gebruikers kan creëren.",
- "UncheckToOptOut": "Schakel dit vakje uit om u af te melden.",
- "CheckToOptIn": "Schakel dit vakje in om u aan te melden.",
- "OptOutErrorNoCookies": "Voor de tracking opt-out functie moeten cookies zijn ingeschakeld.",
- "OptOutErrorNotHttps": "De tracking opt-out-functie werkt mogelijk niet omdat deze site niet via HTTPS is geladen. Laad de pagina opnieuw om te controleren of uw opt-out status is gewijzigd.",
- "OptOutErrorWindowOpen": "De tracking Opt-out-functie werkt mogelijk niet omdat het lijkt alsof de opt-out-pop-up is geblokkeerd. Laad de pagina opnieuw om te controleren of uw opt-out status is gewijzigd.",
- "MissingTrackingCodeEmailSubject": "Geen verkeer voor %s opgenomen in Matomo Analyses, begin er nu mee.",
- "JsTrackingCodeMissingEmail1": "Een par dagen geleden heb je de website '%s' aan je Matomo Analyses toegevoegd. We hebben net een controle uitgevoerd en het lijkt alsof Matomo helemaal geen verkeer heeft vastgelegd voor deze website.",
- "JsTrackingCodeMissingEmail2": "Om te beginnen met tracking data en daardoor inzicht te krijgen in je bezoekers moet je eerst tracking inrichten op je website of mobiele app. Voor een website voeg je simpelweg de tracking code in vlak voor de %s tag.",
- "JsTrackingCodeMissingEmail3": "Om je tracking code te vinden en aan te passen, %1$s klik hier%2$s (of kijk in de %3$sJavaScript Tracking Client handleiding%4$s).",
- "TrackingFailuresIntroduction": "Deze pagina toont de tracking fouten die tijdens de afgelopen %s dagen zijn opgetreden. Bedenk daarbij dat alleen de meest voorkomende tracking fouten zijn gelogd en dus niet alle.",
- "NoKnownFailures": "Er zijn geen bekende tracking fouten",
- "Problem": "Probleem",
- "Solution": "Oplossing",
- "TrackingURL": "Tracking URL",
- "LearnMore": "Meer weten",
- "DeleteAllFailures": "Verwijder alle fouten",
- "NTrackingFailures": "%s tracking fouten",
- "ViewAllTrackingFailures": "Bekijk alle tracking fouten",
- "TrackingFailureInvalidSiteProblem": "De website bestaat niet.",
- "TrackingFailureInvalidSiteSolution": "Update de geconfigureerde idSite in de tracker.",
- "TrackingFailureAuthenticationProblem": "Aanvraag was niet geautoriseerd maar autorisatie was verplicht.",
- "TrackingFailureAuthenticationSolution": "Zet of corrigeer een \"token_auth\" in je tracking aanvraag.",
- "ConfirmDeleteAllTrackingFailures": "Weet u zeker dat u alle tracking fouten wilt verwijderen?",
- "ConfirmDeleteThisTrackingFailure": "Weet u zeker dat u deze tracking fout wilt verwijderen?",
- "TrackingFailuresEmailSubject": "Tracking fouten in je Matomo Analyses",
- "TrackingFailuresEmail1": "Dit is om je te laten weten dat er gedurende de afgelopen dagen %s verschillende tracking fouten zijn opgetreden.",
- "TrackingFailuresEmail2": "Om alle foute tracking aanvragen te bekijken %1$sklik hier%2$s.",
- "ImportFromGoogleAnalytics": "Importeer van Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Indien u een Google Analytics eigendomsrecht heeft en overschakelt naar Matomo kan u de bestaande gegevens importeren met de %1$sGoogleAnalyticsImporter%2$s plugin."
+ "YouMayOptOutBis": "Om hiervoor te kiezen kunt u hieronder klikken om een opt-out cookie te ontvangen."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/pl.json b/plugins/CoreAdminHome/lang/pl.json
index 23aa35ed66..51c6c85f37 100644
--- a/plugins/CoreAdminHome/lang/pl.json
+++ b/plugins/CoreAdminHome/lang/pl.json
@@ -84,7 +84,7 @@
"OptOutExplanation": "Statystyki Matomo, możesz dodać następującą informację w kodzie HTML na jednej ze swoich stron, na przykład na stronie Polityka prywatności.",
"OptOutExplanationIntro": "Poniższy kod odpowiada za wyświetlenie iFrame zawierającego link pozwalający Twoim odwiedzającym zakazać śledzenia przez Matomo ich akcji na stronie, poprzez ustawienie ciasteczka opt-out. Zobacz poniżej (lub %1$skliknij tu%2$s) aby zapoznać się z treścią iFrame.",
"OptOutForYourVisitors": "Wyłączenie działania Matomo dla twoich odwiedzających",
- "OptingYouOut": "Wypisuję Cię, proszę zaczekaj...",
+ "OptingYouOut": "Wypisuję Cię, proszę zaczekaj…",
"PersonalPluginSettings": "Osobiste ustawienia wtyczek",
"PiwikIsInstalledAt": "Matomo jest zainstalowane na",
"PluginSettingChangeNotAllowed": "Nie masz uprawnień do zmiany wartości parametru\"%1$s\" w pluginie \"%2$s\"",
diff --git a/plugins/CoreAdminHome/lang/pt-br.json b/plugins/CoreAdminHome/lang/pt-br.json
index afb1b55986..271520f311 100644
--- a/plugins/CoreAdminHome/lang/pt-br.json
+++ b/plugins/CoreAdminHome/lang/pt-br.json
@@ -50,7 +50,7 @@
"JSTracking_CustomCampaignQueryParam": "Utilizar nomes de parâmetros de consultas personalizados para o nome da campanha e a palavra-chave",
"JSTracking_CustomCampaignQueryParamDesc": "Nota: %1$sMatomo irá detectar automaticamente os parâmetros do Google Analytics.%2$s",
"JSTracking_DisableCookies": "Desabilitar todos os cookies de rastreamento",
- "JSTracking_DisableCookiesDesc": "Desativa todos os cookies primários. Cookies do Matomo existentes neste site serão excluídos na próxima exibição de página.",
+ "JSTracking_DisableCookiesDesc": "Desativa todos os cookies primários. Os cookies Matomo existentes para este site serão excluídos na próxima visualização de página.",
"JSTracking_EnableCrossDomainLinking": "Ativa a vinculação entre domínios",
"JSTracking_EnableDoNotTrack": "Ativar o não-monitoramento no lado do cliente",
"JSTracking_EnableDoNotTrackDesc": "Assim, os pedidos de rastreamento não será enviada se os visitantes não deseja ser rastreado.",
@@ -76,7 +76,7 @@
"LogoUpload": "Selecione um logotipo para carregar",
"LogoUploadFailed": "O arquivo enviado não pôde ser processado. Por favor, verifique se o arquivo tem um formato válido.",
"LogoUploadHelp": "Por favor faça o upload de um arquivo nos formatos %1$s com uma altura mínima de %2$s pixels.",
- "LtsReleases": "Versões LTS (Long Term Support - Suporte de Longo Prazo) recebe apenas correções de bugs e segurança.",
+ "LtsReleases": "As versões LTS (Long Term Support - Suporte de Longo Prazo) recebe apenas correções de bugs e segurança.",
"MenuDevelopment": "Desenvolvimento",
"MenuDiagnostic": "Diagnostico",
"MenuGeneralSettings": "Configurações Gerais",
@@ -92,20 +92,20 @@
"OptOutErrorNotHttps": "A funcionalidade de optar por não ser rastreado pode não funcionar pois este site não foi carregado usando HTTPS. Por favor, recarregue a página para verificar se o status na opção de não ser rastreado foi alterado.",
"OptOutErrorWindowOpen": "A funcionalidade de optar por não ser rastreado pode não funcionar pois parece que o popup foi bloqueado. Por favor, recarregue a página para verificar se o status na opção de não ser rastreado foi alterado.",
"OptOutExplanation": "Matomo é dedicado a fornecer a privacidade na Internet. Para fornecer a seus visitantes a escolha de opting-out de Matomo Web Analytics, você pode adicionar o seguinte código HTML em uma página do seu site, por exemplo, em uma página de Política de Privacidade.",
- "OptOutExplanationIntro": "Este código irá exibir um iFrame contendo um link para os seus visitantes optarem por definir um cookie em seus navegadores para não utilizar o Matomo. Veja abaixo (ou %1$sclicar aqui%2$s) para visualizar o conteúdo que será exibido pelo iFrame.",
+ "OptOutExplanationIntro": "Este código exibirá um iframe contendo um link para seus visitantes para desativar o Matomo, definindo um cookie de opção em seus navegadores da Web. Veja abaixo (ou %1$sclique aqui%2$s) para visualizar o conteúdo que será exibido pelo iframe.",
"OptOutForYourVisitors": "Matomo opt-out para os seus visitantes",
- "OptingYouOut": "Optando por sair, por favor aguarde ...",
+ "OptingYouOut": "Optando por sair, por favor, aguarde…",
"PersonalPluginSettings": "Configurações pessoais do plugin",
"PiwikIsInstalledAt": "Matomo esta instalado no",
"PluginSettingChangeNotAllowed": "Você não tem permissão para alterar o valor da configuração \"%1$s\" no plug-in \"%2$s\"",
"PluginSettingReadNotAllowed": "Você não tem permissão para ler o valor da configuração \"%1$s\" no plug-in \"%2$s\"",
"PluginSettings": "Configurações do plugin",
"PluginSettingsIntro": "Aqui você pode alterar as configurações dos seguintes plugins de terceiros:",
- "PluginSettingsSaveFailed": "Falhou ao salvar as configurações do plugin",
+ "PluginSettingsSaveFailed": "Não foi possível salvar as configurações do plugin",
"PluginSettingsSaveSuccess": "Configurações do plugin atualizadas.",
- "PluginSettingsValueNotAllowed": "O valor para o campo \"%1$s\" no plugin \"%2$s\" inão é permitido",
+ "PluginSettingsValueNotAllowed": "O valor para o campo \"%1$s\" no plugin \"%2$s\" não é permitido",
"Problem": "Problema",
- "ProtocolNotDetectedCorrectly": "No momento, você está visualizando o Matomo por meio de uma conexão SSL segura (usando https), mas o Matomo só conseguiu detectar uma conexão não segura no servidor.",
+ "ProtocolNotDetectedCorrectly": "Você está visualizando o Matomo em uma conexão SSL segura (usando HTTPS), mas o Matomo só pode detectar uma conexão não segura no servidor.",
"ProtocolNotDetectedCorrectlySolution": "Para certificar-se que o Matomo solicita e serve o seu conteúdo de forma segura através de HTTPS, você pode editar o seu %1$s arquivo, assim como configurar o proxy, ou você pode adicionar a linha %2$s abaixo da %3$s seção. %4$sSaiba mais%5$s",
"ReleaseChannel": "Canal de liberação",
"SecurityNotificationAllTokenAuthDeletedBody": "Alguém excluiu todos os tokens de autenticação da sua conta.",
@@ -150,6 +150,11 @@
"UseCustomLogo": "Usar logomarca personalizada",
"ValidPiwikHostname": "Hostname Matomo válido",
"ViewAllTrackingFailures": "Ver todas as falhas de rastreamento",
+ "WhatIsNew": "O que há de novo",
+ "WhatIsNewNoChanges": "Não há nada de novo no momento",
+ "WhatIsNewNoChangesTitle": "Sem alterações recentes",
+ "WhatIsNewTitle": "Aqui está o que há de novo em Matomo",
+ "WhatIsNewTooltip": "Aprenda o que há de novo em Matomo",
"WithOptionalRevenue": "com rendimento opcional",
"YouAreNotOptedOut": "Você não optou por sair.",
"YouAreOptedOut": "Você optou por sair.",
diff --git a/plugins/CoreAdminHome/lang/ru.json b/plugins/CoreAdminHome/lang/ru.json
index 47cb43b1e5..d0c62197af 100644
--- a/plugins/CoreAdminHome/lang/ru.json
+++ b/plugins/CoreAdminHome/lang/ru.json
@@ -4,44 +4,59 @@
"Administration": "Администрирование",
"ArchivingSettings": "Настройка архивации",
"BrandingSettings": "Настройки логотипа",
- "ReleaseChannel": "Канал выпуска",
+ "BruteForce": "Брутфорс",
+ "CheckToOptIn": "Установите этот флажок, чтобы подписаться.",
"ClickHereToOptIn": "Кликните, чтобы вы учитывались в аналитике.",
"ClickHereToOptOut": "Кликните, чтобы вы не учитывались в аналитике.",
+ "ConfirmDeleteAllTrackingFailures": "Вы уверены, что хотите удалить все ошибки отслеживания?",
+ "ConfirmDeleteThisTrackingFailure": "Вы уверены, что хотите удалить эту ошибку отслеживания?",
"CorsDomains": "Совместное использование ресурсов между разными доменами (CORS)",
- "CorsDomainsHelp": "Вы можете определить домены или поддомены, например, http:\/\/example.com или http:\/\/stats.example.com. Или разрешить кросс-доменные запросы для всех доменов просто добавив *",
+ "CorsDomainsHelp": "Вы можете определить домены или поддомены, например, http://example.com или http://stats.example.com. Или разрешить кросс-доменные запросы для всех доменов просто добавив *",
"CustomLogoFeedbackInfo": "Если вы используйете свой логотип, вам, возможно, также понадобится скрыть ссылку %1$s в верхнем меню. Для этого просто отключите плагин Feedback (обратная связь) на странице %2$sУправление плагинами%3$s.",
"CustomLogoHelpText": "Вы можете добавить свой логотип, который будет отображаться отчётах.",
+ "DeleteAllFailures": "Удалить все ошибки",
"DevelopmentProcess": "В то время как наш процесс разработки включает в себя тысячи автоматизированных тестов, бета-тестеры играют ключевую роль в достижении «политики без ошибок» в Matomo.",
"EmailServerSettings": "Настройки сервера электронной почты",
+ "ErrorEmailFromAddressNotValid": "Адрес SMTP недействителен",
+ "FaviconUpload": "Выберите Favicon для загрузки",
+ "FileUploadDisabled": "Загрузка файлов не включена в вашей конфигурации PHP. Для загрузки другого логотипа выставите %s в php.ini и перезапустите веб-сервер.",
"ForBetaTestersOnly": "Только для бета-тестеров",
+ "HttpTrackingApi": "API отслеживания HTTP",
+ "HttpTrackingApiDescription": "%1$sHTTP Tracking API%2$s позволяет отслеживать что угодно. Это может быть полезно, если вы используете язык программирования, для которого еще нет SDK. Это также может быть полезно, если вы хотите отслеживать устройства или приложения особым образом.",
"ImageTracking": "Отслеживание через изображение",
"ImageTrackingIntro1": "Когда посетитель отключил JavaScript, или когда JavaScript не может быть использован, вы можете использовать ссылку на изображение для отслеживания посетителей.",
"ImageTrackingIntro2": "Создайте ссылку и разместите сгенерированный HTML на страницах. Если вы используете это в качестве запасного варианта для отслеживания без JavaScript, вы можете его окружить его в тег %1$s.",
"ImageTrackingIntro3": "Весь список опций, которые можно использовать с изображением-ссылкой отслеживания смотрите в %1$sTracking API Documentation%2$s.",
"ImageTrackingLink": "Ссылка на изображение для отслеживания",
+ "ImportFromGoogleAnalytics": "Импорт из Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Если у вас есть свойство Google Analytics и вы переходите на Matomo, вы можете импортировать существующие данные с помощью плагина %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Импортирование логов сервера",
"ImportingServerLogsDesc": "Альтернативой отслеживания посетителей через браузер (вместо JavaScript или ссылки на изображение) является постоянно импортировать логи сервера. Узнать больше о %1$sServer Log File Analytics%2$s.",
"InvalidPluginsWarning": "Следующие плагины не совместимы с %1$s и не могут быть загружены: %2$s.",
"InvalidPluginsYouCanUninstall": "Вы можете обновить или удалить эти плагины на странице %1$sУправления плагинами%2$s.",
- "JavaScriptTracking": "JavaScript отслеживание",
- "HttpTrackingApi": "API отслеживания HTTP",
- "HttpTrackingApiDescription": "%1$sHTTP Tracking API%2$s позволяет отслеживать что угодно. Это может быть полезно, если вы используете язык программирования, для которого еще нет SDK. Это также может быть полезно, если вы хотите отслеживать устройства или приложения особым образом.",
+ "JSTrackingIntro1": "Вы можете отслеживать посетителей на вашем сайте разными способами. Рекомендуемый способ сделать это через JavaScript. Чтобы использовать этот метод, вы должны убедиться, что на каждой веб-странице вашего сайта есть некоторый код JavaScript, который вы можете сгенерировать здесь.",
+ "JSTrackingIntro2": "Как только вы получили JavaScript-код для вашего сайта, скопируйте и вставьте его на все страницы вашего сайта, на которых вы хотите отслеживать посетителей.",
+ "JSTrackingIntro3a": "На большинстве веб-сайтов, блогов, CMS вы можете использовать готовый плагин, для установки кода отслеживания. (Смотрите наш %1$s список плагинов, используемых для интеграции Matomo %2$s.)",
+ "JSTrackingIntro3b": "Если плагина не существует, вы можете отредактировать шаблоны вашего сайта и добавить код отслеживания JavaScript в тег &lt;/head&gt;, который часто определяется в файлах «header.php», «header.tpl» или аналогичных.",
+ "JSTrackingIntro4": "Если вы не хотите или не можете использовать JavaScript, %1$sвоспользуйтесь отслеживанием посетителей через изображение%2$s.",
+ "JSTrackingIntro5": "Если вы хотите больше, чем простое отслеживание страниц, пожалуйста, ознакомьтесь с %1$sMatomo Javascript Tracking documentation%2$s для просмотра всех функций. С помощью этих функций вы можете отслеживать цели, пользовательские переменные, заказы электронной коммерции, неоформленные заказы и многое другое.",
"JSTracking_CampaignKwdParam": "Параметр Ключевого слова кампании",
"JSTracking_CampaignNameParam": "Параметр Имени кампании",
"JSTracking_CodeNoteBeforeClosingHead": "Убедитесь, что этот код находится на каждой странице вашего вебсайта. Мы рекомендуем вставить его непосредственно перед закрывающим %1$s тегом.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Убедитесь, что этот код встроен в элемент script на каждой странице вашего сайта. Мы рекомендуем вставить его непосредственно перед закрывающим тегом head.",
- "JSTracking_CustomCampaignQueryParam": "Использовать пользовательские имена параметров в запросе для названия кампании и ключевого слова",
"JSTracking_CrossDomain": "По умолчанию, ID посетителя, которое идентифицирует уникального посетителя, хранится в файлах cookies браузера, которые доступны только страницам этого же домена. Включение кросс-доменной связи позволяет вам отслеживать все действия и просмотры страниц определенного пользователя за одно посещение, даже если он просматривал страницы на нескольких доменах. Когда пользователь нажимает на одну из ссылок на вашем веб-сайте , будет добавлен параметр URL pk_vid, возвращающий ID посетителя.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Примечание: чтобы использовать кросс-доменное соединение, вы должны указать более одного домена (URL) для своего сайта.",
+ "JSTracking_CustomCampaignQueryParam": "Использовать пользовательские имена параметров в запросе для названия кампании и ключевого слова",
"JSTracking_CustomCampaignQueryParamDesc": "Примечание: %1$sMatomo автоматически определит параметры Google Analytics.%2$s",
"JSTracking_DisableCookies": "Отключить все отслеживания cookies",
- "JSTracking_DisableCookiesDesc": "Отключение всех first party cookies. Существующие cookies Matomo'а для этого веб-сайта будут удалены при следующем просмотре страницы.",
+ "JSTracking_DisableCookiesDesc": "Отключает все куки первой стороны. Существующие cookies Matomo для этого сайта будут удалены при следующем просмотре страницы.",
"JSTracking_EnableCrossDomainLinking": "Включает кросс-доменную связь",
"JSTracking_EnableDoNotTrack": "Включить обнаружение DoNotTrack на стороне пользователя.",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Примечание: на стороне сервера поддержка DoNotTrack была включена, так что эта опция не будет иметь никакого эффекта.",
"JSTracking_EnableDoNotTrackDesc": "Пользователь не будет отслеживаться, если он этого не хочет.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Примечание: на стороне сервера поддержка DoNotTrack была включена, так что эта опция не будет иметь никакого эффекта.",
+ "JSTracking_EndNote": "Примечание: Вы можете сгенерировать пользовательский код отслеживания в разделе для администратора %1$sКод отслеживания%2$s.",
"JSTracking_GroupPageTitlesByDomain": "Подставлять домен сайта перед названием страницы при отслеживании",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Так что, если кто-то посещает страницу «О нас» на поддомене blog.%1$s он будет записан как «blog \/ О нас». Это самый простой способ получить обзор вашего трафика по поддоменам.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Так что, если кто-то посещает страницу «О нас» на поддомене blog.%1$s он будет записан как «blog / О нас». Это самый простой способ получить обзор вашего трафика по поддоменам.",
"JSTracking_MergeAliases": "В отчёте «Внешние ссылки» скрыть клики известных псевдонимов сайта",
"JSTracking_MergeAliasesDesc": "Переходы по ссылкам на псевдонимы домена (например, %s) не будут учитываться как «внешние ссылки».",
"JSTracking_MergeSubdomains": "Отслеживать посетителей через все поддомены сайта",
@@ -51,89 +66,100 @@
"JSTracking_TrackNoScript": "Отслеживать пользователей при отключенном JavaScript",
"JSTracking_VisitorCustomVars": "Отслеживать пользовательские переменные для посетителя",
"JSTracking_VisitorCustomVarsDesc": "Например, имя переменной «Тип», а значение — «Клиент».",
- "JSTracking_EndNote": "Примечание: Вы можете сгенерировать пользовательский код отслеживания в разделе для администратора %1$sКод отслеживания%2$s.",
- "JSTrackingIntro1": "Вы можете отслеживать посетителей на вашем сайте разными способами. Рекомендуемый способ сделать это через JavaScript. Чтобы использовать этот метод, вы должны убедиться, что на каждой веб-странице вашего сайта есть некоторый код JavaScript, который вы можете сгенерировать здесь.",
- "JSTrackingIntro2": "Как только вы получили JavaScript-код для вашего сайта, скопируйте и вставьте его на все страницы вашего сайта, на которых вы хотите отслеживать посетителей.",
- "JSTrackingIntro3a": "На большинстве веб-сайтов, блогов, CMS вы можете использовать готовый плагин, для установки кода отслеживания. (Смотрите наш %1$s список плагинов, используемых для интеграции Matomo %2$s.)",
- "JSTrackingIntro3b": "Если плагина не существует, вы можете отредактировать шаблоны вашего сайта и добавить код отслеживания JavaScript в тег &lt;\/head&gt;, который часто определяется в файлах header.php, header.tpl или аналогичных.",
- "JSTrackingIntro4": "Если вы не хотите или не можете использовать JavaScript, %1$sвоспользуйтесь отслеживанием посетителей через изображение%2$s.",
- "JSTrackingIntro5": "Если вы хотите больше, чем простое отслеживание страниц, пожалуйста, ознакомьтесь с %1$sMatomo Javascript Tracking documentation%2$s для просмотра всех функций. С помощью этих функций вы можете отслеживать цели, пользовательские переменные, заказы электронной коммерции, неоформленные заказы и многое другое.",
+ "JavaScriptTracking": "JavaScript отслеживание",
+ "JsTrackingCodeMissingEmail1": "Несколько дней назад вы добавили веб-сайт %s в Matomo Analytics. Мы только что проверили, но Matomo не зарегистрировал трафик на этом сайте.",
+ "JsTrackingCodeMissingEmail2": "Чтобы начать отслеживать данные и получать информацию о своих пользователях, вам необходимо настроить отслеживание на своем веб-сайте или в мобильном приложении. Для сайтов просто вставьте код отслеживания прямо перед тегом %s",
+ "JsTrackingCodeMissingEmail3": "Чтобы найти и настроить свой код отслеживания, %1$sнажмите здесь%2$s (или посмотрите %3$sруководство по клиенту отслеживания JavaScript%4$s).",
+ "LearnMore": "Узнать больше",
"LogoNotWriteableInstruction": "Чтобы использовать собственное лого вместо стандартного Matomo, откройте для записи эту папку: %1$s Matomo нужен доступ на запись к вашим лого, хранящимся в файлах %2$s.",
- "FileUploadDisabled": "Загрузка файлов не включена в вашей конфигурации PHP. Для загрузки другого логотипа выставите %s в php.ini и перезапустите веб-сервер.",
- "LogoUploadFailed": "Загруженный файл не может быть обработан. Пожалуйста, проверьте, что файл имеет нужный формат.",
"LogoUpload": "Выберите лого для загрузки",
- "FaviconUpload": "Выберите Favicon для загрузки",
+ "LogoUploadFailed": "Загруженный файл не может быть обработан. Пожалуйста, проверьте, что файл имеет нужный формат.",
"LogoUploadHelp": "Пожалуйста, закачивайте файлы в %1$s форматах, минимальное ограничение по высоте — %2$s пикселей.",
+ "LtsReleases": "Версии LTS (Long Term Support) получают только исправления безопасности и ошибок.",
+ "MenuDevelopment": "Разработка",
"MenuDiagnostic": "Диагностика",
"MenuGeneralSettings": "Основные настройки",
- "MenuSystem": "Система",
- "MenuDevelopment": "Разработка",
"MenuMeasurables": "Единицы измерения",
+ "MenuSystem": "Система",
+ "MissingTrackingCodeEmailSubject": "Нет трафика для %s записанным Matomo Analytics, начните сейчас",
+ "NTrackingFailures": "%s ошибок отслеживания",
+ "NoKnownFailures": "Нет известных ошибок отслеживания.",
"OptOutComplete": "Исключение из политики конфиденциальности завершено; ваши посещения на данный сайт не будут учитываться системой веб аналитики. Мы уважаем ваш выбор.",
"OptOutCompleteBis": "Заметьте, что если вы очистите cookies браузера, то, скорее всего, удалится и исключительный cookie, или если вы поменяете компьютер или браузер, то необходимо будет пройти процедуру исключения снова.",
"OptOutDntFound": "Ваши действия не отслеживались, так как ваш браузер сообщает, что вы не хотите этого. Это настройка вашего браузера, поэтому у вас не будет возможности включить ее до тех пор, пока вы не отключите опцию «Не отслеживать».",
+ "OptOutErrorNoCookies": "Функция отказа от отслеживания требует включения cookies.",
+ "OptOutErrorNotHttps": "Функция отказа от отслеживания может не работать, поскольку этот сайт не был загружен через HTTPS. Пожалуйста, перезагрузите страницу, чтобы проверить, изменился ли статус отказа от отслеживания.",
+ "OptOutErrorWindowOpen": "Функция отказа от отслеживания может не работать, потому что всплывающее окно отказа было заблокировано. Пожалуйста, перезагрузите страницу, чтобы проверить, изменился ли статус отказа от отслеживания.",
"OptOutExplanation": "Matomo — за сохранение личных данных в сети. Поэтому данная система может предложить вашим пользователям выбор исключения из политики конфиденциальности (отказ от дальнейшего сбора статистики о пользователе). Вы можете вставить следующий HTML-код на одну из ваших страниц сайта, например на страницу о гарантиях конфиденциальности.",
- "OptOutExplanationIntro": "Этот код будет отображать Iframe, содержащую ссылку, по которой ваши посетители могут отказаться от Matomo, установив файл cookie отказа в своих браузерах. См. Ниже (или %1$sнажмите здесь%2$s), чтобы просмотреть содержимое, которое будет отображаться в iFrame.",
+ "OptOutExplanationIntro": "Этот код отобразит iFrame, содержащий ссылку, по которой ваши посетители могут отказаться от использования Matomo, установив в браузере cookie-файл отказа. Смотрите ниже (или %1$sнажмите сюда%2$s) для просмотра содержимого, которое будет отображаться в iFrame.",
"OptOutForYourVisitors": "Исключение из политики конфиденциальности Matomo для посетителей",
- "PiwikIsInstalledAt": "Matomo установлен в",
+ "OptingYouOut": "Отписываем вас, пожалуйста, подождите…",
"PersonalPluginSettings": "Персональные настройки плагинов",
+ "PiwikIsInstalledAt": "Matomo установлен в",
"PluginSettingChangeNotAllowed": "Вам не разрешено менять значение «%1$s» для плагина «%2$s»",
"PluginSettingReadNotAllowed": "Вам не разрешено читать значение «%1$s» плагина «%2$s»",
"PluginSettings": "Настройки плагинов",
"PluginSettingsIntro": "Здесь вы можете изменить настройки для следующих плагинов:",
- "PluginSettingsValueNotAllowed": "Значение для поля «%1$s» в плагине «%2$s» не разрешено",
"PluginSettingsSaveFailed": "Ошибка при сохранении настроек плагина",
"PluginSettingsSaveSuccess": "Настройки плагинов обновлены.",
- "TrackingFailures": "Отслеживание сбоев",
- "SettingsSaveSuccess": "Настройки обновлены.",
+ "PluginSettingsValueNotAllowed": "Значение для поля «%1$s» в плагине «%2$s» недопустимо",
+ "Problem": "Проблема",
+ "ProtocolNotDetectedCorrectly": "В настоящее время вы просматриваете Matomo через защищенное SSL-соединение (используя HTTPS), но Matomo смог обнаружить только незащищенное соединение на сервере.",
+ "ProtocolNotDetectedCorrectlySolution": "Чтобы удостовериться, что Matomo безопасно запрашивает и обрабатывает ваш контент через HTTPS, вы можете отредактировать свой файл %1$s или изменить ваши настройки прокси, или вы можете добавить строку %2$s под разделом %3$s. %4$sУзнать больше%5$s",
+ "ReleaseChannel": "Канал выпуска",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Кто-то удалил все маркеры авторизации в вашей учетной записи.",
+ "SecurityNotificationCheckTwoFactor": "Пожалуйста, проверьте приложение или устройство двухфакторной аутентификации.",
+ "SecurityNotificationEmailSubject": "Уведомление о безопасности",
+ "SecurityNotificationIfItWasYou": "Если это были вы, продолжайте. Если вы не узнаёте эту активность, пожалуйста, сбросьте пароль.",
+ "SecurityNotificationRecoveryCodesRegeneratedBody": "Кто-то сгенерировал новые коды восстановления двухфакторной аутентификации для вашей учетной записи.",
+ "SecurityNotificationRecoveryCodesShowedBody": "Кто-то просмотрел коды восстановления двухфакторной аутентификации вашей учетной записи.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Другой суперпользователь (%1$s) изменил настройки системы. Затронутые настройки: %2$s. Если вы знаете об этом действии, продолжайте. Если вы не знаете об этой деятельности, обратитесь к другому суперпользователю.",
+ "SecurityNotificationSettingsChangedByUserBody": "Кто-то изменил системные настройки. Затронутые настройки: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Кто-то создал токен аутентификации (описание: %s) в вашей учетной записи. Если это были не вы, удалите токен.",
+ "SecurityNotificationTokenAuthDeletedBody": "Кто-то удалил токен аутентификации (описание: %s) в вашей учетной записи.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Кто-то отключил двухфакторную аутентификацию в вашей учетной записи.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Кто-то включил двухфакторную аутентификацию в вашей учетной записи.",
+ "SecurityNotificationUserCreatedBody": "Кто-то создал нового пользователя (логин: %s) в вашей учетной записи.",
+ "SecurityNotificationUserDeletedBody": "Кто-то удалил пользователя (логин: %s) в вашем аккаунте.",
"SendPluginUpdateCommunication": "Отправить email с уведомлением, когда для плагина будет доступна новая версия",
"SendPluginUpdateCommunicationHelp": "Письмо будет отправлено суперпользователю когда будет доступна новая версия плагина.",
+ "SettingsSaveSuccess": "Настройки обновлены.",
+ "Solution": "Решение",
"StableReleases": "Если Matomo является важной частью вашего бизнеса, мы рекомендуем использовать последнюю стабильную версию. Если вы используете последнюю бета версию, и вы нашли ошибку или есть предложение, пожалуйста, %1$sперейдите по ссылке%2$s.",
- "LtsReleases": "Версии LTS (с долгосрочной поддержкой) получают только исправления, касающиеся безопасности и ошибок.",
"SystemPluginSettings": "Системные настройки плагинов",
"TrackAGoal": "Отслеживать цель",
"TrackingCode": "Код отслеживания",
"TrackingCodeIntro": "Matomo предлагает вам различные способы встраивания кода отслеживания для вашего веб-сайта, мобильного приложения и даже для любого устройства или приложения.",
+ "TrackingFailureAuthenticationProblem": "Запрос не был аутентифицирован, хотя требовалась аутентификация.",
+ "TrackingFailureAuthenticationSolution": "Установите или исправьте «token_auth» в вашем запросе отслеживания.",
+ "TrackingFailureInvalidSiteProblem": "Сайт не существует.",
+ "TrackingFailureInvalidSiteSolution": "Обновите настроенный idSite в трекере.",
+ "TrackingFailures": "Отслеживание сбоев",
+ "TrackingFailuresEmail1": "Это просто для того, чтобы вы знали, что в последние дни произошло %s различных типов ошибок отслеживания.",
+ "TrackingFailuresEmail2": "Чтобы просмотреть все неудавшиеся запросы отслеживания, %1$sнажмите здесь%2$s.",
+ "TrackingFailuresEmailSubject": "Отслеживание ошибок в Matomo Analytics",
+ "TrackingFailuresIntroduction": "На этой странице перечислены ошибки отслеживания, которые произошли в последние %s дн. Обратите внимание, что регистрируются только самые распространенные ошибки отслеживания, а не все.",
+ "TrackingURL": "URL отслеживания",
"TrustedHostConfirm": "Вы уверены, что хотите сменить имя доверенного хоста Matomo?",
"TrustedHostSettings": "Доверенные хосты Matomo",
+ "TwoFactorAuth": "Двухфакторная авторизация",
"UiDemo": "UI Demo",
+ "UncheckToOptOut": "Снимите этот флажок, чтобы отказаться.",
"UpdateSettings": "Настройки обновления",
"UseCustomLogo": "Использовать свой логотип",
"ValidPiwikHostname": "Домен для Matomo",
+ "ViewAllTrackingFailures": "Посмотреть все ошибки отслеживания",
+ "WhatIsNew": "Что нового",
+ "WhatIsNewNoChanges": "На данный момент нет ничего нового",
+ "WhatIsNewNoChangesTitle": "Последние изменения отсутствуют",
+ "WhatIsNewTitle": "Вот что нового в Matomo",
+ "WhatIsNewTooltip": "Узнайте, что нового в Matomo",
"WithOptionalRevenue": "с дополнительным доходом",
- "YouAreOptedOut": "Вы отказались от сбора статистики.",
"YouAreNotOptedOut": "Вы не отказались от сбора статистики.",
+ "YouAreOptedOut": "Вы отказались от сбора статистики.",
"YouMayOptOut": "Вы можете отказаться от уникального cookie, привязанному к вашему браузеру, и идентифицирующего вас в системе аналитики данного сайта, тем самым отказавшись от любого сбора сведений о вас и их анализа на данном сайте.",
- "YouMayOptOutBis": "Снимите галочку и получите исключающий cookie для отказа сбора данных.",
- "OptingYouOut": "Отписываем вас, пожалуйста, подождите...",
- "ProtocolNotDetectedCorrectly": "В данный момент вы просматриваете Matomo через безопасное соединение SSL (используя https), но Matomo смог обнаружить только небезопасное соединение на сервере.",
- "ProtocolNotDetectedCorrectlySolution": "Чтобы удостовериться, что Matomo безопасно запрашивает и обрабатывает ваш контент через HTTPS, вы можете отредактировать свой файл %1$s или изменить ваши настройки прокси, или вы можете добавить строку %2$s под разделом %3$s. %4$sУзнать больше%5$s",
"YouMayOptOut2": "Вы можете запретить сбор и анализ действий на этом сайте.",
"YouMayOptOut3": "Это защитит вашу конфиденциальность, но также не позволит владельцу учиться на ваших действиях и создавать более удобные условия для вас и других пользователей.",
- "UncheckToOptOut": "Снимите этот флажок, чтобы отказаться.",
- "CheckToOptIn": "Установите этот флажок, чтобы подписаться.",
- "MissingTrackingCodeEmailSubject": "Нет трафика для %s записанным Matomo Analytics, начните сейчас",
- "JsTrackingCodeMissingEmail1": "Несколько дней назад вы добавили веб-сайт %s в Matomo Analytics. Мы только что проверили, но Matomo не зарегистрировал трафик на этом сайте.",
- "JsTrackingCodeMissingEmail2": "Чтобы начать отслеживать данные и получать информацию о своих пользователях, вам необходимо настроить отслеживание на своем веб-сайте или в мобильном приложении. Для сайтов просто вставьте код отслеживания прямо перед тегом %s",
- "JsTrackingCodeMissingEmail3": "Чтобы найти и настроить свой код отслеживания, %1$sнажмите здесь%2$s (или посмотрите %3$sруководство по клиенту отслеживания JavaScript%4$s).",
- "TrackingFailuresIntroduction": "На этой странице перечислены ошибки отслеживания, которые произошли в последние %s дн. Обратите внимание, что регистрируются только самые распространенные ошибки отслеживания, а не все.",
- "NoKnownFailures": "Нет известных ошибок отслеживания.",
- "Problem": "Проблема",
- "Solution": "Решение",
- "TrackingURL": "URL отслеживания",
- "LearnMore": "Узнать больше",
- "DeleteAllFailures": "Удалить все ошибки",
- "NTrackingFailures": "%s ошибок отслеживания",
- "ViewAllTrackingFailures": "Посмотреть все ошибки отслеживания",
- "TrackingFailureInvalidSiteProblem": "Сайт не существует.",
- "TrackingFailureInvalidSiteSolution": "Обновите настроенный idSite в трекере.",
- "TrackingFailureAuthenticationProblem": "Запрос не был аутентифицирован, хотя требовалась аутентификация.",
- "TrackingFailureAuthenticationSolution": "Установите или исправьте «token_auth» в вашем запросе отслеживания.",
- "ConfirmDeleteAllTrackingFailures": "Вы уверены, что хотите удалить все ошибки отслеживания?",
- "ConfirmDeleteThisTrackingFailure": "Вы уверены, что хотите удалить эту ошибку отслеживания?",
- "TrackingFailuresEmailSubject": "Отслеживание ошибок в Matomo Analytics",
- "TrackingFailuresEmail1": "Это просто для того, чтобы вы знали, что в последние дни произошло %s различных типов ошибок отслеживания.",
- "TrackingFailuresEmail2": "Чтобы просмотреть все неудавшиеся запросы отслеживания, %1$sнажмите здесь%2$s.",
- "ImportFromGoogleAnalytics": "Импорт из Google Analytics"
+ "YouMayOptOutBis": "Снимите галочку и получите исключающий cookie для отказа сбора данных."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/sk.json b/plugins/CoreAdminHome/lang/sk.json
index 43f615c18f..03ad4faff1 100644
--- a/plugins/CoreAdminHome/lang/sk.json
+++ b/plugins/CoreAdminHome/lang/sk.json
@@ -4,11 +4,12 @@
"Administration": "Administrácia",
"ArchivingSettings": "Archivačné nastavenia",
"BrandingSettings": "Nastavenia Brandingu",
- "ReleaseChannel": "Kanál vydania",
+ "CheckToOptIn": "Pre aktiváciu označte toto zaškrtávacie políčko.",
"ClickHereToOptIn": "Kliknite sem pre prihásenie.",
"ClickHereToOptOut": "Kliknite sem pre odhásenie.",
"CustomLogoHelpText": "Môžete prispôsobiť logo Matomou, ktoré bude zobrazené v užívateľskom rozhraní a emailových reportoch.",
"EmailServerSettings": "Nastavenia e-mailového servera",
+ "FaviconUpload": "Vyberte Favicon pre nahranie",
"ForBetaTestersOnly": "Len pre beta testerov",
"ImageTracking": "Sledovanie obrázkom",
"ImageTrackingIntro1": "Keď má návštevník vypnutý JavaScript, alebo keď JavaScript nemôže byť použitý, môžete použiť obrázkový sledovací odkaz pre sledovanie návštevníkov.",
@@ -16,41 +17,42 @@
"ImportingServerLogs": "Importujem Serverové logy",
"InvalidPluginsWarning": "Nasledujúce moduly nie sú kompatibilné s %1$s a nemohli byť načítané: %2$s.",
"InvalidPluginsYouCanUninstall": "Môžete aktualizovať alebo odinštalovať tieto moduly na stránke %1$sSpráva modulov%2$s.",
- "JavaScriptTracking": "Sledovanie JavaScriptom",
+ "JSTrackingIntro2": "Akonáhle máte JavaScriptový sledovací kód pre Vašu webovú stránku, skopírujte a vložte ho na všetky stránky, ktoré chcete sledovať Matomoom.",
+ "JSTrackingIntro4": "Ak nechcete použiť JavaScript na sledovanie návštevníkov, %1$svygenerujte odkaz na sledovanie obrázkom nižšie%2$s.",
+ "JSTrackingIntro5": "Ak chcete robiť viac než len sledovať zobrazenia stránok, prosím pozrite sa na %1$sdokumentáciu JavaScriptového sledovania Matomoom%2$s pre zoznam dostupných funkcií. Použitím týchto funkcií môžete sledovať ciele, vlastné premenné, objednávky z elektronického obchodu a ďalšie.",
"JSTracking_DisableCookies": "Deaktivovať všetky sledovacie cookies",
"JSTracking_EnableDoNotTrack": "Aktivovať detekciu DoNotTrack u klienta",
"JSTracking_TrackNoScript": "Sledovať užívateľov s vypnutým JavaScriptom",
"JSTracking_VisitorCustomVars": "Sledovať vlastné premenné pre tohto zákazníka",
- "JSTrackingIntro2": "Akonáhle máte JavaScriptový sledovací kód pre Vašu webovú stránku, skopírujte a vložte ho na všetky stránky, ktoré chcete sledovať Matomoom.",
- "JSTrackingIntro4": "Ak nechcete použiť JavaScript na sledovanie návštevníkov, %1$svygenerujte odkaz na sledovanie obrázkom nižšie%2$s.",
- "JSTrackingIntro5": "Ak chcete robiť viac než len sledovať zobrazenia stránok, prosím pozrite sa na %1$sdokumentáciu JavaScriptového sledovania Matomoom%2$s pre zoznam dostupných funkcií. Použitím týchto funkcií môžete sledovať ciele, vlastné premenné, objednávky z elektronického obchodu a ďalšie.",
+ "JavaScriptTracking": "Sledovanie JavaScriptom",
"LogoUpload": "Vyberte logo pre nahranie",
- "FaviconUpload": "Vyberte Favicon pre nahranie",
+ "MenuDevelopment": "Vývoj",
"MenuDiagnostic": "Diagnostika",
"MenuGeneralSettings": "Všeobecné nastavenie",
- "MenuSystem": "Systém",
- "MenuDevelopment": "Vývoj",
"MenuMeasurables": "Metriky",
+ "MenuSystem": "Systém",
"OptOutComplete": "Odhlásenie nastavené. Vaše návštevy nebudú sledované nástrojom webovej analýzy.",
"OptOutCompleteBis": "Poznámka: ak zmažete cookie, odstránite vylučovací cookie alebo zmeníte počítač alebo prehliadač, budete musieť vykonať procedúru nastavenia odhlásenia znova.",
"OptOutForYourVisitors": "Odhlásenie pre Vašich návštevníkov",
- "PiwikIsInstalledAt": "Matomo je nainštalovaný na",
"PersonalPluginSettings": "Osobné nastavenia modulu",
+ "PiwikIsInstalledAt": "Matomo je nainštalovaný na",
"PluginSettings": "Nastavenia modulov",
"PluginSettingsSaveFailed": "Uloženie nastavení modulu zlyhalo",
"PluginSettingsSaveSuccess": "Nastavenia modulu aktualizované.",
- "SettingsSaveSuccess": "Nastavenia aktualizované.",
+ "ReleaseChannel": "Kanál vydania",
"SendPluginUpdateCommunication": "Poslať e-mail keď je dostupná aktualizácia modulu",
+ "SettingsSaveSuccess": "Nastavenia aktualizované.",
"TrackAGoal": "Sledovať cieľ",
"TrackingCode": "Kód sledovania",
"TrustedHostConfirm": "Ste si istí, že chcete zmeniť dôveryhodné hostname pre Matomo?",
+ "UncheckToOptOut": "Pre deaktiváciu analyzovania aktivít odstráňte označenie tohto zaškrtávacieho políčka.",
"UpdateSettings": "Aktualizovať nastavenia",
"UseCustomLogo": "Použiť vlastné logo",
+ "YouAreNotOptedOut": "Aktuálne nie ste odhlásený.",
"YouAreOptedOut": "Aktuálne ste odhlásený.",
"YouMayOptOut": "Zakliknutím v rámčeku nižšie, môžete zakázať uloženie cookie s identifikačným číslom prideleným vášmu počítaču a tým zamedziť prevádzkovateľovi tohto webu zhromažďovať a analyzovať štatistické údaje.",
- "YouMayOptOutBis": "Ak ste sa rozhodli pre túto možnosť, kliknite prosím na priložený odkaz pre uloženie deaktivačného cookie vo svojom prehliadači.",
"YouMayOptOut2": "Máte možnosť zabrániť analyzovaniu a prepájaniu aktivít, ktoré tu vykonáte.",
"YouMayOptOut3": "Vďaka tomu síce ochránite vaše súkromie, no zároveň zabránite prevádzkovateľovi v tom, aby sa poučil z vašich aktivít a aby mohol zlepšovať ovládateľnosť pre vás a ďalších používateľov.",
- "UncheckToOptOut": "Pre deaktiváciu odstráňte označenie tohto zaškrtávacieho políčka."
+ "YouMayOptOutBis": "Ak ste sa rozhodli pre túto možnosť, kliknite prosím na priložený odkaz pre uloženie deaktivačného cookie vo svojom prehliadači."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/sl.json b/plugins/CoreAdminHome/lang/sl.json
index ededd81d38..4e61563dac 100644
--- a/plugins/CoreAdminHome/lang/sl.json
+++ b/plugins/CoreAdminHome/lang/sl.json
@@ -9,6 +9,7 @@
"CustomLogoFeedbackInfo": "Če želite prilagoditi Matomo logo, bi morda želeli tudi skriti povezavo %1$s v vrhnjem meniju. To lahko storite tako, da onemogočite vtičnik Feedback na strani %2$sUpravljanje vtičnikov%3$s.",
"CustomLogoHelpText": "Matomo-ov logo lahko prilagodite po vaših željah. Spremembe bodo vidne tako v uporabniškem vmesniku, kot v email poročilih.",
"EmailServerSettings": "Nastavitev strežnika za email",
+ "FaviconUpload": "Izberite Favicon datoteko za prenos",
"ForBetaTestersOnly": "Samo za Beta testerje",
"ImageTracking": "Sledenje s pomočjo slike",
"ImageTrackingIntro1": "Ko ima uporabnik onemogočen JavaScript ali, ko JavaScript ne more biti uporabljen, lahko za sledenje obiskovalcev uporabite povezavo na sliko.",
@@ -18,20 +19,19 @@
"ImportingServerLogs": "Uvažanje strežniških log datotek",
"JavaScriptTracking": "Sledenje s pomočjo Javascripta",
"LogoUpload": "Izberite Logo za nalaganje",
- "FaviconUpload": "Izberite Favicon datoteko za prenos",
+ "MenuDevelopment": "Razvoj",
"MenuDiagnostic": "Diagnostika",
"MenuGeneralSettings": "Splošne nastavitve",
- "MenuDevelopment": "Razvoj",
"OptOutComplete": "Odjavljeno; vaši obiski spletne strani ne bodo zabeleženi z orodjem za analitiko.",
"OptOutCompleteBis": "Upoštevajte, da če izbrišete piškotke, izbrišete tudi piškotek za onemogočanje analitike ali če spremenite računalnike ali spletne brskalnike, morate postopek odjave izvesti še enkrat.",
"OptOutDntFound": "Vaš brskalnik sporoča, da ne želite biti sledeni. To je nastavitev brskalnika, zato se ne boste mogli odločiti za sledenje, dokler ne onemogočite funkcije »Ne sledi« v vašem brskalniku.",
"OptOutExplanation": "Matomo želi zagotoviti zasebnost na internetu. Če želite svojim obiskovalcem omogočiti 'opt-out' iz Matomo spletne analitike, potem lahko dodate naslednjo HTML kodo na vašo spletno stran, npr. na stran 'Varovanje zasebnosti'.",
"OptOutForYourVisitors": "'Opt-out' za vaše obiskovalce",
+ "OptingYouOut": "Odjavljamo vas, prosimo počakajte…",
"PiwikIsInstalledAt": "Matomo je nameščen na",
"UseCustomLogo": "Uporabi poseben logo",
"YouAreOptedOut": "Trenutno niste prijavljeni.",
"YouMayOptOut": "Odločite se lahko, da vašemu računalniku ne dodelimo enolične številčne oznake, ki jo potrebujemo za statistično analizo podatkov na tem spletnem mestu.",
- "YouMayOptOutBis": "Za uveljavitev te odločitve prosimo kliknite spodaj, prejeli boste piškotek v katerega se bo odločitev shranila.",
- "OptingYouOut": "Odjavljamo vas, prosimo počakajte..."
+ "YouMayOptOutBis": "Za uveljavitev te odločitve prosimo kliknite spodaj, prejeli boste piškotek v katerega se bo odločitev shranila."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/sq.json b/plugins/CoreAdminHome/lang/sq.json
index e5019e7d39..7d0c094849 100644
--- a/plugins/CoreAdminHome/lang/sq.json
+++ b/plugins/CoreAdminHome/lang/sq.json
@@ -4,157 +4,162 @@
"Administration": "Administrim",
"ArchivingSettings": "Rregullime arkivimi",
"BrandingSettings": "Rregullime marke",
- "ErrorEmailFromAddressNotValid": "Adresa SMTP për fushën Nga s’është e vlefshme",
- "ReleaseChannel": "Kanal hedhjesh në qarkullim",
- "ClickHereToOptIn": "Klikoni këtu për të kryer \"opt in\"",
- "ClickHereToOptOut": "Klikoni këtu për të kryer \"opt out\".",
+ "BruteForce": "Me Zor",
+ "CheckToOptIn": "I vini shenjë kësaj kutize që të zgjidhni përfshirjen.",
+ "ClickHereToOptIn": "Klikoni këtu për të kryer “opt in”.",
+ "ClickHereToOptOut": "Klikoni këtu për të kryer “opt out”.",
+ "ConfirmDeleteAllTrackingFailures": "Jeni i sigurt se doni të fshihen krejt dështimet e ndjekjeve?",
+ "ConfirmDeleteThisTrackingFailure": "Jeni i sigurt se doni të fshihet ky dështim ndjekje?",
"CorsDomains": "Përkatësi Cross-Origin Resource Sharing (CORS)",
- "CorsDomainsHelp": "Mund të përkufizoni përkatësi ose nënpërkatësi të tilla si http:\/\/shembull.com ose http:\/\/stats.shembull.com. Ose, që të lejoni kërkesa ndërpërkatësore për krejt përkatësitë, thjesht shtoni *",
+ "CorsDomainsHelp": "Mund të përkufizoni përkatësi ose nënpërkatësi të tilla si http://shembull.com ose http://stats.shembull.com. Ose, që të lejoni kërkesa ndërpërkatësore për krejt përkatësitë, thjesht shtoni *",
"CustomLogoFeedbackInfo": "Nëse e përshtatni logon e Matomo-s, mund t’ju interesonte edhe fshehja lidhjes %1$s te menuja në krye. Për ta bërë këtë, mund të çaktivizoni shtojcën e Përshtypjeve te faqja e %2$sAdministrimit të Shtojcave%3$s.",
"CustomLogoHelpText": "Logon e Matomo-s, që do të shfaqet në ndërfaqen e përdoruesit dhe raportet email, mund ta përshtatni si doni.",
- "DevelopmentProcess": "Teksa procesi ynë i zhvillimit përfshin mijëra teste të automatizuara, Testuesit Beta luajnë një rol kyç në plotësimin e \"politikës Pa të Meta\" në Matomo.",
+ "DeleteAllFailures": "Fshiji krejt dështimet",
+ "DevelopmentProcess": "Teksa procesi ynë i zhvillimit përfshin mijëra teste të automatizuara, Testuesit Beta luajnë një rol kyç në plotësimin e rregullit “Pa të Meta” në Matomo.",
"EmailServerSettings": "Rregullime shërbyesi email",
+ "ErrorEmailFromAddressNotValid": "Adresa SMTP për fushën Nga s’është e vlefshme",
+ "FaviconUpload": "Përzgjidhni për ngarkim një Favikonë",
+ "FileUploadDisabled": "Ngarkimi i kartelave s’është i aktivizuar te formësimi juaj për PHP-në. Që të ngarkoni logon tuaj vetjake, ju lutemi, caktoni %s te php.ini dhe rinisni shërbyesin tuaj web.",
"ForBetaTestersOnly": "Vetëm për testues beta",
+ "HttpTrackingApi": "API Ndjekjesh HTTP",
+ "HttpTrackingApiDescription": "%1$sAPI për Ndjekje HTTP%2$s ju lejon të ndiqni ç’të doni. Kjo mund të jetë e dobishme, nëse po përdorni një gjuhë programimi për të cilën ende s’ka SDK. Mund të jetë e dobishme edhe kur doni të ndiqni pajisje apo aplikacion në një rrugë të veçantë.",
"ImageTracking": "Ndjekje Figurash",
"ImageTrackingIntro1": "Kur një vizitor e ka JavaScript-in të çaktivizuar, ose kur JavaScript-i s’përdoret dot, mund të përdorni një lidhje ndjekjeje figurash për të ndjekur vizitorët.",
"ImageTrackingIntro2": "Prodhojeni lidhjen më poshtë dhe kopjojeni dhe hidheni te faqja HTML-në e prodhuar. Nëse këtë e përdorni për rastet kur s’funksionon ndjekja përmes JavaScript-it, mund ta vendosni brenda etiketash %1$s.",
"ImageTrackingIntro3": "Për krejt listën e mundësive që mund të përdorni me një lidhje ndjekjeje figurash, shihni %1$sDokumentim API Ndjekjesh%2$s.",
"ImageTrackingLink": "Lidhje Ndjekjeje Figure",
+ "ImportFromGoogleAnalytics": "Importim prej Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Nëse keni një zotërim Google Analytics dhe po kaloni në Matomo, mund të importoni të dhënat tuaja ekzistuese duke përdorur shtojcën %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Importim Regjistrash Shërbyesi",
"ImportingServerLogsDesc": "Një alternativë kundrejt ndjekjes së vizitorëve përmes shfletuesit (ose përmes JavaScript-it, ose përmes një lidhjeje figurash) është importimi i vazhdueshëm i regjistrave të shërbyesit. Mësoni më tepër rreth %1$sAnalizave me bazë Kartelash Regjistër të Shërbyesit%2$s.",
"InvalidPluginsWarning": "Shtojcat vijuese s’janë të përputhshme me %1$s dhe s’u ngarkuan dot: %2$s.",
"InvalidPluginsYouCanUninstall": "Këto shtojca mund t’i përditësoni ose çinstaloni që nga faqja %1$sAdministroni Shtojca%2$s.",
- "JavaScriptTracking": "Ndjekje me JavaScript",
- "HttpTrackingApi": "API Ndjekjesh HTTP",
- "HttpTrackingApiDescription": "%1$sAPI për Ndjekje HTTP%2$s ju lejon të ndiqni ç’të doni. Kjo mund të jetë e dobishme, nëse po përdorni një gjuhë programimi për të cilën ende s’ka SDK. Mund të jetë e dobishme edhe kur doni të ndiqni pajisje apo aplikacion në një rrugë të veçantë.",
+ "JSTrackingIntro1": "Vizitorët në sajtin tuaj mund t’i ndiqni në mjaft rrugë të ndryshme. Rruga e këshilluar për ta bërë është përmes JavaScript-it. Që të përdoret kjo metodë, duhet të garantoni që çdo faqe e sajtit tuaj të përmbajë një copëz kodi JavaScript, të cilin mund ta prodhoni nga këtu.",
+ "JSTrackingIntro2": "Pasi të keni kodin JavaScript të ndjekjeve për sajtin tuaj, kopjojeni dhe hidheni te krejt faqet që dëshironi të ndiqet me Matomo.",
+ "JSTrackingIntro3a": "Në shumicën e sajteve, blogjeve, CMS-ve, etj. mund të përdorni një shtojcë të gatshme, për të bërë punën teknike në vendin tuaj. (Shihni %1$slistën tonë të shtojcave të përdorura për integrim të Matomo-s%2$s).",
+ "JSTrackingIntro3b": "Nëse s’ka shtojcë të tillë, mund të përpunoni gjedhet e sajtit tuaj dhe të shtoni kodin JavaScript të ndjekjes te etiketa &lt;/head&gt;, e cila shpesh përkufizohet brenda një kartele gjedhe 'header.php', 'header.tpl' ose të ngjashme.",
+ "JSTrackingIntro4": "Nëse s’doni të përdorni JavaScript-in për ndjekje vizitorësh, %1$sprodhoni më poshtë një lidhje ndjekjeje figurash%2$s.",
+ "JSTrackingIntro5": "Nëse dëshironi të bëni më shumë se sa thjesht ndjekje parjesh të faqeve, ju lutemi, hidhini një sy %1$sdokumentimit të Ndjekjeve Matomo me Javascript%2$s për listën e plotë të funksioneve të mundshëm. Duke përdorur këto funksione mund të ndiqni objektiva, ndryshore vetjake, porosi e-tregtie, shporta të braktisura, etj.",
"JSTracking_CampaignKwdParam": "Parametër Fjalëkyçesh Fushatash",
"JSTracking_CampaignNameParam": "Parametër Emrash Fushatash",
"JSTracking_CodeNoteBeforeClosingHead": "Bëni të mundur që ky kod të gjendet në çdo faqe të sajtit tuaj. Këshillojmë ta ngjitni mu para etiketës mbyllëse %1$s.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Bëni të mundur që ky kod të jetë i trupëzuar brenda një elementi programthi në çdo faqe të sajtit tuaj. Këshillojmë ta ngjitni mu para etiketës mbyllëse të kreut.",
- "JSTracking_CustomCampaignQueryParam": "Përdorni emra vetjakë parametrash kërkese për emra & fjalëkyçe të fushatës",
"JSTracking_CrossDomain": "Si parazgjedhje, ID-ja e vizitorit që identifikon një vizitor unik depozitohet në cookies shfletuesi nga pala e interesuar, të cilat mund të lexohen vetëm nga faqe të së njëjtës përkatësi. Aktivizimi i lidhjes nga përkatësia në përkatësi ju lejon të ndiqni krejt veprimet dhe parjet e faqeve të një vizitori të dhënë për të njëjtën vizitë edhe kur ai sheh faqe në disa përkatësi. Kurdo që një përdorues klikon mbi një lidhje te një nga URL-të alias të sajtit tuaj, do të shtohet një parametër URL-je pk_vid që jep ID-në e Vizitorit.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Që të mund të përdorni lidhje ndërpërkatësore, duhet të përcaktoni më shumë se një emër përkatësie (URL-ra) për sajtin tuaj.",
+ "JSTracking_CustomCampaignQueryParam": "Përdorni emra vetjakë parametrash kërkese për emra & fjalëkyçe të fushatës",
"JSTracking_CustomCampaignQueryParamDesc": "Shënim: %1$sMatomo do të zbulojë vetvetiu parametra Google Analytics.%2$s",
"JSTracking_DisableCookies": "Çaktivizo krejt cookie-t e ndjekjeve",
- "JSTracking_DisableCookiesDesc": "Çaktivizon krejt cookie-t Matomo. Cookie-t ekzistuese Matomo për këtë sajt do të fshihen me parjen pasuese të faqeve.",
+ "JSTracking_DisableCookiesDesc": "Çaktivizon krejt cookie-t nga palë të para. Cookie-t ekzistuese Matomo për këtë sajt do të fshihen me parjen pasuese të faqeve.",
"JSTracking_EnableCrossDomainLinking": "Aktivizon lidhje nga përkatësia në përkatësi",
"JSTracking_EnableDoNotTrack": "Aktivizoni zbulim MosMëGjurmo në anën e klientit",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Shënim: Mbulimi i MosMëGjurmo-së në anën e shërbyesit është i aktivizuar, ndaj kjo mundësi s’do të ketë efekt.",
"JSTracking_EnableDoNotTrackDesc": "Pra, s’do të dërgohen kërkesa ndjekjeje, nëse vizitorët dëshirojnë të mos ndiqen.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Shënim: Mbulimi i MosMëGjurmo-së në anën e shërbyesit është i aktivizuar, ndaj kjo mundësi s’do të ketë efekt.",
+ "JSTracking_EndNote": "Shënim: Te ndarja %1$sKod Ndjekjeje%2$s e përgjegjësit mund të prodhoni kod vetjak ndjekjesh.",
"JSTracking_GroupPageTitlesByDomain": "Paraprije titullin e faqes me përkatësinë e sajtit, kur kryhet ndjekje",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Pra, nëse dikush viziton faqen 'Rreth' te blog.%1$s, do të regjistrohet si 'blog \/ Rreth'. Kjo është rruga më e lehtë për të pasur një përmbledhje të trafikut tuaj sipas nënpërkatësish.",
- "JSTracking_MergeAliases": "Te raporti \"Lidhje për jashtë\", fshihni klikime mbi URL të njohura si aliase të",
- "JSTracking_MergeAliasesDesc": "Pra, klikimet mbi lidhjet për te URL Aliasesh (p.sh. %s) nuk do të numërohen si \"Lidhje për jashtë\".",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Pra, nëse dikush viziton faqen 'Rreth' te blog.%1$s, do të regjistrohet si 'blog / Rreth'. Kjo është rruga më e lehtë për të pasur një përmbledhje të trafikut tuaj sipas nënpërkatësish.",
+ "JSTracking_MergeAliases": "Te raporti “Lidhje për jashtë”, fshihni klikime mbi URL të njohura si aliase të",
+ "JSTracking_MergeAliasesDesc": "Pra, klikimet mbi lidhjet për te URL Aliasesh (p.sh., %s) nuk do të numërohen si “Lidhje për jashtë”.",
"JSTracking_MergeSubdomains": "Ndiq vizitorët nëpër krejt nënpërkatësitë e",
"JSTracking_MergeSubdomainsDesc": "Pra, nëse një vizitor viziton %1$s dhe %2$s, ai do të numërohet si një vizitor i vetëm.",
"JSTracking_PageCustomVars": "Ndiqni për çdo parje faqeje një ndryshore vetjake",
- "JSTracking_PageCustomVarsDesc": "Për shembull, me emër ndryshoreje \"Kategori\" dhe vlerë \"Artikuj Gazete\".",
+ "JSTracking_PageCustomVarsDesc": "Për shembull, me emër ndryshoreje “Kategori” dhe vlerë “Artikuj Gazete”.",
"JSTracking_TrackNoScript": "Ndiq përdoruesit me JavaScript të çaktivizuar",
"JSTracking_VisitorCustomVars": "Ndiq ndryshore vetjake për këtë vizitor",
- "JSTracking_VisitorCustomVarsDesc": "Për shembull, me emër ndryshoreje \"Lloj\" dhe vlerë \"Klient\".",
- "JSTracking_EndNote": "Shënim: Te ndarja %1$sKod Ndjekjeje%2$s e përgjegjësit mund të prodhoni kod vetjak ndjekjesh.",
- "JSTrackingIntro1": "Vizitorët në sajtin tuaj mund t’i ndiqni në mjaft rrugë të ndryshme. Rruga e këshilluar për ta bërë është përmes JavaScript-it. Që të përdoret kjo metodë, duhet të garantoni që çdo faqe e sajtit tuaj të përmbajë një copëz kodi JavaScript, të cilin mund ta prodhoni nga këtu.",
- "JSTrackingIntro2": "Pasi të keni kodin JavaScript të ndjekjeve për sajtin tuaj, kopjojeni dhe hidheni te krejt faqet që dëshironi të ndiqet me Matomo.",
- "JSTrackingIntro3a": "Në shumicën e sajteve, blogjeve, CMS-ve, etj. mund të përdorni një shtojcë të gatshme, për të bërë punën teknike në vendin tuaj. (Shihni %1$slistën tonë të shtojcave të përdorura për integrim të Matomo-s%2$s).",
- "JSTrackingIntro3b": "Nëse s’ka shtojcë të tillë, mund të përpunoni gjedhet e sajtit tuaj dhe të shtoni kodin e gjurmimit JavaScript te etiketa &lt;\/head&gt;, e cila shpesh përkufizohet brenda një kartele gjedhe 'header.php', 'header.tpl' ose të ngjashme.",
- "JSTrackingIntro4": "Nëse s’doni të përdorni JavaScript-in për ndjekje vizitorësh, %1$sprodhoni më poshtë një lidhje ndjekjeje figurash%2$s.",
- "JSTrackingIntro5": "Nëse dëshironi të bëni më shumë se sa thjesht ndjekje parjesh të faqeve, ju lutemi, hidhini një sy %1$sdokumentimit të Ndjekjeve Matomo me Javascript%2$s për listën e plotë të funksioneve të mundshëm. Duke përdorur këto funksione mund të ndiqni objektiva, ndryshore vetjake, porosi e-tregtie, shporta të braktisura, etj.",
+ "JSTracking_VisitorCustomVarsDesc": "Për shembull, me emër ndryshoreje “Lloj” dhe vlerë “Klient”.",
+ "JavaScriptTracking": "Ndjekje me JavaScript",
+ "JsTrackingCodeMissingEmail1": "Ca ditë më parë shtuat sajtin '%s' te Matomo Analytics i juaj. Sapo kontrolluam dhe Matomo-ja juaj s’duket të ketë të regjistruar trafik për këtë sajt.",
+ "JsTrackingCodeMissingEmail2": "Që të fillohet të ndiqen të dhëna dhe të merret ide mbi prirjet e përdoruesve tuaj, lypset të rregulloni ndjekjen në sajtin tuaj ose në aplikacionin për celular. Për sajte, thjesht trupëzoni në ta kodin e ndjekjes mu para etiketës %s.",
+ "JsTrackingCodeMissingEmail3": "Që të gjeni dhe përshtatni kodin tuaj të ndjekjeve, %1$sklikoni këtu%2$s (ose hidhini një sy %3$sudhërrëfyesit për Klient JavaScript Ndjekjesh%4$s).",
+ "LearnMore": "Mësoni më tepër",
"LogoNotWriteableInstruction": "Që të përdorni logon tuaj vetjake në vend të asaj parazgjedhje të Matomo-s, jepni të drejta shkrimi mbi këtë drejtori: %1$s Matomo lyp hyrje shkrimi për logot tuaja të depozituara në kartelat %2$s.",
- "FileUploadDisabled": "Ngarkimi i kartelave s’është i aktivizuar te formësimi juaj për PHP-në. Që të ngarkoni logon tuaj vetjake, ju lutemi, caktoni %s te php.ini dhe rinisni shërbyesin tuaj web.",
- "LogoUploadFailed": "Kartela e ngarkuar s’mund të përpunohej dot. Ju lutemi, kontrolloni nëse kartela ka një format të vlefshëm.",
"LogoUpload": "Përzgjidhni një Logo për ta ngarkuar",
- "FaviconUpload": "Përzgjidhni për ngarkim një Favikonë",
+ "LogoUploadFailed": "Kartela e ngarkuar s’mund të përpunohej dot. Ju lutemi, kontrolloni nëse kartela ka një format të vlefshëm.",
"LogoUploadHelp": "Ju lutemi, ngarkoni një kartelë në formatet %1$s me lartësi minimum prej %2$s piksel.",
+ "LtsReleases": "Versionet LTS (Long Term Support) përfitojnë vetëm ndreqje sigurie dhe të metash.",
+ "MenuDevelopment": "Zhvillim",
"MenuDiagnostic": "Diagnostikim",
"MenuGeneralSettings": "Rregullime të përgjithshme",
- "MenuSystem": "Sistem",
- "MenuDevelopment": "Zhvillim",
"MenuMeasurables": "Të matshme",
- "OptOutComplete": "\"Opt-out\" u plotësua; vizitat tuaja në këtë sajt s’do të regjistrohen nga mjeti Analiza Web.",
- "OptOutCompleteBis": "Mbani parasysh që nëse i hiqni cookie-t tuaja, fshini cookie-in për \"opt-out\", ose ndërroni kompjuter apo shfletues Web, do t’ju duhet të kryeni sërish procedurën për \"opt-out\".",
+ "MenuSystem": "Sistem",
+ "MissingTrackingCodeEmailSubject": "S’ka regjistrim trafiku në Matomo Analytics for %s, fillojani tani",
+ "NTrackingFailures": "%s dështime ndjekjeje",
+ "NoKnownFailures": "S’ka dështime ndjekjeje të njohura.",
+ "OptOutComplete": "“Opt-out” u plotësua; vizitat tuaja në këtë sajt s’do të regjistrohen nga mjeti Analiza Web.",
+ "OptOutCompleteBis": "Mbani parasysh që nëse i hiqni cookie-t tuaja, fshini cookie-in për “opt-out”, ose ndërroni kompjuter apo shfletues Web, do t’ju duhet të kryeni sërish procedurën për “opt-out”.",
"OptOutDntFound": "S’po ndiqeni, ngaqë shfletuesi juaj njofton se nuk doni të ndiqeni. Ky është një rregullim te shfletuesi juaj, ndaj s’do të jeni në gjendje të zgjidhni të kundërtën, para se të çaktivizoni veçorinë 'Mos Më Gjurmo'.",
- "OptOutExplanation": "Matomo-s është i përkushtuar ndaj mundësimit të privatësisë në Internet. Për t’u dhënë mundësinë e zgjedhjes së \"opt-out\" te Analizat Web Matomo, mund të shtoni kodin HTML vijues te një nga faqet e sajtit tuaj, për shembull te faqja e Rregullave të Privatësisë.",
- "OptOutExplanationIntro": "Ky kod do të shfaqë një Iframe që përmban një lidhje me të cilën vizitorët të mund të zgjedhin \"opt-out\" për Matomo-n, duke depozituar një \"opt-out cookie\" në shfletuesin e tyre. Shihni më poshtë (ose %1$s klikoni këtu%2$s) që të shihni lëndën që do të shfaqet nga iFrame-i.",
- "OptOutForYourVisitors": "\"Opt-out\" i Matomo-s për vizitorët tuaj",
- "PiwikIsInstalledAt": "Matomo është instaluar te",
+ "OptOutErrorNoCookies": "Mundësia për zgjedhje lënieje jashtë ndjekjes lyp që cookie-t të jenë të aktivizuara.",
+ "OptOutErrorNotHttps": "Veçoria për zgjedhje lënieje jashtë ndjekjes mund të mos funksionojë, ngaqë ky sajt s’u ngarkua përmes HTTPS-je. Ju lutemi, ringarkojeni faqen që të shihni nëse gjendja për lënie jashtë ndryshoi.",
+ "OptOutErrorWindowOpen": "Veçoria për zgjedhje lënieje jashtë ndjekjes mund të mos funksionojë, ngaqë duket se dritarja flluskë për zgjedhjen qe bllokuar. Ju lutemi, ringarkojeni faqen që të shihni nëse gjendja për lënie jashtë ndryshoi.",
+ "OptOutExplanation": "Matomo-s është i përkushtuar ndaj mundësimit të privatësisë në Internet. Për t’u dhënë mundësinë e zgjedhjes së “opt-out” te Analizat Web Matomo, mund të shtoni kodin HTML vijues te një nga faqet e sajtit tuaj, për shembull, te faqja e Rregullave të Privatësisë.",
+ "OptOutExplanationIntro": "Ky kod do të shfaqë një iframe që përmban një lidhje me të cilën vizitorët të mund të zgjedhin “opt-out” për Matomo-n, duke depozituar një “opt-out cookie” në shfletuesin e tyre. Shihni më poshtë (ose %1$s klikoni këtu%2$s) që të shihni lëndën që do të shfaqet nga iFrame-i.",
+ "OptOutForYourVisitors": "“Opt-out” i Matomo-s për vizitorët tuaj",
+ "OptingYouOut": "Po liheni jashtë kësaj, ju lutemi, pritni…",
"PersonalPluginSettings": "Rregullime Personale për Shtojcën",
- "PluginSettingChangeNotAllowed": "Nuk keni leje të ndryshoni vlerën e rregullimit \"%1$s\" te shtojca \"%2$s\"",
- "PluginSettingReadNotAllowed": "Nuk keni leje të lexoni vlerën e rregullimit \"%1$s\" te shtojca \"%2$s\"",
+ "PiwikIsInstalledAt": "Matomo është instaluar te",
+ "PluginSettingChangeNotAllowed": "S’keni leje të ndryshoni vlerën e rregullimit “%1$s” te shtojca “%2$s”",
+ "PluginSettingReadNotAllowed": "S’keni leje të lexoni vlerën e rregullimit “%1$s” te shtojca “%2$s”",
"PluginSettings": "Rregullime Shtojce",
- "PluginSettingsIntro": "Prej këtu mund të ndryshoni rregullimet për shtojcat vijuese nga palë të 3ta:",
- "PluginSettingsValueNotAllowed": "Vlera për fushën \"%1$s\" te shtojca \"%2$s\" nuk është vlerë e lejuar",
- "PluginSettingsSaveFailed": "Dështoi ruajtja e rregullimeve të shtojcës",
+ "PluginSettingsIntro": "Prej këtu mund të ndryshoni rregullimet për shtojcat vijuese nga palë të treta:",
+ "PluginSettingsSaveFailed": "S’u ruajtën dot rregullimet e shtojcës",
"PluginSettingsSaveSuccess": "Rregullimet e shtojcës u përditësuan.",
- "TrackingFailures": "Dështime ndjekjeje",
- "SettingsSaveSuccess": "Rregullimet u përditësuan.",
+ "PluginSettingsValueNotAllowed": "Vlera për fushën “%1$s” te shtojca “%2$s” s’është vlerë e lejuar",
+ "Problem": "Problem",
+ "ProtocolNotDetectedCorrectly": "Jeni duke e parë Matomo-n përmes një lidhjeje të sigurt SSL (po përdorni HTTPS), por Matomo mund të zbulojë vetëm një lidhje jo të sigurt me shërbyesin.",
+ "ProtocolNotDetectedCorrectlySolution": "Që ta bëni Matomo-n të kërkojë dhe shërbejë lëndën tuaj përmes HTTPS-je, mund të përpunoni kartelën tuaj %1$s dhe ose të formësoni rregullime ndërmjetësi, ose mund të shtoni rreshtin %2$s nën ndarjen %3$s. %4$sMësoni më tepër%5$s",
+ "ReleaseChannel": "Kanal hedhjesh në qarkullim",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Dikush fshiu krejt token-ët e mirëfilltësimit në llogarinë tuaj.",
+ "SecurityNotificationCheckTwoFactor": "Ju lutemi, kontrolloni aplikacionin tuaj të mirëfilltësimit dyfaktorësh ose pajisjen tuaj.",
+ "SecurityNotificationEmailSubject": "Njoftim Sigurie",
+ "SecurityNotificationIfItWasYou": "Nëse qetë ju, vazhdoni. Nëse s’e njihni këtë veprimtari, ju lutemi, ricaktoni fjalëkalimin tuaj.",
+ "SecurityNotificationRecoveryCodesRegeneratedBody": "Dikush prodhoi kode të rinj rimarrjeje me mirëfilltësim dyfaktorësh për llogarinë tuaj.",
+ "SecurityNotificationRecoveryCodesShowedBody": "Dikush pa kodet e rimarrjes me mirëfilltësim dyfaktorësh të llogarisë tuaj.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Një tjetër superpërdorues (%1$s) ndryshoi rregullimet e sistemit. Rregullime të prekura: %2$s. Nëse dini gjë rreth kësaj veprimtarie, vazhdoni. Nëse s’e njihni këtë veprimtari, ju lutemi, lidhuni me superpërdorues të tjerë.",
+ "SecurityNotificationSettingsChangedByUserBody": "Dikush ndryshoi rregullimet e sistemit. Rregullime të prekura: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Dikush krijoi një token mirëfilltësimi (përshkrimi: %s) në llogarinë tuaj. Nëse s’qetë ju, fshijeni token-in.",
+ "SecurityNotificationTokenAuthDeletedBody": "Dikush fshiu një token mirëfilltësimi (përshkrim: %s) në llogarinë tuaj.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Dikush çaktivizoi mirëfilltësim dyfaktorësh në llogarinë tuaj.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Dikush aktivizoi mirëfilltësim dyfaktorësh në llogarinë tuaj.",
+ "SecurityNotificationUserCreatedBody": "Dikush krijoi një përdorues të ri (kredenciale hyrjeje: %s) në llogarinë tuaj.",
+ "SecurityNotificationUserDeletedBody": "Dikush fshiu një përdorues (kredenciale hyrjeje: %s) në llogarinë tuaj.",
"SendPluginUpdateCommunication": "Dërgo një email kur ka gati një përditësim shtojce",
"SendPluginUpdateCommunicationHelp": "Superpërdoruesve do t’u dërgohet një email kur për këtë shtojcë të ketë gati një version të ri.",
+ "SettingsSaveSuccess": "Rregullimet u përditësuan.",
+ "Solution": "Zgjidhje",
"StableReleases": "Nëse Matomo është pjesë kritike e biznesit tuaj, ju këshillojmë të përdorni versionin më të ri të qëndrueshëm. Nëse përdorni versionin më të ri beta dhe gjeni një të metë ose keni një sugjerim, ju lutemi, %1$sshihni këtu%2$s.",
- "LtsReleases": "Versionet LTS (Long Term Support) përmbajnë vetëm ndreqje sigurie dhe të metash.",
"SystemPluginSettings": "Rregullime Shtojce Sistemi",
"TrackAGoal": "Ndiqni një objektiv",
"TrackingCode": "Kod Ndjekjeje",
"TrackingCodeIntro": "Matomo ju ofron rrugë të ndryshme për të trupëzuar kod në sajtin tuaj, aplikacionin për celular, dhe madje për çfarëdo pajisjeje apo aplikacioni.",
+ "TrackingFailureAuthenticationProblem": "Kërkesa s’u mirëfilltësua, por mirëfilltësimi qe i domosdoshëm.",
+ "TrackingFailureAuthenticationSolution": "Caktoni ose ndreqni një “token_auth” te kërkesa juaj e ndjekjes.",
+ "TrackingFailureInvalidSiteProblem": "Sajti s’ekziston.",
+ "TrackingFailureInvalidSiteSolution": "Përditësoni te ndjekësi idSite-i që keni formësuar.",
+ "TrackingFailures": "Dështime ndjekjeje",
+ "TrackingFailuresEmail1": "Kjo bëhet vetëm për t’ju bërë të ditur se ditët e fundit kanë ndodhur %s lloje të ndryshme dështimesh ndjekjeje.",
+ "TrackingFailuresEmail2": "Që të shihni krejt kërkesat me ndjekje të dështuar %1$sklikoni këtu%2$s.",
+ "TrackingFailuresEmailSubject": "Dështime ndjekjeje te Matomo Analytics juaj",
+ "TrackingFailuresIntroduction": "Kjo faqe paraqet dështime ndjekjeje të ndodhura gjatë %s ditëve të fundit. Ju lutemi, kini parasysh që regjistrohen vetëm llojet më të rëndomta të dështimeve në ndjekje, jo krejt ato.",
+ "TrackingURL": "URL Ndjekjesh",
"TrustedHostConfirm": "Jeni i sigurt se doni të ndryshoni strehëemrin e besuar të Matomo-s?",
"TrustedHostSettings": "Strehëemër i Besuar Matomo",
+ "TwoFactorAuth": "Mirëfilltësim dyfaktorësh",
"UiDemo": "Demo UI",
+ "UncheckToOptOut": "Hiqjani shenjën kësaj kutize që të zgjidhni lënien jashtë.",
"UpdateSettings": "Rregullime përditësimesh",
"UseCustomLogo": "Përdorni një logo vetjake",
"ValidPiwikHostname": "Strehëemër i Vlefshëm Matomo",
+ "ViewAllTrackingFailures": "Shihini krejt dështimet në ndjekje",
+ "WhatIsNew": "Ç’ka të Re",
+ "WhatIsNewNoChanges": "S’ka gjë të re hëpërhë",
+ "WhatIsNewNoChangesTitle": "Pa ndryshime së fundi",
+ "WhatIsNewTitle": "Ja ç’ka të re në Matomo",
+ "WhatIsNewTooltip": "Mësoni ç’ka të re në Matomo",
"WithOptionalRevenue": "me të ardhura opsionale",
- "YouAreOptedOut": "Tani jeni nën \"opt-out\"",
"YouAreNotOptedOut": "Nuk keni zgjedhur lënien jashtë.",
- "YouMayOptOut": "Mundet edhe të zgjidhni të mos ju përshoqërohet një numër unik identifikimi \"cookie\" analizash web për kompjuterin tuaj, për të shmangur mbledhjen dhe analizimin e të dhënave të mbledhura në këtë sajt.",
- "YouMayOptOutBis": "Për ta bërë këtë zgjedhje, ju lutem klikoni më poshtë që të merrni një \"cookie\" \"opt-out\".",
- "OptingYouOut": "Po liheni jashtë kësaj, ju lutemi, pritni…",
- "ProtocolNotDetectedCorrectly": "Jeni duke e parë Matomo-n përmes një lidhjeje të sigurt SSL (po përdorni https), por Matomo mund të zbulojë vetëm një lidhje jo të sigurt me shërbyesin.",
- "ProtocolNotDetectedCorrectlySolution": "Që ta bëni Matomo-n të kërkojë dhe shërbejë lëndën tuaj përmes HTTPS-je, mund të përpunoni kartelën tuaj %1$s dhe ose të formësoni rregullime ndërmjetësi, ose mund të shtoni rreshtin %2$s nën ndarjen %3$s. %4$sMësoni më tepër%5$s",
+ "YouAreOptedOut": "Tani jeni nën “opt-out”.",
+ "YouMayOptOut": "Mundet edhe të zgjidhni të mos ju përshoqërohet një numër unik identifikimi “cookie” analizash web për kompjuterin tuaj, për të shmangur mbledhjen dhe analizimin e të dhënave të mbledhura në këtë sajt.",
"YouMayOptOut2": "Mund të zgjidhni të pengohet ky sajt të grumbullojë dhe analizojë veprimet që ndërmerrni këtu.",
"YouMayOptOut3": "Duke bërë kështu do të mbrohet privatësia juaj, por do të pengohet i zoti të mësojë nga veprimet tuaja dhe të krijojë funksionim më të mirë për ju dhe përdorues të tjerë.",
- "UncheckToOptOut": "Hiqjani shenjën kësaj kutize që të zgjidhni lënien jashtë.",
- "CheckToOptIn": "I vini shenjë kësaj kutize që të zgjidhni përfshirjen.",
- "OptOutErrorNoCookies": "Mundësia për zgjedhje lënieje jashtë gjurmimit lyp që cookie-t të jenë të aktivizuara.",
- "OptOutErrorNotHttps": "Veçoria për zgjedhje lënieje jashtë gjurmimit mund të mos funksionojë, ngaqë ky sajt s’u ngarkua përmes HTTPS-je. Ju lutemi, ringarkojeni faqen që të shihni nëse gjendja për lënie jashtë ndryshoi.",
- "OptOutErrorWindowOpen": "Veçoria për zgjedhje lënieje jashtë gjurmimit mund të mos funksionojë, ngaqë duket se dritarja flluskë për zgjedhjen qe bllokuar. Ju lutemi, ringarkojeni faqen që të shihni nëse gjendja për lënie jashtë ndryshoi.",
- "MissingTrackingCodeEmailSubject": "S’ka regjistrim trafiku në Matomo Analytics for %s, fillojani tani",
- "JsTrackingCodeMissingEmail1": "Ca ditë më parë shtuat sajtin '%s' te Matomo Analytics i juaj. Sapo kontrolluam dhe Matomo-ja juaj s’duket të ketë të regjistruar trafik për këtë sajt.",
- "JsTrackingCodeMissingEmail2": "Që të fillohet të ndiqen të dhëna dhe të merret ide mbi prirjet e përdoruesve tuaj, lypset të rregulloni ndjekjen në sajtin tuaj ose në aplikacionin për celular. Për sajte, thjesht trupëzoni në ta kodin e ndjekjes mu para etiketës %s.",
- "JsTrackingCodeMissingEmail3": "Që të gjeni dhe përshtatni kodin tuaj të ndjekjeve, %1$sklikoni këtu%2$s (ose hidhini një sy %3$sudhërrëfyesit për Klient JavaScript Ndjekjesh%4$s).",
- "TrackingFailuresIntroduction": "Kjo faqe paraqet dështime ndjekjeje të ndodhura gjatë %s ditëve të fundit. Ju lutemi, kini parasysh që regjistrohen vetëm llojet më të rëndomta të dështimeve në ndjekje, jo krejt ato.",
- "NoKnownFailures": "S’ka dështime ndjekjeje të njohura.",
- "Problem": "Problem",
- "Solution": "Zgjidhje",
- "TrackingURL": "URL Ndjekjesh",
- "LearnMore": "Mësoni më tepër",
- "DeleteAllFailures": "Fshiji krejt dështimet",
- "NTrackingFailures": "%s dështime ndjekjeje",
- "ViewAllTrackingFailures": "Shihini krejt dështimet në ndjekje",
- "TrackingFailureInvalidSiteProblem": "Sajti s’ekziston.",
- "TrackingFailureInvalidSiteSolution": "Përditësoni te ndjekësi idSite-i që keni formësuar.",
- "TrackingFailureAuthenticationProblem": "Kërkesa s’u mirëfilltësua, por mirëfilltësimi qe i domosdoshëm.",
- "TrackingFailureAuthenticationSolution": "Caktoni ose ndreqni një \"token_auth\" te kërkesa juaj e ndjekjes.",
- "ConfirmDeleteAllTrackingFailures": "Jeni i sigurt se doni të fshihen krejt dështimet e ndjekjeve?",
- "ConfirmDeleteThisTrackingFailure": "Jeni i sigurt se doni të fshihet ky dështim ndjekje?",
- "TrackingFailuresEmailSubject": "Dështime ndjekjeje te Matomo Analytics juaj",
- "TrackingFailuresEmail1": "Kjo bëhet vetëm për t’ju bërë të ditur se ditët e fundit kanë ndodhur %s lloje të ndryshme dështimesh ndjekjeje.",
- "TrackingFailuresEmail2": "Që të shihni krejt kërkesat me ndjekje të dështuar %1$sklikoni këtu%2$s.",
- "ImportFromGoogleAnalytics": "Importim prej Google Analytics",
- "ImportFromGoogleAnalyticsDescription": "Nëse keni një zotërim Google Analytics dhe po kaloni në Matomo, mund të importoni të dhënat tuaja ekzistuese duke përdorur shtojcën %1$sGoogleAnalyticsImporter%2$s.",
- "SecurityNotificationEmailSubject": "Njoftim Sigurie",
- "SecurityNotificationRecoveryCodesShowedBody": "Dikush pa kodet e rimarrjes me mirëfilltësim dyfaktorësh të llogarisë tuaj.",
- "SecurityNotificationRecoveryCodesRegeneratedBody": "Dikush prodhoi kode të rinj rimarrjeje me mirëfilltësim dyfaktorësh për llogarinë tuaj.",
- "SecurityNotificationTwoFactorAuthEnabledBody": "Dikush aktivizoi mirëfilltësim dyfaktorësh në llogarinë tuaj.",
- "SecurityNotificationTwoFactorAuthDisabledBody": "Dikush çaktivizoi mirëfilltësim dyfaktorësh në llogarinë tuaj.",
- "SecurityNotificationTokenAuthCreatedBody": "Dikush krijoi një token mirëfilltësimi (përshkrimi: %s) në llogarinë tuaj. Nëse s’qetë ju, fshijeni token-in.",
- "SecurityNotificationTokenAuthDeletedBody": "Dikush fshiu një token mirëfilltësimi (përshkrim: %s) në llogarinë tuaj.",
- "SecurityNotificationAllTokenAuthDeletedBody": "Dikush fshiu krejt token-ët e mirëfilltësimit në llogarinë tuaj.",
- "SecurityNotificationSettingsChangedByUserBody": "Dikush ndryshoi rregullimet e sistemit. Rregullime të prekura: %s.",
- "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Një tjetër superpërdorues (%1$s) ndryshoi rregullimet e sistemit. Rregullime të prekura: %2$s. Nëse dini gjë rreth kësaj veprimtarie, vazhdoni. Nëse s’e njihni këtë veprimtari, ju lutemi, lidhuni me superpërdorues të tjerë.",
- "SecurityNotificationUserCreatedBody": "Dikush krijoi një përdorues të ri (kredenciale hyrjeje: %s) në llogarinë tuaj.",
- "SecurityNotificationUserDeletedBody": "Dikush fshiu një përdorues (kredenciale hyrjeje: %s) në llogarinë tuaj.",
- "SecurityNotificationIfItWasYou": "Nëse qetë ju, vazhdoni. Nëse s’e njihni këtë veprimtari, ju lutemi, ricaktoni fjalëkalimin tuaj.",
- "SecurityNotificationCheckTwoFactor": "Ju lutemi, kontrolloni aplikacionin tuaj të mirëfilltësimit dyfaktorësh ose pajisjen tuaj.",
- "BruteForce": "Me Zor",
- "TwoFactorAuth": "Mirëfilltësim dyfaktorësh"
+ "YouMayOptOutBis": "Për ta bërë këtë zgjedhje, ju lutem klikoni më poshtë që të merrni një “cookie” “opt-out”."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/sr.json b/plugins/CoreAdminHome/lang/sr.json
index 4230d6c402..3e66a8f913 100644
--- a/plugins/CoreAdminHome/lang/sr.json
+++ b/plugins/CoreAdminHome/lang/sr.json
@@ -4,12 +4,13 @@
"Administration": "Administracija",
"ArchivingSettings": "Podešavanja arhiviranja",
"BrandingSettings": "Podešavanje brendiranja",
- "ReleaseChannel": "Kanal realizacije",
"ClickHereToOptIn": "Kliknite za uključenje.",
"ClickHereToOptOut": "Kliknite za izuzeće.",
"CustomLogoFeedbackInfo": "Ako podesite Matomo logo, možda biste bili zainteresovani da sakrijete %1$s link iz glavnog menija. Da to uradite, možete isključiti Feedback plugin iz %2$sOrganizuj Plugin-ove%3$s.",
"CustomLogoHelpText": "Možete podesiti Matomo logo koji će biti prikazan u korisničkom interfejsu i E-Mail izveštajima.",
"EmailServerSettings": "Podešavanje servera za elektronsku poštu",
+ "FaviconUpload": "Izaberite ikonicu koju želite da postavite",
+ "FileUploadDisabled": "Otpremanje datoteka nije omogućeno u podešavanjima za vaš PHP. Da biste otpremili sopstveni logotip, molimo vas da postavite %s u php.ini i restartujete veb server.",
"ForBetaTestersOnly": "Samo za beta testere",
"ImageTracking": "Praćenje pomoću slike",
"ImageTrackingIntro1": "Kada korisnik isključi JavaScript ili kada JavaScript nije moguće koristiti, možete da koristite sliku za praćenje posetilaca.",
@@ -20,20 +21,23 @@
"ImportingServerLogsDesc": "Alternativa praćenju posetilaca kroz čitač (bilo pomoću JavaScripta ili slike sa linkom) je konstantan uvoz serverskih logova. Pročitajte više o tome u %1$sAnalizi serverskih logova%2$s.",
"InvalidPluginsWarning": "Sledeći dodaci nisu kompatibilni sa %1$s te ne mogu biti učitani: %2$s.",
"InvalidPluginsYouCanUninstall": "Možete osvežiti ili deinstalirati ove dodatke na stranici %1$sUpravljanje dodacima%2$s.",
- "JavaScriptTracking": "Praćenje pomoću JavaScript-a",
+ "JSTrackingIntro2": "Kada budete imali spreman JavaScript kod za praćenje, ubacite ga na sve stranice sajta koje želite da pratite sa Matomo-om.",
+ "JSTrackingIntro4": "Ukoliko ne želite da koristite JavaScript za praćenje posetilaca, %1$sgenerišite link za praćenje preko slike pomoću ovog linka%2$s.",
+ "JSTrackingIntro5": "Ukoliko želite da pratite više od prikaza stranica, pogledajte %1$sMatomo dokumentaciju za JavaScript praćenje%2$s za sve raspoložive funkcije. Pomoću tih funkcija možete pratiti ciljeve, korisnički definisane promenljive, elektronske porudžbine, napuštene korpe i još puno toga.",
"JSTracking_CampaignKwdParam": "Parametar ključne reči kampanje",
"JSTracking_CampaignNameParam": "Parametar naziva kampanje",
- "JSTracking_CustomCampaignQueryParam": "Korišćenje korisnički definisanih parametara za nazive i ključne reči kampanje",
"JSTracking_CrossDomain": "Identifikatori posetilaca se smeštaju u kolačiće kojima mogu da pristupe samo stranice sa istog domena. Ako omogućite povezivanje između domena, možete da pratite akcije i preglede stranica određenog posetioca tokom jedne posete čak iako on gleda strane na različitim domenima. Kadgod posetioc klikne na neki od aliasa URL-ova vaših sajtova, biće dodat parametar pk_vid u kojem će se nalaziti identifikator tog posetioca.",
+ "JSTracking_CustomCampaignQueryParam": "Korišćenje korisnički definisanih parametara za nazive i ključne reči kampanje",
"JSTracking_CustomCampaignQueryParamDesc": "%1$sMatomo će automatski prepoznati Google Analytics parametre.%2$s",
"JSTracking_DisableCookies": "Isključi sve kolačiće koji služe za praćenje",
"JSTracking_DisableCookiesDesc": "Isključuje sve kolačiće koji se koriste za praćenje. Postojeći Matomo kolačići će biti obrisani pri sledećem prikazu stranice.",
"JSTracking_EnableCrossDomainLinking": "Omogućuje povezivanje između domena",
"JSTracking_EnableDoNotTrack": "Omogući prepoznavanje DoNotTrack sa klijentske strane",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "DoNotTrack podrška za serverske strane je uključena tako da ova opcija neće imati efekta.",
"JSTracking_EnableDoNotTrackDesc": "Zahtevi za praćenjem neće biti slati ako posetilac ne želi da bude praćen.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "DoNotTrack podrška za serverske strane je uključena tako da ova opcija neće imati efekta.",
+ "JSTracking_EndNote": "Pažnja: možete generisati sopstveni kod za praćenje u odeljku %1$sKod za praćenje%2$s.",
"JSTracking_GroupPageTitlesByDomain": "Dodaj domen sajta ispred naslova stranice prilikom praćenja",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Ukoliko neko poseti 'O nama' stranicu na blogu,%1$s to će biti zabeleženo kao 'blog \/ O nama'. Ovo je najjednostavniji način pregleda saobraćaja po poddomenima.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Ukoliko neko poseti 'O nama' stranicu na blogu,%1$s to će biti zabeleženo kao 'blog / O nama'. Ovo je najjednostavniji način pregleda saobraćaja po poddomenima.",
"JSTracking_MergeAliases": "U izveštaju \"Izlazni linkovi\", sakrij klikove na poznate aliase",
"JSTracking_MergeAliasesDesc": "Klikovi na aliase poput %s neće biti računati kao \"Izlazni linkovi\".",
"JSTracking_MergeSubdomains": "Prati posetioce kroz sve poddomene domena",
@@ -43,40 +47,39 @@
"JSTracking_TrackNoScript": "Praćenje korisnika sa isključenim javaskriptom",
"JSTracking_VisitorCustomVars": "Praćenje korisnički definisanih promenljivih za ovog korisnika",
"JSTracking_VisitorCustomVarsDesc": "Na primer, pomoću promenljive sa nazivom \"Tip\" i vrednošću \"Korisnik\".",
- "JSTracking_EndNote": "Pažnja: možete generisati sopstveni kod za praćenje u odeljku %1$sKod za praćenje%2$s.",
- "JSTrackingIntro2": "Kada budete imali spreman JavaScript kod za praćenje, ubacite ga na sve stranice sajta koje želite da pratite sa Matomo-om.",
- "JSTrackingIntro4": "Ukoliko ne želite da koristite JavaScript za praćenje posetilaca, %1$sgenerišite link za praćenje preko slike pomoću ovog linka%2$s.",
- "JSTrackingIntro5": "Ukoliko želite da pratite više od prikaza stranica, pogledajte %1$sMatomo dokumentaciju za JavaScript praćenje%2$s za sve raspoložive funkcije. Pomoću tih funkcija možete pratiti ciljeve, korisnički definisane promenljive, elektronske porudžbine, napuštene korpe i još puno toga.",
+ "JavaScriptTracking": "Praćenje pomoću JavaScript-a",
"LogoNotWriteableInstruction": "Ukoliko želite da koristite sopstveni logotip umesto Matomo logotipa, dodelite pravila upisivanja sledećem direktorijumu: %1$s Matomo-u je potrebna dozvola upisivanja za vaše logotipe koji se nalaze u datotekama %2$s.",
- "FileUploadDisabled": "Otpremanje datoteka nije omogućeno u podešavanjima za vaš PHP. Da biste otpremili sopstveni logotip, molimo vas da postavite %s u php.ini i restartujete veb server.",
- "LogoUploadFailed": "Datoteku nije moguće obraditi. Molimo vas da proverite da li je format datoteke validan.",
"LogoUpload": "Izaberite logo za kačenje",
- "FaviconUpload": "Izaberite ikonicu koju želite da postavite",
+ "LogoUploadFailed": "Datoteku nije moguće obraditi. Molimo vas da proverite da li je format datoteke validan.",
"LogoUploadHelp": "Molimo vas da postavite datoteku u %1$s formatima minimalne visine %2$s piksela.",
+ "LtsReleases": "LTS (dugoročno podržane) verzije primaju samo sigurnosne i ispravke bagova.",
+ "MenuDevelopment": "Razvoj",
"MenuDiagnostic": "Dijagnostika",
"MenuGeneralSettings": "Osnovna podešavanja",
- "MenuSystem": "Sistem",
- "MenuDevelopment": "Razvoj",
"MenuMeasurables": "Može da se meri",
+ "MenuSystem": "Sistem",
"OptOutComplete": "Opt-out je kompletiran; vaše posete ovom sajtu neće biti zabeležene od strane alata za web analitiku.",
"OptOutCompleteBis": "Imajte na umu da ako obrišete kolačiće ili promenite računar ili brauzer, da ćete morati ponovo da prođete kroz ovu proceduru.",
"OptOutDntFound": "Vaše akcije se ne beleže pošto vaš brauzer kaže da vi to ne želite. U pitanju je podešavanje u vašem brauzeru tako da nećete moći da se prijavite sve dok ne isključite 'Nemoj da me pratiš' opciju.",
"OptOutExplanation": "Matomo poštuje privatnost na Internetu. Kako biste omogućili vašim posetiocima da budu izuzeti iz Matomo analize, dodajte sledeći HTML kod na neku od stranica vaše sajta, na primer u polisu privatnosti",
"OptOutForYourVisitors": "Matomo opt-out za vaše posetioce",
- "PiwikIsInstalledAt": "Matomo je instaliran",
+ "OptingYouOut": "Prijavljivanje, molimo vas sačekajte…",
"PersonalPluginSettings": "Lična podešavanja dodataka",
+ "PiwikIsInstalledAt": "Matomo je instaliran",
"PluginSettingChangeNotAllowed": "Nije vam dozvoljeno da promenite vrednost podešavanja \"%1$s\" u dodatku \"%2$s\"",
"PluginSettingReadNotAllowed": "Nije vam dozvoljeno da vidite vrednost podešavanja \"%1$s\" u dodatku \"%2$s\"",
"PluginSettings": "Podešavanja dodataka",
"PluginSettingsIntro": "Ovde možete promeniti podešavanja sledećih dodataka:",
- "PluginSettingsValueNotAllowed": "Vrednost za polje \"%1$s\" u dodatku \"%2$s\" nije dozvoljena",
"PluginSettingsSaveFailed": "Greška prilikom snimanja podešavanja dodataka",
"PluginSettingsSaveSuccess": "Podešavanja dodatka su ažurirana.",
- "SettingsSaveSuccess": "Podešavanja su ažurirana.",
+ "PluginSettingsValueNotAllowed": "Vrednost za polje \"%1$s\" u dodatku \"%2$s\" nije dozvoljena",
+ "ProtocolNotDetectedCorrectly": "Trenutno pristupate Matomo-u preko bezbedne SSL konekcije (korišćenjem HTTPS-a) ali Matomo detektuje samo nebezbednu konekciju sa serverom.",
+ "ProtocolNotDetectedCorrectlySolution": "Da biste bili sigurni da Matomo na bezbedan način zahteva i opslužuje sadržaje preko HTTPS-a, možete da izmenite datoteku %1$s i onda u njoj ili da podesite proksi server ili da dodate liniju %2$s u okviru sekcije %3$s. %4$sPročitajte više%5$s",
+ "ReleaseChannel": "Kanal realizacije",
"SendPluginUpdateCommunication": "Pošalji mejl svaki put kada se pojavi nova verzija dodatka",
"SendPluginUpdateCommunicationHelp": "Mejl će biti poslat superkorisnicima kad god se pojavi nova verzija ovog dodatka.",
+ "SettingsSaveSuccess": "Podešavanja su ažurirana.",
"StableReleases": "Ukoliko Matomo čini kritičan deo vašeg poslovanja, preporučujemo vam da koristite poslednju stabilnu verziju. Ukoliko koristite poslednju beta verziju i nađete bag ili imate predlog, molimo vas %1$spogledajte ovde%2$s.",
- "LtsReleases": "LTS (dugoročno podržane) verzije primaju samo sigurnosne i ispravke bagova.",
"SystemPluginSettings": "Sistemska podešavanja dodataka",
"TrackAGoal": "Praćenje cilja",
"TrackingCode": "Kod za praćenje",
@@ -88,9 +91,6 @@
"WithOptionalRevenue": "sa opcionom zaradom",
"YouAreOptedOut": "Trenutno ste izuzeti iz statistike.",
"YouMayOptOut": "Možete da izaberete da nemate jedinstven identifikacioni broj vezan za vaš računar.",
- "YouMayOptOutBis": "Ukoliko želite tako, molimo vas da kliknete ispod kako biste primili opt-out kolačić.",
- "OptingYouOut": "Prijavljivanje, molimo vas sačekajte...",
- "ProtocolNotDetectedCorrectly": "Trenutno pristupate Matomo-u preko bezbedne SSL konekcije (korišćenjem HTTPS-a) ali Matomo detektuje samo nebezbednu konekciju sa serverom.",
- "ProtocolNotDetectedCorrectlySolution": "Da biste bili sigurni da Matomo na bezbedan način zahteva i opslužuje sadržaje preko HTTPS-a, možete da izmenite datoteku %1$s i onda u njoj ili da podesite proksi server ili da dodate liniju %2$s u okviru sekcije %3$s. %4$sPročitajte više%5$s"
+ "YouMayOptOutBis": "Ukoliko želite tako, molimo vas da kliknete ispod kako biste primili opt-out kolačić."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/sv.json b/plugins/CoreAdminHome/lang/sv.json
index c64bfeaf83..65eedb76c0 100644
--- a/plugins/CoreAdminHome/lang/sv.json
+++ b/plugins/CoreAdminHome/lang/sv.json
@@ -92,7 +92,7 @@
"OptOutExplanation": "Matomo är dedikerat till att erbjuda personlig integritet på Internet. För att ge dina besökare möjligheten att välja om de ska exkluderas från Matomos webbanalys, kan du lägga till följande HTML-kod på någon av din webbplats sidor, t.ex. på en sida om sekretesspolicy.",
"OptOutExplanationIntro": "Denna kod kommer att visas i en Iframe som innehåller en länk så att dina besökare kan välja bort Matomo genom att sätta en cookie i sina webbläsare. Se nedan (eller %1$s klicka här%2$s) för att visa innehållet som kommer att visas i Iframe'n.",
"OptOutForYourVisitors": "Exkludera spårning för dina besökare",
- "OptingYouOut": "Undantar dig, vänligen vänta...",
+ "OptingYouOut": "Undantar dig, vänligen vänta…",
"PersonalPluginSettings": "Personliga plugininställningar",
"PiwikIsInstalledAt": "Matomo är installerat på",
"PluginSettingChangeNotAllowed": "Det är inte tillåtet att ändra värdet i inställningar för \"%1$s\" i plugin \"\"%2$s\"",
diff --git a/plugins/CoreAdminHome/lang/tl.json b/plugins/CoreAdminHome/lang/tl.json
index a7384611f1..07690516ae 100644
--- a/plugins/CoreAdminHome/lang/tl.json
+++ b/plugins/CoreAdminHome/lang/tl.json
@@ -1,5 +1,6 @@
{
"CoreAdminHome": {
+ "AddNewTrustedHost": "Magdagdag ng bagong pinagkakatiwalaang host",
"Administration": "Administrasyon",
"ArchivingSettings": "Mga setting ng pag-archive",
"BrandingSettings": "Mga setting ng branding",
@@ -8,6 +9,7 @@
"CustomLogoFeedbackInfo": "Kung pinasadya mo ang logo ng Matomo, maaaring interesado ka rin upang itago ang %1$s na link sa itaas ng menu. Upang gawin ito, maaari mong i-disable ang Feedback plugin sa %2$s Manage Plugin %3$s na pahina.",
"CustomLogoHelpText": "Maaari mong i-customize ang Matomo logo na ipapakita sa user interface at mga report sa email.",
"EmailServerSettings": "Mga setting sa email server",
+ "FaviconUpload": "Pumili ng Favicon upang i-upload",
"ForBetaTestersOnly": "Pagsusubaybay ng Imahe",
"ImageTracking": "Pagsubaybay ng Imahe",
"ImageTrackingIntro1": "Kapag ang bisita ay dinisable ang JavaScript, o kapag hindi magamit ang JavaScript, maaari mong gamitin ang link sa pagsubaybay ng imahe, para masundan ang mga bisita",
@@ -17,7 +19,9 @@
"ImportingServerLogsDesc": "Ang isang alternatibo sa pagsusubaybay sa mga bisita sa pamamagitan ng browser (alinman sa pamamagitan ng JavaScript o link ng isang imahe) ay ang patuloy na pag-import ng mga tala sa server. Matuto nang higit pa tungkol sa %1$sServer na Tala File Analytic%2$s.",
"InvalidPluginsWarning": "Ang sumusunod na mga plugin ay hindi tugma sa %1$s at hindi kayang i-load: %2$s",
"InvalidPluginsYouCanUninstall": "Maaaring i-update o i-uninstall ang mga plugin sa %1$sPamahalaan ang mga Plugin%2$s na pahina.",
- "JavaScriptTracking": "Pagsubaybay ng JavaScript",
+ "JSTrackingIntro2": "Sa oras na mayroon ka nang JavaScript tracking code para sa iyong website, kopyahin at i-paste ito sa lahat ng pahina na gusto mong subaybayan gamit ang Matomo.",
+ "JSTrackingIntro4": "Kung ayaw mong gamitin ang JavaScript upang masubaybayan ang mga bisita,%1$s gumawa ng link upang sumubaybay sa image sa ibaba %2$s.",
+ "JSTrackingIntro5": "Kung gusto mong gawin nang higit pa kaysa sa pagsubaybay ng page view, mangyaring tingnan ang %1$s Tracking Matomo Javascript na dokumentasyon %2$s para sa listahan ng mga available na function. Sa paggamit ng mga function na ito maaari mong subaybayan ang mga layunin, mga custom variable, mga ecommerce order, mga inabandunang cart at marami pa.",
"JSTracking_CampaignKwdParam": "Keyword na Parametero ng Kampanya",
"JSTracking_CampaignNameParam": "Pangalang Parametero ng Kampanya",
"JSTracking_CustomCampaignQueryParam": "Gamitin ang custom query na parametro ng mga pangalan para sa pangalan ng kampanya at keyword",
@@ -25,10 +29,10 @@
"JSTracking_DisableCookies": "I-disable ang lahat ng mga cookies na sumusubaybay.",
"JSTracking_DisableCookiesDesc": "I-disable lahat ng unang party cookies. Lahat ng Matomo cookies para sa website na ito ay mabubura sa susunod na pagtingin sa pahina",
"JSTracking_EnableDoNotTrack": "Paganahin ang client side DoNotTrack detection",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Tandaan: Ang side ng server na DoNotTrack support ay naka-enable, kaya ang pagpipiliang ito ay hindi magkakaroon ng epekto.",
"JSTracking_EnableDoNotTrackDesc": "Kung kaya't ang mga kahilingan sa pagsubaybay ay hindi ipapadala kung hindi nais ng bisita na masubaybayan.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Tandaan: Ang side ng server na DoNotTrack support ay naka-enable, kaya ang pagpipiliang ito ay hindi magkakaroon ng epekto.",
"JSTracking_GroupPageTitlesByDomain": "I-prepend ang site domain sa pamagat ng pahina kapag nagsusubaybay.",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Kung kaya't kapag may bumisita sa pahina na 'About' ng blog.%1$s ito ay itatala bilang 'blog \/ About'. Ito ay ang pinakamadaling paraan upang makakuha ng isang pangkalahatang ideya ng iyong trapiko sa bawat sub-domain.",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Kung kaya't kapag may bumisita sa pahina na 'About' ng blog.%1$s ito ay itatala bilang 'blog / About'. Ito ay ang pinakamadaling paraan upang makakuha ng isang pangkalahatang ideya ng iyong trapiko sa bawat sub-domain.",
"JSTracking_MergeAliases": "Sa \"Outlinks\" na ulat, itago ang mga pag-click sa mga kilalang alias URL ng",
"JSTracking_MergeAliasesDesc": "Kung kaya't ang mga click sa mga link sa Alias ​​na mga URL (hal.%s) ay hindi mabibilang bilang \"Outlink\".",
"JSTracking_MergeSubdomains": "Subaybayan ang mga bisita sa lahat ng mga subdomain ng",
@@ -37,16 +41,13 @@
"JSTracking_PageCustomVarsDesc": "Halimbawa, mayroong pangalan ng variable na \"Category\" at value na White Papers\"\".\"",
"JSTracking_VisitorCustomVars": "Subaybayan ang mga custom na variable para sa bisitang ito",
"JSTracking_VisitorCustomVarsDesc": "Halimbawa, mayroong pangalan ng variable na \"Type\" at value na \"Customer\"",
- "JSTrackingIntro2": "Sa oras na mayroon ka nang JavaScript tracking code para sa iyong website, kopyahin at i-paste ito sa lahat ng pahina na gusto mong subaybayan gamit ang Matomo.",
- "JSTrackingIntro4": "Kung ayaw mong gamitin ang JavaScript upang masubaybayan ang mga bisita,%1$s gumawa ng link upang sumubaybay sa image sa ibaba %2$s.",
- "JSTrackingIntro5": "Kung gusto mong gawin nang higit pa kaysa sa pagsubaybay ng page view, mangyaring tingnan ang %1$s Tracking Matomo Javascript na dokumentasyon %2$s para sa listahan ng mga available na function. Sa paggamit ng mga function na ito maaari mong subaybayan ang mga layunin, mga custom variable, mga ecommerce order, mga inabandunang cart at marami pa.",
+ "JavaScriptTracking": "Pagsubaybay ng JavaScript",
"LogoNotWriteableInstruction": "Upang gamitin ang iyong pasadyang logo sa halip na ang default na Matomo logo, bigyan ng pahintulot na magsulat sa direktoryong ito: %1$s kailangan ng Matomo ng write access para sa iyong mga logo na naka-imbak sa mga file ng %2$s.",
"LogoUpload": "Piliin ang Logo na i-upload",
- "FaviconUpload": "Pumili ng Favicon upang i-upload",
"LogoUploadHelp": "Mangyaring mag-upload ng isang file sa format na %1$s na may pinakamababang taas na %2$s na pixel.",
+ "MenuDevelopment": "Pag-unlad",
"MenuDiagnostic": "Dyagnostiko",
"MenuGeneralSettings": "Pangkalahatang mga setting",
- "MenuDevelopment": "Pag-unlad",
"OptOutComplete": "Ang pag-opt-out ay kumpleto na; ang iyong mga pagbisita sa website na ito ay hindi maitatala sa Web Analytics na tool.",
"OptOutCompleteBis": "Tandaan na kung tinanggal mo ang iyong cookies, burahin ang opt-out cookie, o kapag nagbago ka ng computer o Web browser, kailangan mong isagawang muli ang opt-out cookie",
"OptOutExplanation": "Ang Matomo ay nakatuon sa pagbibigay ng privacy sa Internet. Upang bigyan ang iyong bisita ng pagpipilian na pag-opt-out ng Matomo Web Analytics, maaari mong idagdag ang sumusunod na HTML code sa isa sa iyong mga pahina ng website, halimbawa sa isang pahina ng Privacy Policy.",
@@ -70,4 +71,4 @@
"YouMayOptOut": "Maaari mong piliin na huwag magkaroon ng isang natatanging web analytic na 'cookie identification number' na itatalaga sa iyong computer upang maiwasan ang pagsasama-sama at pag-aaral ng data na nakolekta sa website na ito.",
"YouMayOptOutBis": "Upang magawa ang napili mo, paki-click sa ibaba upang matanggap ang opt-out cookie."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreAdminHome/lang/uk.json b/plugins/CoreAdminHome/lang/uk.json
index 7f7bdc596f..933d42383d 100644
--- a/plugins/CoreAdminHome/lang/uk.json
+++ b/plugins/CoreAdminHome/lang/uk.json
@@ -75,7 +75,7 @@
"OptOutExplanation": "Matomo – за збереження особистих даних в мережі. Тому дана система може запропонувати вашим користувачам вибір виключення з політики конфіденційності (відмова від подальшого збору статистики про користувача). Ви можете вставити наступний HTML-код на одну з ваших сторінок сайту, наприклад на сторінку про гарантії конфіденційності.",
"OptOutExplanationIntro": "Цей код покаже Iframe, що містить посилання для ваших відвідувачів, щоб відмовитися від Matomo, встановивши відмову cookie у своїх браузерах. Див нижче (або %1$s натисніть тут%2$s) щоб переглянути вміст, який відображатиметься в iFrame.",
"OptOutForYourVisitors": "Виняток з політики конфіденційності Matomo для відвідувачів",
- "OptingYouOut": "Відписуємо вас, будь ласка, зачекайте...",
+ "OptingYouOut": "Відписуємо вас, будь ласка, зачекайте…",
"PersonalPluginSettings": "Персональні налаштування плагінів",
"PiwikIsInstalledAt": "Matomo встановлений в",
"PluginSettingChangeNotAllowed": "Вам не дозволено змінювати значення \"%1$s\" для плагіну \"%2$s\"",
diff --git a/plugins/CoreAdminHome/lang/zh-tw.json b/plugins/CoreAdminHome/lang/zh-tw.json
index a932c7dba8..5de9a9f630 100644
--- a/plugins/CoreAdminHome/lang/zh-tw.json
+++ b/plugins/CoreAdminHome/lang/zh-tw.json
@@ -92,7 +92,7 @@
"OptOutExplanation": "Matomo 致力於在提供網路中的隱私權。要讓你的訪客選擇推出 Matomo 追蹤,你可以在你的網頁中加入以下的 HTML 代碼,例如在隱私權政策網頁。",
"OptOutExplanationIntro": "這個程式碼將以頁框顯示,裡面有個連結可以在訪客的瀏覽器中設定 cookie 以退出 Matomo 追蹤。在下方(或%1$s點擊這裡%2$s)查看將於頁框中顯示的網頁內容。",
"OptOutForYourVisitors": "讓你的訪客選擇退出 Matomo 追蹤",
- "OptingYouOut": "正在設定退出追蹤,請稍後...",
+ "OptingYouOut": "正在設定退出追蹤,請稍後…",
"PersonalPluginSettings": "個人外掛設定",
"PiwikIsInstalledAt": "Matomo 安裝於",
"PluginSettingChangeNotAllowed": "你無法修改外掛「%2$s」中的設定「%1$s」",
diff --git a/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig b/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
index 30555f6ce2..c3c1f305f5 100644
--- a/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
+++ b/plugins/CoreAdminHome/templates/trackingCodeGenerator.twig
@@ -23,6 +23,7 @@
<a href="#/importServerLogs">{{ 'CoreAdminHome_ImportingServerLogs'|translate }}</a>
<a href="#/mobileAppsAndSdks">{{ 'SitesManager_MobileAppsAndSDKs'|translate }}</a>
<a href="#/trackingApi">{{ 'CoreAdminHome_HttpTrackingApi'|translate }}</a>
+ <a href="#/singlePageApplication">{{ 'SitesManager_SiteWithoutDataSinglePageApplication'|translate }}</a>
{{ postEvent('Template.endTrackingCodePageTableOfContents') }}
</div>
</div>
@@ -57,6 +58,11 @@
<p>{{ 'CoreAdminHome_HttpTrackingApiDescription'|translate('<a href="https://developer.matomo.org/api-reference/tracking-api" rel="noreferrer noopener" target="_blank">','</a>')|raw }}</p>
</div>
+<div piwik-content-block content-title="{{ 'SitesManager_SiteWithoutDataSinglePageApplication'|translate }}" anchor="singlePageApplication">
+ <p>{{ 'CoreAdminHome_SinglePageApplicationDescription'|translate('<a href="https://developer.matomo.org/guides/spa-tracking" rel="noreferrer noopener" target="_blank">','</a>')|raw }}</p>
+</div>
+
+
{{ postEvent('Template.endTrackingCodePage') }}
{% endblock %}
diff --git a/plugins/CoreAdminHome/tests/Framework/Mock/API.php b/plugins/CoreAdminHome/tests/Framework/Mock/API.php
index 165abd4490..c07af44fc1 100644
--- a/plugins/CoreAdminHome/tests/Framework/Mock/API.php
+++ b/plugins/CoreAdminHome/tests/Framework/Mock/API.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreAdminHome\tests\Framework\Mock;
-use Piwik\Tracker;
class API extends \Piwik\Plugins\CoreAdminHome\API
{
diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
index 630ce6c503..9684b8a5a8 100644
--- a/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/Commands/InvalidateReportDataTest.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\CoreAdminHome\tests\Integration\Commands;
use Monolog\Handler\AbstractProcessingHandler;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\ConsoleCommandTestCase;
-use Psr\Log\LoggerInterface;
/**
* @group CoreAdminHome
diff --git a/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php b/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
index ef6dc6b37b..7e98a5152e 100644
--- a/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/Commands/SetConfigTest.php
@@ -12,7 +12,6 @@ use Psr\Container\ContainerInterface;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Config;
use Piwik\Tests\Framework\TestCase\ConsoleCommandTestCase;
-use Piwik\Url;
/**
* @group Core
diff --git a/plugins/CoreAdminHome/tests/Integration/TasksTest.php b/plugins/CoreAdminHome/tests/Integration/TasksTest.php
index 06765ef54d..9edcea8932 100644
--- a/plugins/CoreAdminHome/tests/Integration/TasksTest.php
+++ b/plugins/CoreAdminHome/tests/Integration/TasksTest.php
@@ -17,9 +17,6 @@ use Piwik\Plugins\CoreAdminHome\Emails\JsTrackingCodeMissingEmail;
use Piwik\Plugins\CoreAdminHome\Emails\TrackingFailuresEmail;
use Piwik\Plugins\CoreAdminHome\Tasks;
use Piwik\Plugins\CoreAdminHome\Tasks\ArchivesToPurgeDistributedList;
-use Piwik\Plugins\CustomDimensions\CustomDimensions;
-use Piwik\Plugins\CustomDimensions\Dao\Configuration;
-use Piwik\Plugins\SegmentEditor\Model;
use Piwik\Scheduler\Task;
use Piwik\Tests\Fixtures\RawArchiveDataWithTempAndInvalidated;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CoreConsole/Commands/ComputeJsAssetSize.php b/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
index eb981be60e..0d6abab126 100644
--- a/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
+++ b/plugins/CoreConsole/Commands/ComputeJsAssetSize.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\AssetManager;
-use Piwik\Common;
use Piwik\Development;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
@@ -18,6 +17,7 @@ use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugin\Manager;
use Piwik\ProxyHttp;
use Piwik\SettingsPiwik;
+use Piwik\Theme;
use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
@@ -25,6 +25,8 @@ use Symfony\Component\Console\Output\OutputInterface;
class ComputeJsAssetSize extends ConsoleCommand
{
+ private $totals = [];
+
protected function configure()
{
$this->setName('development:compute-js-asset-size');
@@ -51,19 +53,21 @@ class ComputeJsAssetSize extends ConsoleCommand
$output->writeln("Building and printing sizes of built JS assets...");
+ $fetcher = $this->makeUmdFetcher();
+
if ($excludeAngular) {
$this->excludeAngular($output);
}
$this->deleteMergedAssets();
- $this->buildAssets();
+ $this->buildAssets($fetcher);
$output->writeln("");
$this->printCurrentGitHashAndBranch($output, $excludeAngular, $plugin);
$output->writeln("");
- $this->printFilesizes($output);
+ $this->printFilesizes($fetcher, $output);
if (!$noDelete) {
$this->deleteMergedAssets();
@@ -158,6 +162,7 @@ class ComputeJsAssetSize extends ConsoleCommand
"WhiteLabel",
"WooCommerceAnalytics",
"AdvertisingConversionExport",
+ "AnonymousPiwikUsageMeasurement",
];
if ($plugin) {
@@ -197,10 +202,15 @@ class ComputeJsAssetSize extends ConsoleCommand
});
}
- private function buildAssets()
+ private function buildAssets(AssetManager\UIAssetFetcher\PluginUmdAssetFetcher $fetcher)
{
AssetManager::getInstance()->getMergedCoreJavaScript();
AssetManager::getInstance()->getMergedNonCoreJavaScript();
+
+ $chunks = $fetcher->getChunkFiles();
+ foreach ($chunks as $chunk) {
+ AssetManager::getInstance()->getMergedJavaScriptChunk($chunk->getChunkName());
+ }
}
private function deleteMergedAssets()
@@ -208,26 +218,40 @@ class ComputeJsAssetSize extends ConsoleCommand
AssetManager::getInstance()->removeMergedAssets();
}
- private function printFilesizes(OutputInterface $output)
+ private function printFilesizes(AssetManager\UIAssetFetcher\PluginUmdAssetFetcher $fetcher, OutputInterface $output)
{
$fileSizes = [];
$mergedCore = AssetManager::getInstance()->getMergedCoreJavaScript();
- $fileSizes[] = [$mergedCore->getRelativeLocation(), $this->getFileSize($mergedCore->getAbsoluteLocation()), $this->getGzippedFileSize($mergedCore->getAbsoluteLocation())];
+ $fileSizes[] = $this->getFileSizeRow($mergedCore);
$mergedNonCore = AssetManager::getInstance()->getMergedNonCoreJavaScript();
- $fileSizes[] = [$mergedNonCore->getRelativeLocation(), $this->getFileSize($mergedNonCore->getAbsoluteLocation()), $this->getGzippedFileSize($mergedNonCore->getAbsoluteLocation())];
+ $fileSizes[] = $this->getFileSizeRow($mergedNonCore);
+
+ $chunks = $fetcher->getChunkFiles();
+ foreach ($chunks as $chunk) {
+ $chunkAsset = AssetManager::getInstance()->getMergedJavaScriptChunk($chunk->getChunkName());
+ $fileSizes[] = $this->getFileSizeRow($chunkAsset);
+ }
+
+ $fileSizes[] = [];
+ $fileSizes[] = ['Total', $this->getFormattedSize($this->totals['merged']), $this->getFormattedSize($this->totals['gzip'])];
$table = new Table($output);
$table->setHeaders(['File', 'Size', 'Size (gzipped)'])->setRows($fileSizes);
$table->render();
}
- private function getFileSize($fileLocation)
+ private function getFileSize($fileLocation, $type)
{
- $formatter = new Formatter();
-
$size = filesize($fileLocation);
+ $this->totals[$type] = ($this->totals[$type] ?? 0) + $size;
+ return $this->getFormattedSize($size);
+ }
+
+ private function getFormattedSize($size)
+ {
+ $formatter = new Formatter();
$size = $formatter->getPrettySizeFromBytes($size, 'K', 2);
return $size;
}
@@ -250,7 +274,7 @@ class ComputeJsAssetSize extends ConsoleCommand
$compressedPath = dirname($path) . '/' . basename($path) . '.gz';
file_put_contents($compressedPath, $data);
- return $this->getFileSize($compressedPath);
+ return $this->getFileSize($compressedPath, 'gzip');
}
private function printCurrentGitHashAndBranch(OutputInterface $output, $excludeAngular, $plugin = null)
@@ -271,4 +295,23 @@ class ComputeJsAssetSize extends ConsoleCommand
$output->writeln("<info>$branchName ($lastCommit)$pluginSuffix</info> <comment>"
. ($excludeAngular ? '(without angularjs)' : '') . "</comment>");
}
+
+ private function makeUmdFetcher()
+ {
+ $plugins = Manager::getInstance()->getPluginsLoadedAndActivated();
+ $pluginNames = array_map(function ($p) { return $p->getPluginName(); }, $plugins);
+
+ $theme = Manager::getInstance()->getThemeEnabled();
+ if (!empty($theme)) {
+ $theme = new Theme();
+ }
+
+ $fetcher = new AssetManager\UIAssetFetcher\PluginUmdAssetFetcher($pluginNames, $theme, null);
+ return $fetcher;
+ }
+
+ private function getFileSizeRow(AssetManager\UIAsset $asset)
+ {
+ return [$asset->getRelativeLocation(), $this->getFileSize($asset->getAbsoluteLocation(), 'merged'), $this->getGzippedFileSize($asset->getAbsoluteLocation())];
+ }
}
diff --git a/plugins/CoreConsole/Commands/DevelopmentEnable.php b/plugins/CoreConsole/Commands/DevelopmentEnable.php
index ec1df4735c..c13376119a 100644
--- a/plugins/CoreConsole/Commands/DevelopmentEnable.php
+++ b/plugins/CoreConsole/Commands/DevelopmentEnable.php
@@ -14,7 +14,6 @@ use Piwik\Filesystem;
use Piwik\SettingsPiwik;
use Piwik\Plugin\ConsoleCommand;
use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/**
diff --git a/plugins/CoreConsole/Commands/GenerateDimension.php b/plugins/CoreConsole/Commands/GenerateDimension.php
index 9168e0bccf..f8efe64e4c 100644
--- a/plugins/CoreConsole/Commands/GenerateDimension.php
+++ b/plugins/CoreConsole/Commands/GenerateDimension.php
@@ -12,7 +12,6 @@ namespace Piwik\Plugins\CoreConsole\Commands;
use Piwik\Common;
use Piwik\DbHelper;
use Piwik\Plugin\Manager;
-use Piwik\Plugin\Report;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CoreHome/Categories/VisitorsCategory.php b/plugins/CoreHome/Categories/VisitorsCategory.php
index 8cbbbb9033..ad75ace57a 100644
--- a/plugins/CoreHome/Categories/VisitorsCategory.php
+++ b/plugins/CoreHome/Categories/VisitorsCategory.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Categories;
use Piwik\Category\Category;
use Piwik\Piwik;
-use Piwik\Url;
class VisitorsCategory extends Category
{
diff --git a/plugins/CoreHome/Columns/Metrics/ConversionRate.php b/plugins/CoreHome/Columns/Metrics/ConversionRate.php
index 16dd7bba1b..31447dd729 100644
--- a/plugins/CoreHome/Columns/Metrics/ConversionRate.php
+++ b/plugins/CoreHome/Columns/Metrics/ConversionRate.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreHome\Columns\Metrics;
use Piwik\DataTable\Row;
-use Piwik\Metrics;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
diff --git a/plugins/CoreHome/Columns/Metrics/VisitsPercent.php b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
index 325e1e3e48..49f18a8aa6 100644
--- a/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
+++ b/plugins/CoreHome/Columns/Metrics/VisitsPercent.php
@@ -13,7 +13,6 @@ use Piwik\DataTable\Row;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
-use Piwik\Plugin\Report;
/**
* Percent of visits in the whole table. Calculated as:
diff --git a/plugins/CoreHome/Columns/UserId.php b/plugins/CoreHome/Columns/UserId.php
index db23f9b7f0..bc0c77ab74 100644
--- a/plugins/CoreHome/Columns/UserId.php
+++ b/plugins/CoreHome/Columns/UserId.php
@@ -9,13 +9,11 @@
namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Cache;
-use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Map;
use Piwik\Metrics;
use Piwik\Plugin;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\VisitsSummary\API as VisitsSummaryApi;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/CoreHome/Columns/VisitGoalBuyer.php b/plugins/CoreHome/Columns/VisitGoalBuyer.php
index 904519494b..711380cf9a 100644
--- a/plugins/CoreHome/Columns/VisitGoalBuyer.php
+++ b/plugins/CoreHome/Columns/VisitGoalBuyer.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\GoalManager;
use Piwik\Tracker\Request;
diff --git a/plugins/CoreHome/Columns/VisitTotalTime.php b/plugins/CoreHome/Columns/VisitTotalTime.php
index 858028f598..0401a54e04 100644
--- a/plugins/CoreHome/Columns/VisitTotalTime.php
+++ b/plugins/CoreHome/Columns/VisitTotalTime.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Config;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugins\CoreHome\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Columns/VisitorId.php b/plugins/CoreHome/Columns/VisitorId.php
index f6b29699b3..108c41b921 100644
--- a/plugins/CoreHome/Columns/VisitorId.php
+++ b/plugins/CoreHome/Columns/VisitorId.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Columns\DimensionMetricFactory;
use Piwik\Columns\MetricsList;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ArchivedMetric;
use Piwik\Plugin\Dimension\VisitDimension;
diff --git a/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php b/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
index bed71d3328..64e2a3403a 100644
--- a/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
+++ b/plugins/CoreHome/Columns/VisitorSecondsSinceFirst.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Common;
use Piwik\Date;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php b/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
index 8837bfdd7b..0e67fe4184 100644
--- a/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
+++ b/plugins/CoreHome/Columns/VisitorSecondsSinceOrder.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Columns;
use Piwik\Date;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/CoreHome/Controller.php b/plugins/CoreHome/Controller.php
index ad1096e1e5..6982562ea6 100644
--- a/plugins/CoreHome/Controller.php
+++ b/plugins/CoreHome/Controller.php
@@ -24,7 +24,6 @@ use Piwik\Plugins\CoreHome\DataTableRowAction\MultiRowEvolution;
use Piwik\Plugins\CoreHome\DataTableRowAction\RowEvolution;
use Piwik\Plugins\Dashboard\DashboardManagerControl;
use Piwik\Plugins\UsersManager\API;
-use Piwik\Site;
use Piwik\Translation\Translator;
use Piwik\UpdateCheck;
use Piwik\Url;
diff --git a/plugins/CoreHome/Menu.php b/plugins/CoreHome/Menu.php
index 3b3051f606..6cade0124e 100644
--- a/plugins/CoreHome/Menu.php
+++ b/plugins/CoreHome/Menu.php
@@ -8,10 +8,8 @@
*/
namespace Piwik\Plugins\CoreHome;
-use Piwik\Db;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
-use Piwik\Plugin;
class Menu extends \Piwik\Plugin\Menu
{
diff --git a/plugins/CoreHome/Tracker/VisitRequestProcessor.php b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
index 65906cd45e..74abe8ffd6 100644
--- a/plugins/CoreHome/Tracker/VisitRequestProcessor.php
+++ b/plugins/CoreHome/Tracker/VisitRequestProcessor.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreHome\Tracker;
use Piwik\Common;
use Piwik\Date;
-use Piwik\Config;
use Piwik\EventDispatcher;
use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Tracker\Cache;
diff --git a/plugins/CoreHome/Widgets/GetDonateForm.php b/plugins/CoreHome/Widgets/GetDonateForm.php
index 72431e2d7f..c5ea5cf462 100644
--- a/plugins/CoreHome/Widgets/GetDonateForm.php
+++ b/plugins/CoreHome/Widgets/GetDonateForm.php
@@ -13,7 +13,6 @@ use Piwik\Piwik;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
use Piwik\Translation\Translator;
-use Piwik\View;
class GetDonateForm extends Widget
{
diff --git a/plugins/CoreHome/Widgets/GetSystemSummary.php b/plugins/CoreHome/Widgets/GetSystemSummary.php
index 362fc6817c..e09fe22d45 100644
--- a/plugins/CoreHome/Widgets/GetSystemSummary.php
+++ b/plugins/CoreHome/Widgets/GetSystemSummary.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CoreHome\Widgets;
-use Piwik\API\Request;
use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin;
diff --git a/plugins/CoreHome/javascripts/dataTable.js b/plugins/CoreHome/javascripts/dataTable.js
index 8d19e71752..214964a34a 100644
--- a/plugins/CoreHome/javascripts/dataTable.js
+++ b/plugins/CoreHome/javascripts/dataTable.js
@@ -114,7 +114,6 @@ $.extend(DataTable.prototype, UIControl.prototype, {
this._init(domElem);
this.enableStickHead(domElem);
this.initialized = true;
-
},
enableStickHead: function (domElem) {
@@ -485,8 +484,14 @@ $.extend(DataTable.prototype, UIControl.prototype, {
) {
labelWidth = maxLabelWidth; // prevent for instance table in Actions-Pages is not too wide
}
+ var allColumns = $('tr:nth-child(1) td.label', domElem).length;
+ var firstTableColumn = $('table:first tbody>tr:first td.label', domElem).length;
+ var amount = allColumns;
+ if (allColumns > 2 * firstTableColumn) {
+ amount = 2 * firstTableColumn;
+ }
- return parseInt(labelWidth / $('tr:nth-child(1) td.label', domElem).length, 10);
+ return parseInt(labelWidth / amount, 10);
}
function getLabelColumnMinWidth(domElem)
@@ -557,7 +562,6 @@ $.extend(DataTable.prototype, UIControl.prototype, {
var labelColumnMinWidth = getLabelColumnMinWidth(domElem);
var labelColumnMaxWidth = getLabelColumnMaxWidth(domElem);
var labelColumnWidth = getLabelWidth(domElem, tableWidth, 125, 440);
-
if (labelColumnMinWidth > labelColumnWidth) {
labelColumnWidth = labelColumnMinWidth;
}
diff --git a/plugins/CoreHome/javascripts/sparkline.js b/plugins/CoreHome/javascripts/sparkline.js
index 5457f1fe2e..3aab2976c2 100644
--- a/plugins/CoreHome/javascripts/sparkline.js
+++ b/plugins/CoreHome/javascripts/sparkline.js
@@ -26,33 +26,35 @@ piwik.getSparklineColors = function () {
// initializes each sparkline so they use colors defined in CSS
piwik.initSparklines = function() {
- $('.sparkline img').each(function () {
- var $self = $(this);
+ $(function () {
+ $('.sparkline img').each(function () {
+ var $self = $(this);
- if ($self.attr('src')) {
+ if ($self.attr('src')) {
return;
- }
+ }
- var seriesIndices = $self.closest('.sparkline').data('series-indices');
- var sparklineColors = piwik.getSparklineColors();
+ var seriesIndices = $self.closest('.sparkline').data('series-indices');
+ var sparklineColors = piwik.getSparklineColors();
- if (seriesIndices && sparklineColors.lineColor instanceof Array) {
+ if (seriesIndices && sparklineColors.lineColor instanceof Array) {
sparklineColors.lineColor = sparklineColors.lineColor.filter(function (c, index) {
- return seriesIndices.indexOf(index) !== -1;
+ return seriesIndices.indexOf(index) !== -1;
});
- }
+ }
- var colors = JSON.stringify(sparklineColors);
- var appendToSparklineUrl = '&colors=' + encodeURIComponent(colors);
+ var colors = JSON.stringify(sparklineColors);
+ var appendToSparklineUrl = '&colors=' + encodeURIComponent(colors);
- // Append the token_auth to the URL if it was set (eg. embed dashboard)
- var token_auth = broadcast.getValueFromUrl('token_auth');
- if (token_auth.length && piwik.shouldPropagateTokenAuth) {
+ // Append the token_auth to the URL if it was set (eg. embed dashboard)
+ var token_auth = broadcast.getValueFromUrl('token_auth');
+ if (token_auth.length && piwik.shouldPropagateTokenAuth) {
appendToSparklineUrl += '&token_auth=' + token_auth;
- }
- $self.attr('width', sparklineDisplayWidth);
- $self.attr('height', sparklineDisplayHeight);
- $self.attr('src', $self.attr('data-src') + appendToSparklineUrl);
+ }
+ $self.attr('width', sparklineDisplayWidth);
+ $self.attr('height', sparklineDisplayHeight);
+ $self.attr('src', $self.attr('data-src') + appendToSparklineUrl);
+ });
});
};
diff --git a/plugins/CoreHome/lang/ca.json b/plugins/CoreHome/lang/ca.json
index 4c0c1cdf29..5fcc211e8b 100644
--- a/plugins/CoreHome/lang/ca.json
+++ b/plugins/CoreHome/lang/ca.json
@@ -1,29 +1,132 @@
{
"CoreHome": {
+ "AdblockIsMaybeUsed": "En cas que utilitzeu un bloquejador d'anuncis desactiveu-lo per a aquest lloc, per assegurar-vos que Matomo funciona sense cap problema.",
+ "AddTotalsRowDataTable": "L'informe no mostra la fila de totals %s Mostra la fila de totals",
"CategoryNoData": "No hi ha dades en aquesta categoria. Proveu d'incloure tota la població.",
+ "ChangeCurrentWebsite": "Trieu un lloc web, lloc web seleccionat actualment: %s",
+ "ChangePeriod": "Canviar el període",
+ "ChangeVisualization": "Canviar la visualització",
"CheckForUpdates": "Cerca actualitzacions",
+ "CheckPiwikOut": "Fes una ullada a Matomo!",
+ "ChooseX": "Trieu %1$s",
+ "ClickRowToExpandOrContract": "Feu clic en aquesta fila per ampliar o reduir la subtaula.",
+ "ClickToEditX": "Feu clic per editar %s",
+ "ClickToSeeFullInformation": "Feu clic per veure tota la informació",
+ "CloseSearch": "Tancar la cerca",
+ "CloseWidgetDirections": "Podeu tancar aquest giny fent clic a la icona \"X\" a la part superior del giny.",
+ "CssDidntLoad": "El vostre navegador no ha pogut carregar l'estil d'aquesta pàgina.",
+ "CustomLimit": "Límit personalitzat",
+ "DataForThisReportHasBeenDisabled": "Actualment la segmentació està desactivada per a aquest informe. Si us plau, consulteu %1$saquest FAQ%2$s per obtenir més detalls.",
"DataForThisReportHasBeenPurged": "La informació d'aquest informés és anterior a %s mesos d'antiguitat i s'ha purgat.",
+ "DataTableCombineDimensions": "Les dimensions es mostren per separat %s Mostra les dimensions combinades",
"DataTableExcludeAggregateRows": "Es mostren les files aggrupades %s Amaga-ho",
+ "DataTableHowToSearch": "Premeu Intro o feu clic a la icona de cerca per cercar",
"DataTableIncludeAggregateRows": "No es mostren les files agrupades %s Mostra-les",
+ "DataTableShowDimensions": "Les dimensions s'han combinat %s Mostra les dimensions per separat",
+ "DateInvalid": "La combinació de data i període indicada no és vàlida. Trieu una data vàlida al selector de dates.",
"Default": "per defecte",
+ "DevicesSubcategoryHelp": "La secció Dispositius us ajuda a entendre la tecnologia que fan servir els vostres visitants per accedir al vostre lloc. Veureu informes sobre el tipus de dispositiu i models específics que us permetran optimitzar el vostre lloc per als dispositius més populars.",
+ "DonateCall1": "Matomo mai us costarà res d'utilitzar, però això no vol dir que no ens costi res de fer.",
+ "DonateCall2": "Matomo necessita el vostre suport continuat per créixer i prosperar.",
+ "DonateCall3": "Si creieu que Matomo ha afegit un valor important al vostre negoci o esforç, %1$si us plau, considereu donar%2$s o %3$scomprar una funció premium%4$s. Cada cèntim ajudarà.",
+ "EndDate": "Data final",
+ "EndShortcut": "Final",
+ "EngagementSubcategoryHelp1": "La secció Implicació ofereix informes que ajuden a quantificar quants visitants nous i recurrents rebeu. També podeu revisar informes que desglossen el temps mitjà i el nombre de pàgines per visita, així com el nombre de vegades que un visitant ha visitat el vostre lloc i el nombre de dies més habitual entre visites.",
+ "EngagementSubcategoryHelp2": "Això us pot ajudar a optimitzar la freqüència i les visites d'alta interacció, a més de maximitzar el vostre abast.",
+ "EnterZenMode": "Entra al mode Zen (amaga els menús)",
+ "ExceptionNotAllowlistedIP": "No podeu utilitzar aquest Matomo perquè la vostra IP %s no està permesa.",
"ExcludeRowsWithLowPopulation": "Es mostren totes les files %s No mostris la població inferior",
- "FlattenDataTable": "L'informe es jeràrquic %s Feu-lo pla.",
+ "ExitZenMode": "Sortir del mode Zen (mostrar els menús)",
+ "ExpandSubtables": "Amplieu les subtaules",
+ "ExportFormat": "Format d'exportació",
+ "ExportTooltip": "Nota: per utilitzar l'URL d'exportació generat, haureu d'especificar una autenticació de testimoni d'aplicació. Podeu configurar aquests testimonis a Admin -&gt; Security -&gt; Token Auths.",
+ "ExportTooltipWithLink": "Nota: per utilitzar l'URL d'exportació generat, haureu d'especificar una autenticació de testimoni d'aplicació. Podeu configurar aquests testimonis a %1$s[Administrador -&gt; Seguretat -&gt; Fitxers d'autenticació]%2$s. Substituïu %3$s a l'URL d'exportació pel vostre testimoni d'autenticació. Avís: mai compartiu l'URL amb el testimoni real amb ningú més.",
+ "ExternalHelp": "Ajuda (s'obre en una pestanya nova)",
+ "FlattenDataTable": "L'informe es jeràrquic %s Feu-lo pla",
+ "FlattenReport": "Allisar l'informe",
+ "FormatMetrics": "Format de mètriques",
+ "HideExportUrl": "Amaga l'URL d'exportació",
+ "HomeShortcut": "Inici",
"IncludeRowsWithLowPopulation": "No es mostren les files amb polbació inferior %s Mostra totes les files",
"InjectedHostEmailBody": "Hola, He provat d'accedir al Matomo avui i m'he trobat amb l'avís de nom de la màquina desconegut.",
"InjectedHostEmailSubject": "S'ha accedit al Matomo amb un nom de màquina desconegut: %s",
"InjectedHostNonSuperUserWarning": "%1$sClick here to access Matomo safely%2$s i eliminar aaquest avíst. Potse també voldreu contractar amb l'administrador del vostre Matomo i notificar-li aquesta incidència (%3$sclick here to email%4$s).",
"InjectedHostSuperUserWarning": "Pot ser que el Matomo estigui mal configurat (per exemple, si el Matomo s'ha mogut a un nou servidor o URL). Podeu %1$sfer click aquí i afegir %2$s com el nom de la màquina vàlid (si hi confieu)%3$s, o bé %4$s fer click aquí %5$s per accedir al Matomo de forma segura%6$s.",
"InjectedHostWarningIntro": "Esteu accedint al Matomo desde %1$s, però el Matomo està configurat per escoltar a l'adreça: %2$s.",
- "JavascriptDisabled": "S'ha de tenir el Javascript activat per vistualitzar la vista estàndar del Matomo.<br\/> No obstant això, sembla que el Javascript esta deshabilitat or no està suportat pel vostre navegador<br\/> Per utilitzar la vista estàndarc, activeu el Javascript canviant les opcions del navegador i %1$storneu-ho a probar%2$s.<br \/>",
+ "JavascriptDisabled": "JavaScript ha d'estar habilitat perquè pugueu utilitzar Matomo amb la vista estàndard.<br>No obstant això sembla que JavaScript està desactivat o no és compatible amb el vostre navegador.<br>Per utilitzar la vista estàndard, activeu JavaScript canviant les opcions del navegador i després %1$storneu-ho a provar%2$s.<br>",
+ "JsDidntLoad": "El vostre navegador no ha pogut carregar els scripts d'aquesta pàgina.",
+ "LeadingAnalyticsPlatformRespectsYourPrivacy": "La plataforma d'anàlisi oberta líder que respecta la vostra privadesa.",
+ "MacPageDown": "Fn + fletxa dreta",
+ "MacPageUp": "Fn + fletxa esquerra",
+ "MainNavigation": "Navegació principal",
+ "Menu": "Menú",
+ "MenuEntries": "Entrades del menú",
"NoPrivilegesAskPiwikAdmin": "Esteu identificat com a '%1$s' però sembla que no teniu cap permís establert al Matomo. %2$s Pregunteu al vostre administrador de Matomo (feu click per enviar un email)%3$s que us dongui access per veure un lloc web.",
+ "NoSuchPage": "Aquesta pàgina no existeix",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "L'actualització d'un sol clic no està disponible perquè utilitzeu Matomo amb diversos servidors. Baixeu la darrera versió de %1$s per continuar.",
+ "OnlyForSuperUserAccess": "Aquest widget només es mostra al tauler predeterminat per als usuaris que tenen accés de superusuari.",
+ "PageDownShortcutDescription": "per arribar al final de la pàgina",
+ "PageUpShortcutDescription": "per anar al capdamunt de la pàgina",
+ "PeriodHasOnlyRawData": "Sembla que els informes d'aquest període encara no s'han processat. Vols veure què passa ara? Consulteu el %1$sRegistre de visites%2$s o trieu un període de dates diferent mentre no es generin els informes.",
"PeriodRange": "Rang",
+ "PivotBySubtable": "Aquest informe no està orientat %1$s Gira per %2$s",
+ "Profilable": "Perfilable",
+ "QuickAccessTitle": "Cerca %s. Utilitzeu les tecles de direcció per navegar pels resultats de la cerca. Drecera: premeu 'f' per cercar.",
+ "QuickLinks": "Enllaços ràpids",
+ "ReadMoreOnlineGuide": "Llegiu més sobre aquest tema a la guia en línia.",
+ "RemoveTotalsRowDataTable": "L'informe mostra la fila de totals %s Elimina la fila de totals",
"ReportGeneratedOn": "Informe generat el %s",
"ReportGeneratedXAgo": "Informe generat fa %s",
+ "ReportType": "Tipus d'informe",
+ "ReportWithMetadata": "Informe amb metadades",
+ "ReportingCategoryHelpPrefix": "Com m'ajuda la pàgina d'informes \"%1$s &gt; %2$s\"?",
+ "RowLimit": "Límit de files",
+ "SearchOnMatomo": "Cerqueu \"%1$s\" a Matomo.org",
+ "SeeAvailableVersions": "Consulteu les versions disponibles",
+ "Segments": "Segments",
+ "SharePiwikLong": "Bones! Acabo de trobar un gran programari lliure: Matomo!\n\nMatomo et permetrà fer un seguiment dels visitants del teu lloc web de forma gratuïta. De veritat que l'hauries de provar!",
+ "SharePiwikShort": "Matomo! Analítica web gratuïta/lliure. Sigues propietari de les teves dades.",
+ "ShareThis": "Comparteix-ho",
+ "ShortcutCalendar": "per obrir el calendari (d vol dir Date)",
+ "ShortcutHelp": "per mostrar aquesta ajuda",
+ "ShortcutSearch": "per obrir la cerca (f vol dir Find)",
+ "ShortcutSegmentSelector": "per obrir el selector Segment",
+ "ShortcutWebsiteSelector": "per obrir el selector Lloc Web",
+ "ShortcutZenMode": "per mode Zen",
+ "ShortcutsAvailable": "Dreceres disponibles",
+ "ShowExportUrl": "Mostra l'URL d'exportació",
"ShowJSCode": "Mostra el codi JavaScript necessari",
+ "SkipToContent": "Saltar al contingut",
+ "SoftwareSubcategoryHelp": "La secció Programari mostra els sistemes operatius, els navegadors i els connectors que fan servir els vostres visitants per accedir al lloc perquè pugueu optimitzar el vostre lloc per assegurar-vos que és totalment compatible amb les configuracions més populars.",
+ "StandardReport": "Informe estàndard",
+ "StartDate": "Data d'inici",
+ "SubscribeAndBecomePiwikSupporter": "Aneu a una pàgina de pagament segura amb targeta de crèdit (Paypal) per convertir-vos en un benefactor de Matomo!",
+ "SupportPiwik": "Dona suport a Matomo!",
+ "SupportUsOn": "Doneu-nos suport",
+ "SystemSummaryMysqlVersion": "Versió de MySQL",
+ "SystemSummaryNActivatedPlugins": "%d connectors activats",
+ "SystemSummaryNSegments": "%1$d segments",
+ "SystemSummaryNSegmentsWithBreakdown": "%1$d segments (%2$s preprocessats, %3$s processats en temps real)",
+ "SystemSummaryNWebsites": "%d llocs web",
+ "SystemSummaryPhpVersion": "Versió del PHP",
+ "SystemSummaryPiwikVersion": "Versió de Matomo",
+ "SystemSummaryWidget": "Resum del sistema",
+ "TableNoData": "No hi ha dades per a aquesta taula.",
+ "TechDeprecationWarning": "A partir de la versió de Matomo %1$s, Matomo finalitzarà el suport per a %2$s. Per obtenir més informació %3$sconsulteu la nostra entrada al bloc.%4$s",
+ "ThanksFromAllOfUs": "Gràcies de part de tots nosaltres a Matomo!",
"ThereIsNoDataForThisReport": "No hi ha informació per aquest informe.",
"UnFlattenDataTable": "Aquest informe es pla %s Feu-lo jeràrquic",
+ "UndoPivotBySubtable": "Aquest informe s'ha girat %s Desfés el gir",
+ "ViewAllPiwikVideoTutorials": "Veure tots els tutorials de vídeo de Matomo",
+ "VisitStatusOrdered": "Ordenat",
+ "VisitStatusOrderedThenAbandoned": "Carretó carregat i abandonat",
+ "VisitTypeReturning": "Habitual",
+ "VisitTypeReturningCustomer": "Client habitual",
+ "VisitorsCategoryHelp1": "Les pàgines de Visitants t'expliquen coses sobre qui són els teus visitants. Coses com ara d'on provenen els teus visitants, quins dispositius i navegadors fan servir i quan visiten generalment el teu lloc web. Per entendre, en conjunt, qui és el teu públic i buscar valors atípics per veure com podria créixer el teu públic.",
+ "VisitorsCategoryHelp2": "A més de la informació general sobre els vostres visitants, també podeu utilitzar el %1$sRegistre de visites%2$s per veure què va passar a cada visita individual.",
+ "VisitorsOverviewHelp": "La \"Visió general dels visitants\" us ajuda a entendre la popularitat del vostre lloc. Ho fa proporcionant gràfics que mostren quantes visites rep el vostre lloc durant un període seleccionat i el nivell mitjà d'interacció amb les funcions clau, com ara cerques i baixades.",
"WebAnalyticsReports": "Informe d'analítica web",
"YouAreUsingTheLatestVersion": "Esteu fent servir l'última versió de Matomo!",
- "SystemSummaryPhpVersion": "Versió del PHP"
+ "YourDonationWillHelp": "La teva donació ajudarà directament a finançar noves funcions i millores per a aquesta plataforma d'anàlisi de codi obert. Això significa que la comunitat sempre es beneficiarà d'una eina que protegeixi la privadesa i us permeti mantenir el control de les vostres dades."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreHome/lang/fi.json b/plugins/CoreHome/lang/fi.json
index 55e3c31d43..98aa65f5c2 100644
--- a/plugins/CoreHome/lang/fi.json
+++ b/plugins/CoreHome/lang/fi.json
@@ -1,31 +1,40 @@
{
"CoreHome": {
+ "AdblockIsMaybeUsed": "Jos käytät mainostenestoa (ad blocker), poista se käytöstä tällä sivulla, jotta Matomo toimii ongelmitta.",
+ "AddTotalsRowDataTable": "Tämä raportti ei näytä yhtenvetoriviä %s Näytä yhteenvetorivi",
"CategoryNoData": "Tässä kategoriassa ei ole tietoja. Kokeile linkkiä \"Kaikki esiintymät\".",
- "ChangeVisualization": "Vaihda visualisaatio",
+ "ChangeCurrentWebsite": "Valitse sivusto, nyt valittuna %s",
"ChangePeriod": "Vaihda aikaväliä",
+ "ChangeVisualization": "Vaihda visualisaatio",
"CheckForUpdates": "Tarkista päivitykset",
"CheckPiwikOut": "Tutustu Matomoon!",
+ "ChooseX": "Valitse %1$s",
+ "ClickRowToExpandOrContract": "Klikkaa tätä riviä avataksesi tai sulkeaksesi alataulukon.",
"ClickToEditX": "Muokkaa %s klikkaamalla",
"ClickToSeeFullInformation": "Klikkaa nähdäksesi lisätietoja",
"CloseSearch": "Sulje haku",
"CloseWidgetDirections": "Voit sulkea tämän widget-käyttöliittymän klikkaamalla \"X\"-ikonia käyttöliittymän yläreunassa.",
- "ChooseX": "Valitse %1$s",
+ "CssDidntLoad": "Selaimesi ei saanut ladattua tämän sivun tyyliä.",
+ "CustomLimit": "Muokattu rajaus",
"DataForThisReportHasBeenPurged": "Tämän raportin data on yli %s kuukautta vanhaa ja on poistettu.",
"DataTableExcludeAggregateRows": "Yhdistetyt rivit ovat näkyvillä %s Piilota",
- "DataTableIncludeAggregateRows": "Yhdistetyt rivit on piilotettu %s Näytä",
"DataTableHowToSearch": "Hae painamalla enter tai klikkaamalla hakukuvaketta",
+ "DataTableIncludeAggregateRows": "Yhdistetyt rivit on piilotettu %s Näytä",
"Default": "oletus",
"DonateCall1": "Matomo on sinulle aina ilmainen, mutta tämä ei tarkoita sitä, että sen luominen olisi ilmaista meille.",
"DonateCall2": "Matomo tarvitsee sinun tukeasi kasvaakseen ja menestyäkseen.",
"DonateCall3": "Jos Matomosta on ollut merkittävää hyötyä liiketoiminnallesi, %1$sharkitse lahjoittamista%2$s tai %3$spremium-toimintojen ostamista%4$s. Jokainen euro auttaa.",
+ "EndDate": "Lopetuspäivä",
"EndShortcut": "Loppuun",
"EnterZenMode": "Siirry Zen-tilaan (piilota valikot)",
- "ExitZenMode": "Poistu Zen-tilasta (näytä valikot)",
"ExcludeRowsWithLowPopulation": "Kaikki rivit näytetään %s Piilota vajaat rivit",
+ "ExitZenMode": "Poistu Zen-tilasta (näytä valikot)",
+ "ExpandSubtables": "Avaa alataulut",
+ "ExportFormat": "Vientimuoto",
"ExternalHelp": "Apua (aukeaa uudessa ikkunassa)",
"FlattenDataTable": "Tämä raportti on hierarkinen %s Muuta tasaiseksi",
+ "FlattenReport": "Litistä raportti",
"FormatMetrics": "Muotoile mittarit",
- "ShowExportUrl": "Näytä vienti-URL",
"HideExportUrl": "Piilota vienti-URL",
"HomeShortcut": "Alkuun",
"IncludeRowsWithLowPopulation": "Vajaat rivit on piilotettu %s Näytä kaikki rivit",
@@ -34,74 +43,68 @@
"InjectedHostNonSuperUserWarning": "%1$sKlikkaa tästä avataksesi Matomo turvallisesti%2$s ja poistaaksesi tämä varoitus. Voit myös ottaa yhteyttä Matomon ylläpitäjään ja ilmoittaa ongelmasta (%3$sklikkaa tästä lähettääksesi sähköpostia%4$s).",
"InjectedHostSuperUserWarning": "Matomo saattaa olla väärin asennettu (esim. jos Matomo on hiljattain siirretty uuteen serveriin tai URL:ään). Voit joko %1$sklikata tästä ja lisätä %2$s ja lisätä päteväksi Matomo isäntänimeksi (jos luotat siihen)%3$s, tai %4$sklikata tästä ja %5$s siirtyäksesi Matomoon turvallisesti%6$s.",
"InjectedHostWarningIntro": "Käytät Matomoa osoitteesta %1$s, mutta Matomo on konfiguroitu ajettavaksi tässä osoitteessa: %2$s.",
- "JavascriptDisabled": "JavaScript on oltava käytössä, jotta Matomoa voi käyttää standardinäkymässä.<br \/>Vaikuttaa kuitenkin siltä, ettei JavaScript ole käytössä tai tuettu selaimessasi.<br \/>Käyttääksesi standardinäkymää, ota JavaScript käyttöön selaimen asetuksista, ja %1$syritä uudelleen%2$s.<br \/>",
- "VisitStatusOrdered": "Ostettu",
- "VisitStatusOrderedThenAbandoned": "Ostettu, sitten hylätty ostoskori",
- "VisitTypeReturning": "Palaava",
- "VisitTypeReturningCustomer": "Palaava asiakas",
+ "JavascriptDisabled": "JavaScript on oltava käytössä, jotta Matomoa voi käyttää standardinäkymässä.<br />Vaikuttaa kuitenkin siltä, ettei JavaScript ole käytössä tai tuettu selaimessasi.<br />Käyttääksesi standardinäkymää, ota JavaScript käyttöön selaimen asetuksista, ja %1$syritä uudelleen%2$s.<br />",
+ "JsDidntLoad": "Selaimesi ei saanut ladattua tämän sivun skriptejä.",
+ "LeadingAnalyticsPlatformRespectsYourPrivacy": "Johtava avoimen lähdekoodin analytiikka-alusta, joka kunnioittaa yksityisyyttäsi.",
+ "MacPageDown": "Fn + Nuoli oikealle",
+ "MacPageUp": "Fn + Nuoli vasemmalle",
"MainNavigation": "Päänavigointi",
"Menu": "Valikko",
+ "MenuEntries": "Valikon sisältö",
"NoPrivilegesAskPiwikAdmin": "Olet kirjautuneena sisään käyttäjänä '%1$s', mutta sinulla ei ole mitään oikeuksia Matomoon. %2$sPyydä Matomon ylläpitäjää (napsauta avataksesi sähköpostin)%3$s antamaan katseluoikeudet verkkosivustoon.",
+ "NoSuchPage": "Tätä sivua ei ole olemassa",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "Yhden klikkauksen päivitys ei ole saatavilla, sillä Matomoasi ajetaan useilla palvelimilla. Lataa uusin versio jatkaaksesi: %1$s",
"OnlyForSuperUserAccess": "Tämä vimpain näkyy ainoastaan käyttäjille, joilla on superkäyttäjän oikeudet.",
+ "PageDownShortcutDescription": "päästäksesi sivun loppuun",
+ "PageUpShortcutDescription": "päästäksesi sivun alkuun",
"PeriodRange": "Alue",
+ "PivotBySubtable": "Tämä raportti ei ole käännetty %1$s:n mukaan. Käännetty %2$s:llä.",
+ "QuickAccessTitle": "Hae %s:llä. Käytä nuolia navigointiin. Oikotie: haku aukeaa painamalla f-näppäintä.",
+ "QuickLinks": "Pikalinkit",
+ "ReadMoreOnlineGuide": "Lue lisää tästä aiheesta verkko-oppaasta.",
+ "RemoveTotalsRowDataTable": "Tämä raportti näyttää yhteenvetorivin%sPoista yhteenvetorivi",
"ReportGeneratedOn": "Raportti luotu %s",
"ReportGeneratedXAgo": "Raportti luotu %s sitten",
+ "ReportType": "Raportin tyyppi",
+ "ReportWithMetadata": "Raportti metadatan kera",
+ "RowLimit": "Rivejä",
+ "SearchOnMatomo": "Hae '%1$s' Matomo.orgista",
+ "SeeAvailableVersions": "Näytä saatavilla olevat versiot",
+ "Segments": "Segmentit",
"SharePiwikLong": "Hei! Löysin juuri hienon vapaan ohjelmiston: Matomon!\n\nMatomolla voit seurata verkkosivustosi vierailijoita ilmaiseksi. Kannattaa tutustua!",
"SharePiwikShort": "Matomo! Vapaa ja avoimen lähdekoodin verkkoanalyysi. Hallitse omaa dataasi.",
"ShareThis": "Jaa tämä",
- "ShortcutsAvailable": "Saatavilla olevat oikotiet",
- "ShortcutZenMode": "Zen-tila",
- "ShortcutSegmentSelector": "segmentin valinnalle",
- "ShortcutWebsiteSelector": "verkkosivun valinnalle",
"ShortcutCalendar": "kalenterin avaamiselle",
- "ShortcutSearch": "haulle",
"ShortcutHelp": "tälle ohjeelle",
+ "ShortcutSearch": "haulle",
+ "ShortcutSegmentSelector": "segmentin valinnalle",
+ "ShortcutWebsiteSelector": "verkkosivun valinnalle",
+ "ShortcutZenMode": "Zen-tila",
+ "ShortcutsAvailable": "Saatavilla olevat oikotiet",
+ "ShowExportUrl": "Näytä vienti-URL",
"ShowJSCode": "Näytä lisättävä Javascript-koodi",
"SkipToContent": "Siirry sisältöön",
+ "StandardReport": "Standardiraportti",
+ "StartDate": "Aloituspäivä",
"SubscribeAndBecomePiwikSupporter": "Jatka turvalliselle luottokorttimaksusivulle (Paypal) ryhtyäksesi Matomon tukijaksi!",
"SupportPiwik": "Tue Matomoa!",
+ "SupportUsOn": "Tue meitä",
+ "SystemSummaryMysqlVersion": "MySQL-versio",
+ "SystemSummaryNActivatedPlugins": "%d lisäosaa käytössä",
+ "SystemSummaryNWebsites": "%d verkkosivustoa",
+ "SystemSummaryPhpVersion": "PHP-versio",
+ "SystemSummaryPiwikVersion": "Matomo-versio",
+ "SystemSummaryWidget": "Järjestelmän yhteenveto",
"TableNoData": "Ei tietoja tässä taulukossa",
"ThereIsNoDataForThisReport": "Tähän raporttiin ei ole tietoja.",
"UnFlattenDataTable": "Tämä raportti on tasainen %s Muuta hierarkiseksi",
- "RemoveTotalsRowDataTable": "Tämä raportti näyttää yhteenvetorivin%sPoista yhteenvetorivi",
- "AddTotalsRowDataTable": "Tämä raportti ei näytä yhtenvetoriviä %s Näytä yhteenvetorivi",
+ "UndoPivotBySubtable": "Tämä raportti on käännetty %s:llä. Kumoa kääntö",
"ViewAllPiwikVideoTutorials": "Näytä kaikki Matomon videokurssit",
+ "VisitStatusOrdered": "Ostettu",
+ "VisitStatusOrderedThenAbandoned": "Ostettu, sitten hylätty ostoskori",
+ "VisitTypeReturning": "Palaava",
+ "VisitTypeReturningCustomer": "Palaava asiakas",
"WebAnalyticsReports": "Raportit",
- "YouAreUsingTheLatestVersion": "Käytössäsi on Matomon uusin versio!",
- "ClickRowToExpandOrContract": "Klikkaa tätä riviä avataksesi tai sulkeaksesi alataulukon.",
- "UndoPivotBySubtable": "Tämä raportti on käännetty %s:llä. Kumoa kääntö",
- "NoSuchPage": "Tätä sivua ei ole olemassa",
- "PageUpShortcutDescription": "päästäksesi sivun alkuun",
- "PageDownShortcutDescription": "päästäksesi sivun loppuun",
- "PivotBySubtable": "Tämä raportti ei ole käännetty %1$s:n mukaan. Käännetty %2$s:llä.",
- "SystemSummaryWidget": "Järjestelmän yhteenveto",
- "SystemSummaryNWebsites": "%d verkkosivustoa",
- "SystemSummaryNActivatedPlugins": "%d lisäosaa käytössä",
- "SystemSummaryPiwikVersion": "Matomo-versio",
- "SystemSummaryMysqlVersion": "MySQL-versio",
- "SystemSummaryPhpVersion": "PHP-versio",
- "QuickAccessTitle": "Hae %s:llä. Käytä nuolia navigointiin. Oikotie: haku aukeaa painamalla f-näppäintä.",
- "MenuEntries": "Valikon sisältö",
- "Segments": "Segmentit",
- "OneClickUpdateNotPossibleAsMultiServerEnvironment": "Yhden klikkauksen päivitys ei ole saatavilla, sillä Matomoasi ajetaan useilla palvelimilla. Lataa uusin versio jatkaaksesi: %1$s",
- "CssDidntLoad": "Selaimesi ei saanut ladattua tämän sivun tyyliä.",
- "JsDidntLoad": "Selaimesi ei saanut ladattua tämän sivun skriptejä.",
- "AdblockIsMaybeUsed": "Jos käytät mainostenestoa (ad blocker), poista se käytöstä tällä sivulla, jotta Matomo toimii ongelmitta.",
- "ChangeCurrentWebsite": "Valitse sivusto, nyt valittuna %s",
- "LeadingAnalyticsPlatformRespectsYourPrivacy": "Johtava avoimen lähdekoodin analytiikka-alusta, joka kunnioittaa yksityisyyttäsi.",
- "MacPageUp": "Fn + Nuoli vasemmalle",
- "MacPageDown": "Fn + Nuoli oikealle",
- "ReportType": "Raportin tyyppi",
- "RowLimit": "Rivejä",
- "CustomLimit": "Muokattu rajaus",
- "ExportFormat": "Vientimuoto",
- "ExpandSubtables": "Avaa alataulut",
- "StandardReport": "Standardiraportti",
- "FlattenReport": "Litistä raportti",
- "ReportWithMetadata": "Raportti metadatan kera",
- "ReadMoreOnlineGuide": "Lue lisää tästä aiheesta verkko-oppaasta.",
- "SeeAvailableVersions": "Näytä saatavilla olevat versiot",
- "QuickLinks": "Pikalinkit",
- "SearchOnMatomo": "Hae '%1$s' Matomo.orgista"
+ "YouAreUsingTheLatestVersion": "Käytössäsi on Matomon uusin versio!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreHome/lang/it.json b/plugins/CoreHome/lang/it.json
index 63a601d2d0..e75aab914d 100644
--- a/plugins/CoreHome/lang/it.json
+++ b/plugins/CoreHome/lang/it.json
@@ -29,6 +29,7 @@
"DonateCall1": "Matomo non costerà mai nulla a voi per il suo utilizzo, ma ciò non significa che non costi nulla a noi svilupparlo.",
"DonateCall2": "Matomo ha bisogno del vostro costante supporto per crescere e prosperare.",
"DonateCall3": "Se ritieni che Matomo abbia portato alla tua attività un significativo valore aggiunto, %1$sconsidera di fare una donazione%2$s o di %3$sacquistare una funzionalità premium%4$s. Anche gli spiccioli aiutano.",
+ "EndDate": "Data di Fine",
"EndShortcut": "Fine",
"EngagementSubcategoryHelp1": "La sezione Engagement fornisce dei report che aiutano a quantificare il numero di visitatori nuovi e di ritorno che ricevi. Puoi anche esaminare i report che dettagliano il tempo medio e il numero di pagine per visita, nonché il numero di volte in cui un visitatore è stato sul tuo sito e il numero abituale di giorni che intercorrono tra le visite.",
"EngagementSubcategoryHelp2": "Questo può aiutarti a ottimizzare la frequenza e le visite ad alta interazione oltre a massimizzare la tua copertura.",
@@ -38,8 +39,8 @@
"ExitZenMode": "Esci dalla modalità Zen (mostra i menù)",
"ExpandSubtables": "Espandi sottotabelle",
"ExportFormat": "Esporta formato",
- "ExportTooltip": "Nota: per utilizzare l'URL di esportazione generato, sarà necessario specificare un token auth dell'applicazione. Puoi configurare questi token in Admin -> Sicurezza -> Token Auth.",
- "ExportTooltipWithLink": "Nota: per utilizzare l'URL di esportazione generato, sarà necessario specificare un token auth dell'applicazione. È possibile configurare questi token in %1$s[Admin -> Sicurezza-> Token Auth]%2$s. Sostituisci %3$s nell'URL di esportazione con il tuo token auth. Attenzione: non condividere mai con nessun altro l'URL con il token reale.",
+ "ExportTooltip": "Nota: per utilizzare l'URL di esportazione generato, sarà necessario specificare un token auth dell'applicazione. Puoi configurare questi token in Admin -&gt; Sicurezza -&gt; Token Auth.",
+ "ExportTooltipWithLink": "Nota: per utilizzare l'URL di esportazione generato, sarà necessario specificare un token auth dell'applicazione. È possibile configurare questi token in %1$s[Admin -&gt; Sicurezza-&gt; Token Auth]%2$s. Sostituisci %3$s nell'URL di esportazione con il tuo token auth. Attenzione: non condividere mai con nessun altro l'URL con il token reale.",
"ExternalHelp": "Aiuto (apri in una nuova scheda)",
"FlattenDataTable": "Il report è gerarchico %s Rendilo piatto",
"FlattenReport": "Report piatto",
@@ -52,7 +53,7 @@
"InjectedHostNonSuperUserWarning": "%1$sClicca qui per accedere a Matomo in maniera sicura%2$s e rimuovere questo avvertimento. Puoi anche voler contattare il tuo amministratore di Matomo per avvisare di questo problema (%3$sclicca qui per inviare un'email%4$s).",
"InjectedHostSuperUserWarning": "Matomo può essere configurato in modo errato (ad esempio, se Matomo è stato recentemente spostato in un nuovo server o URL). È possibile anche %1$s cliccare qui e aggiungere %2$s come hostname valido per Matomo (se ti fidi di esso)%3$s, o %4$scliccare qui e andare a %5$s per accedere in modo sicuro a Matomo%6$s.",
"InjectedHostWarningIntro": "Stai accedendo a Matomo da %1$s ma Matomo è stato configurato per girare a questo indirizzo: %2$s.",
- "JavascriptDisabled": "Perché tu possa usare Matomo in visualizzazione standard, JavaScript deve essere abilitato. <br />Comunque sembra che JavaScript sia disabilitato o non supportato dal tuo browser.<br /> Per usare la visualizzazione standard, abilita JavaScript cambiando le opzioni del tuo browser, poi %1$sprova ancora%2$s.<br />",
+ "JavascriptDisabled": "Perché tu possa usare Matomo in visualizzazione standard, JavaScript deve essere abilitato. <br>Comunque sembra che JavaScript sia disabilitato o non supportato dal tuo browser.<br> Per usare la visualizzazione standard, abilita JavaScript cambiando le opzioni del tuo browser, poi %1$sprova ancora%2$s.<br>",
"JsDidntLoad": "Il tuo browser non ha potuto caricare gli script di questa pagina.",
"LeadingAnalyticsPlatformRespectsYourPrivacy": "La piattaforma gratuita di analisi web che rispetta la tua privacy.",
"MacPageDown": "Fn + Freccia a destra",
@@ -78,7 +79,7 @@
"ReportGeneratedXAgo": "Report generato %s fa",
"ReportType": "Tipo di report",
"ReportWithMetadata": "Report con metadati",
- "ReportingCategoryHelpPrefix": "In che modo la pagina dei report \"%1$s > %2$s\" può aiutarmi?",
+ "ReportingCategoryHelpPrefix": "In che modo la pagina dei report \"%1$s &gt; %2$s\" può aiutarmi?",
"RowLimit": "Limite riga",
"SearchOnMatomo": "Cerca '%1$s' su matomo.org",
"SeeAvailableVersions": "Vedi le Versioni Disponibili",
@@ -98,6 +99,7 @@
"SkipToContent": "Vai al contenuto",
"SoftwareSubcategoryHelp": "La sezione Software mostra i sistemi operativi, i browser e i plugin che i tuoi visitatori stanno utilizzando per accedere al sito, in modo da poterlo ottimizzare per assicurarti che sia completamente compatibile con le configurazioni più diffuse.",
"StandardReport": "Report standard",
+ "StartDate": "Data di Inizio",
"SubscribeAndBecomePiwikSupporter": "Procedi su una pagina sicura di pagamento con carta di credito (Paypal) per diventare un Sostenitore di Matomo!",
"SupportPiwik": "Sostieni Matomo!",
"SupportUsOn": "Sostienici su",
diff --git a/plugins/CoreHome/lang/pt-br.json b/plugins/CoreHome/lang/pt-br.json
index 1cfe00e68e..09c750bcaf 100644
--- a/plugins/CoreHome/lang/pt-br.json
+++ b/plugins/CoreHome/lang/pt-br.json
@@ -16,6 +16,7 @@
"CloseWidgetDirections": "Você pode fechar esta ferramenta clicando no ícone \"X\" na parte superior do widget.",
"CssDidntLoad": "Seu navegador não conseguiu carregar o estilo desta página.",
"CustomLimit": "Limite personalizado",
+ "DataForThisReportHasBeenDisabled": "A segmentação está atualmente desabilitada para este relatório. Verifique %1$sesta FAQ%2$s para obter mais detalhes.",
"DataForThisReportHasBeenPurged": "Os dados para este relatório possuem mais de %s meses e foram excluídos.",
"DataTableCombineDimensions": "Dimensões são mostradas separadamente %s Mostrar dimensões combinadas",
"DataTableExcludeAggregateRows": "As linhas agregadas encontram-se visíveis %s Oculte-as",
@@ -28,6 +29,7 @@
"DonateCall1": "Matomo sempre custará nada para usar, mas isso não significa que não nos custa nada para fazê-lo.",
"DonateCall2": "Matomo precisa do seu apoio continuado para crescer e prosperar.",
"DonateCall3": "Se você sentir que Matomo tem acrescentado valor significativo para seu negócio ou empreendimento, %1$sconsidere doar para o projeto%2$s ou %3$s comprar um recurso premium%4$s. Cada centavo vai ajudar.",
+ "EndDate": "Data Final",
"EndShortcut": "Fim",
"EngagementSubcategoryHelp1": "A seção Engajamento fornece relatórios que ajudam a quantificar quantos visitantes novos e recorrentes você recebe. Você também pode revisar relatórios que detalham o tempo médio e o número de páginas por visita, bem como o número de vezes que um visitante acessou seu site e o número mais comum de dias entre as visitas.",
"EngagementSubcategoryHelp2": "Isso pode ajudá-lo a otimizar a frequência e as visitas de alta interação, além de maximizar seu alcance.",
@@ -97,6 +99,7 @@
"SkipToContent": "Ir para o conteúdo",
"SoftwareSubcategoryHelp": "A seção Software mostra os sistemas operacionais, navegadores e plugins que seus visitantes estão usando para acessar o site para que você possa otimizá-lo e garantir que seja totalmente compatível com as configurações mais populares.",
"StandardReport": "Relatório padrão",
+ "StartDate": "Data Inicial",
"SubscribeAndBecomePiwikSupporter": "Proceder a uma página de pagamento seguro através de cartão de crédito (Paypal) para se tornar um apoiador do Matomo!",
"SupportPiwik": "Apóie o Matomo!",
"SupportUsOn": "Apoie-nos em",
diff --git a/plugins/CoreHome/lang/sq.json b/plugins/CoreHome/lang/sq.json
index 685d25f200..fffd17c8fe 100644
--- a/plugins/CoreHome/lang/sq.json
+++ b/plugins/CoreHome/lang/sq.json
@@ -1,128 +1,132 @@
{
"CoreHome": {
- "CategoryNoData": "Pa të dhëna për këtë kategori. Provoni të \"Përfshini tërë popullatën\".",
- "ChangeVisualization": "Ndryshoni vizualizimin",
+ "AdblockIsMaybeUsed": "Në rast se përdorni ndonjë bllokues reklamash, ju lutemi, çaktivizojeni për këtë sajt, që të siguroni punën pa probleme të Matomo-s.",
+ "AddTotalsRowDataTable": "Raporti s’shfaq rreshtin e tërësoreve %s Shfaqe rreshtin e tërësoreve",
+ "CategoryNoData": "Pa të dhëna për këtë kategori. Provoni të “Përfshini tërë popullatën”.",
+ "ChangeCurrentWebsite": "Zgjidhni një sajt, sajti i përzgjedhur tani: %s",
"ChangePeriod": "Ndryshoni periudhën",
+ "ChangeVisualization": "Ndryshoni vizualizimin",
"CheckForUpdates": "Kontrollo për përditësime",
"CheckPiwikOut": "Provojeni Matomo-s!",
+ "ChooseX": "Zgjidhni %1$s",
+ "ClickRowToExpandOrContract": "Që të zgjeroni ose tkurrni nëntabelën, klikoni mbi këtë rresht.",
"ClickToEditX": "Klikoni që të përpunoni %s",
"ClickToSeeFullInformation": "Klikoni që të shihni të dhënat e plota",
"CloseSearch": "Mbylle kërkimin",
- "CloseWidgetDirections": "Këtë widget mund ta mbyllni duke klikuar mbi ikonën 'X' në krye të widget-it.",
- "ChooseX": "Zgjidhni %1$s",
- "DataForThisReportHasBeenPurged": "Të dhënat e këtij raporti janë më të vjetra se %s muaj dhe u pastruan.",
- "DataTableExcludeAggregateRows": "Grumbulli i rreshtave është i shfaqur %s Fshihini",
- "DataTableIncludeAggregateRows": "Grumbulli i rreshtave është i fshehur %s Shfaqini",
- "DataTableHowToSearch": "Shtypni tastin Enter ose klikoni ikonën e kërkimit që të kërkoni",
- "DataTableShowDimensions": "Përmasat janë të ndërthurura %s Shfaqi përmasat ndarazi",
+ "CloseWidgetDirections": "Këtë “widget” mund ta mbyllni duke klikuar mbi ikonën 'X' në krye të widget-it.",
+ "CssDidntLoad": "Shfletuesi juaj s’qe në gjendje të ngarkonte stilin e kësaj faqeje.",
+ "CustomLimit": "Kufi vetjak",
+ "DataForThisReportHasBeenDisabled": "Segmentimi është aktualisht i çaktivizuar për këtë raport. Për më tepër hollësi, ju lutemi, shihni %1$skëto PBR%2$s.",
+ "DataForThisReportHasBeenPurged": "Të dhënat e këtij raporti janë më të vjetra se %s muaj dhe u spastruan.",
"DataTableCombineDimensions": "Përmasat janë shfaqur ndarazi %s Shfaqi përmasat të ndërthurura",
+ "DataTableExcludeAggregateRows": "Shfaqen rreshtat përmbledhur %s Fshihi",
+ "DataTableHowToSearch": "Që të kërkoni, shtypni tastin Enter, ose klikoni ikonën e kërkimit",
+ "DataTableIncludeAggregateRows": "Rreshtat e përmbledhur janë të fshehur %s Shfaqi",
+ "DataTableShowDimensions": "Përmasat janë të ndërthurura %s Shfaqi përmasat ndarazi",
"DateInvalid": "Kombinimi dhënë për datë dhe periudhë është i pavlefshëm. Ju lutemi, zgjidhni një datë të vlefshme te përzgjedhësi i datave.",
"Default": "parazgjedhje",
- "DonateCall1": "Përdorimi i Matomo-a s’do t’ju kushtojë kurrë një dysh, por kjo s’do të thotë që neve nuk na kushton krijimi i tij.",
- "DonateCall2": "Matomo lyp përkrahjen tuaj që të rritet dhe lulëzojë.",
- "DonateCall3": "Nëse jeni të mendimit se Matomo ka sjellë një shtim të vyer të biznesit apo në përpjekjet tuaja, %1$sju lutemi, shihni mundësinë e dhurimit%2$s ose %3$sblerjes së paketës me pagesë%4$s. Çdo qindarkë do të na ndihmonte.",
- "EndShortcut": "Fund",
+ "DevicesSubcategoryHelp": "Ndarja Pajisje ju ndihmon të njihni teknologjinë që vizitorët përdorin në sajtin tuaj. Do të shihni raporte mbi llojin e pajisjes dhe modele specifike, që t’ju bëjnë të mundur ta optimizoni sajtin për shumicën e pajisjeve popullore.",
+ "DonateCall1": "Përdorimi i Matomo-a s’do t’ju kushtojë kurrë një dysh, por kjo s’do të thotë që neve s’na kushton krijimi i tij.",
+ "DonateCall2": "Që të rritet dhe lulëzojë, Matomo lyp përkrahjen tuaj.",
+ "DonateCall3": "Nëse jeni të mendimit se Matomo ka sjellë një shtim të vyer në biznesin apo në përpjekjet tuaja, %1$sju lutemi, shihni mundësinë e dhurimit%2$s, ose %3$sblerjes së paketës me pagesë%4$s. Çdo qindarkë do të na ndihmonte.",
+ "EndDate": "Datë Përfundimi",
+ "EndShortcut": "Përfundim",
+ "EngagementSubcategoryHelp1": "Ndarja Angazhim ju furnizon raporte që ndihmojnë të kini një ide mbi sasinë e vizitave të reja dhe të rikthyerish që përfiton sajti juaj. Mund të shqyrtoni edhe raporte që japin kohën mesatare dhe numrin e faqeve sipas vizitash, si dhe numrin e herëve që një vizitor ka qenë në sajtin tuaj dhe numrin më të zakonshëm të ditëve mes vizitash.",
+ "EngagementSubcategoryHelp2": "Kjo mund t’ju ndihmojë të bëni optimizim për shpeshti dhe vizita me shkallë të lartë ndërveprimi, përveç se për të kapur maksimumin e shtrirjes tuaj.",
"EnterZenMode": "Kalo nën mënyrën Zen (fshihi menutë)",
- "ExitZenMode": "Dil nga mënyra Zen (shfaqi menutë)",
- "ExceptionNotAllowlistedIP": "S’mund të përdorni këtë instancë të Matomo-s, ngaqë nuk lejohet IP-ja juaj %s.",
+ "ExceptionNotAllowlistedIP": "S’mund të përdorni këtë instancë të Matomo-s, ngaqë IP-ja juaj %s s’është e lejuar.",
"ExcludeRowsWithLowPopulation": "Po shfaqen krejt rreshtat %s Përjashtoni popullatat e ulëta",
+ "ExitZenMode": "Dil nga mënyra Zen (shfaqi menutë)",
+ "ExpandSubtables": "Zgjeroji nëntabelat",
+ "ExportFormat": "Format eksportimi",
+ "ExportTooltip": "Shënim: Për të përdorur URL-në e prodhuar për eksportim, do t’ju duhet të specifikoni një aplikacion mirëfilltësimi token-ësh. Këta token-ë mund t’i formësoni te Përgjegjës -&gt; Siguri -&gt; Token-ë Mirëfilltësimi.",
+ "ExportTooltipWithLink": "Shënim: Për të përdorur URL-në e prodhuar për eksportim, do t’ju duhet të specifikoni një aplikacion mirëfilltësimi token-ësh. Këta token-ë mund t’i formësoni te %1$s[Përgjegjës -&gt; Siguri -&gt; Token-ë Mirëfilltësimi]%2$s. Zëvendësoni %3$s te URL Eksportimi me token-in tuaj të Mirëfilltësimit. Kujdes: Mos ia jepni kujt tjetër URL-në me token-in real.",
"ExternalHelp": "Ndihmë (hapet në skedë të re)",
- "FlattenDataTable": "Raporti është hierarkik %s Bëjeni të sheshtë",
+ "FlattenDataTable": "Raporti është hierarkik %s Bëje të sheshtë",
+ "FlattenReport": "Raport i sheshtë",
"FormatMetrics": "Statistika formatesh",
- "ShowExportUrl": "Shfaq URL Eksportimi",
"HideExportUrl": "Fshihe URL-në e Eksportimit",
"HomeShortcut": "Kreu",
- "SupportUsOn": "Na përkrahni në",
"IncludeRowsWithLowPopulation": "Janë fshehur rreshta me popullatë të ulët %s Shfaqi krejt rreshtat",
"InjectedHostEmailBody": "Tungjatjeta, provova të hyj në Matomo sot dhe ndesha sinjalizimin për strehëemër të panjohur.",
"InjectedHostEmailSubject": "Te Matomo u hy me një strehëemër të panjohur: %s",
"InjectedHostNonSuperUserWarning": "%1$sKlikoni këtu që të hyni te Matomo pa rrezik%2$s dhe që të hiqet ky sinjalizim. Mund të doni edhe të lidheni me përgjegjësin e instalimit tuaj të Matomo-s dhe t’ia bëni të ditur këtë problem (%3$sklikoni këtu që t’ia dërgoni me email%4$s).",
"InjectedHostSuperUserWarning": "Matomo mund të jetë i keqformësuar (për shembull, në rast se Matomo tani së fundi u kalua në një shërbyes të ri ose URL të re). Mundeni ose %1$stë klikoni këtu dhe ta shtoni %2$s si një strehëemër të vlefshëm Matomo (nëse i zini besë)%3$s, ose %4$stë klikoni këtu dhe të kaloni te %5$s për hyrje të parrezik në Matomo%6$s.",
"InjectedHostWarningIntro": "Po hyni në Matomo që prej %1$s, por Matomo qe formësuar të xhirojë në këtë adresë: %2$s.",
- "JavascriptDisabled": "Që të mund të përdorni Matomo-n në parjen standarde duhet të aktivizohet JavaScript-i.<br \/>Por ja që duket se ose JavaScript-i është i çaktivizuar, ose nuk mbulohet nga shfletuesi juaj.<br \/>Që të përdorni parjen standarde, aktivizoni JavaScript-in duke ndryshuar mundësitë përkatëse te shfletuesi juaj, mandej %1$sriprovoni%2$s.<br \/>",
- "VisitStatusOrdered": "Të porositura",
- "VisitStatusOrderedThenAbandoned": "Shportë e të Porositurave mandej të Braktisura",
- "VisitTypeReturning": "I rikthyer",
- "VisitTypeReturningCustomer": "Klient i Rikthyer",
+ "JavascriptDisabled": "Që të mund të përdorni Matomo-n në parjen standarde, duhet të aktivizohet JavaScript-i.<br>Por ja që duket se ose JavaScript-i është i çaktivizuar, ose nuk mbulohet nga shfletuesi juaj.<br>Që të përdorni parjen standarde, aktivizoni JavaScript-in duke ndryshuar mundësitë përkatëse te shfletuesi juaj, mandej %1$sriprovoni%2$s.<br>",
+ "JsDidntLoad": "Shfletuesi juaj s’qe në gjendje të ngarkonte programthet e kësaj faqeje.",
+ "LeadingAnalyticsPlatformRespectsYourPrivacy": "Platforma kryesuese e analizave të hapura që respekton privatësinë tuaj.",
+ "MacPageDown": "Fn+tasti shigjetë Djathtas",
+ "MacPageUp": "Fn+tasti shigjetë Majtas",
"MainNavigation": "Lëvizja kryesore",
- "YourDonationWillHelp": "Dhurimi juaj do të ndihmojë drejtpërsëdrejti për financim veçorish të reja dhe përmirësime të kësaj platforme statistikash dhe analizimesh me burim të hapët. Kjo do të thotë që bashkësia do të përfitojë përherë nga një mjet që mbron privatësinë dhe ju lejon të jeni në kontroll të të dhënave tuaja.",
- "ThanksFromAllOfUs": "Faleminderit prej krejt nesh në Matomo!",
"Menu": "Menu",
- "NoPrivilegesAskPiwikAdmin": "Jeni i futur si '%1$s' por duket se s’keni leje të rregulluara për ju në Matomo. %2$s Kërkojini administratorit tuaj te Matomo (klikoni që t’i dërgoni email)%3$s që t’ju japë të drejta 'parjesh' te një sajt.",
- "OnlyForSuperUserAccess": "Ky widget u shfaqet te pulti parazgjedhje vetëm përdoruesve që kanë hyrje si Superpërdorues.",
+ "MenuEntries": "Zëra menuje",
+ "NoPrivilegesAskPiwikAdmin": "Jeni i futur si '%1$s', por duket se s’keni leje të rregulluara për ju në Matomo. %2$s Kërkojini administratorit tuaj te Matomo (klikoni që t’i dërgoni email)%3$s që t’ju japë të drejta 'parjesh' te një sajt.",
+ "NoSuchPage": "Kjo faqe s’ekziston",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "S’kryeni dot përditësim me një klikim, ngaqë po e përdorni Matomo-n me disa shërbyes. Ju lutemi, që të mund të vazhdohet, shkarkoni versionin më të ri prej %1$s.",
+ "OnlyForSuperUserAccess": "Ky “widget” u shfaqet te pulti parazgjedhje vetëm përdoruesve që kanë hyrje si Superpërdorues.",
+ "PageDownShortcutDescription": "që të shkohet në fund të faqes",
+ "PageUpShortcutDescription": "që të shkohet në krye të faqes",
+ "PeriodHasOnlyRawData": "Duket sikur raportet për këtë periudhë s’janë përpunuar ende. Doni të shihni ç’po ndodh tani? Shihni %1$sRegjistër vizitash%2$s, ose zgjidhni një periudhë tjetër datash, deri sa të prodhohen raportet.",
"PeriodRange": "Interval",
+ "PivotBySubtable": "Ky raport s’është rrotulluar %1$s Rrotullojeni sipas %2$s",
+ "Profilable": "E profilizueshme",
+ "QuickAccessTitle": "Kërkoni për %s. Përdorni tastet shigjetë që të lëvizni nëpër përfundimet e kërkimit. Shkurtore tastiere: Shtypni tastin 'f' që të kërkohet.",
+ "QuickLinks": "Lidhje të Shpejta",
+ "ReadMoreOnlineGuide": "Lexoni më tepër rreth kësaj teme te udhërrëfyesi në internet.",
+ "RemoveTotalsRowDataTable": "Raporti shfaq rreshtin e tërësoreve %s Hiqe rreshtin e tërësoreve",
"ReportGeneratedOn": "Raport i prodhuar më %s",
"ReportGeneratedXAgo": "Raport i prodhuar %s më parë",
+ "ReportType": "Lloj raport",
+ "ReportWithMetadata": "Raport me tejtëdhëna",
+ "ReportingCategoryHelpPrefix": "Si më ndihmon faqja e raportimeve “%1$s &gt; %2$s”?",
+ "RowLimit": "Kufi i papërpunuar",
+ "SearchOnMatomo": "Kërkoni për '%1$s' te Matomo.org",
+ "SeeAvailableVersions": "Shihni Versione të Gatshëm",
+ "Segments": "Segmente",
"SharePiwikLong": "Njatjeta! Sapo gjeta një program të lirë shumë të mirë: Matomo!\n\nMatomo do t’ju lejojë të ndiqni falas vizitorët në sajtin tuaj. Duhet ta provoni medoemos!",
- "SharePiwikShort": "Matomo! Analiza web të lira\/libre. Jini zot i të dhënave tuaja.",
+ "SharePiwikShort": "Matomo! Analiza web të lira/libre. Jini zot i të dhënave tuaja.",
"ShareThis": "Ndajeni me të tjerët këtë",
- "ShortcutsAvailable": "Shkurtore të gatshme",
- "ShortcutZenMode": "për mënyrën Zen",
- "ShortcutSegmentSelector": "për hapje përzgjedhësi Segmentesh",
- "ShortcutWebsiteSelector": "për hapje përzgjedhësi Sajtesh",
"ShortcutCalendar": "për hapje kalendarësh (d nënkupton Datë)",
- "ShortcutSearch": "për hapje kërkimesh (g nënkupton Gjej)",
"ShortcutHelp": "për shfaqjen e kësaj ndihme",
+ "ShortcutSearch": "për hapje kërkimesh (f nënkupton Find, pra Gjej në shqip)",
+ "ShortcutSegmentSelector": "për hapje përzgjedhësi Segmentesh",
+ "ShortcutWebsiteSelector": "për hapje përzgjedhësi Sajtesh",
+ "ShortcutZenMode": "për mënyrën Zen",
+ "ShortcutsAvailable": "Shkurtore të gatshme",
+ "ShowExportUrl": "Shfaq URL Eksportimi",
"ShowJSCode": "Shfaqe kodin JavaScript që duhet futur",
"SkipToContent": "Kalo te lënda",
- "SubscribeAndBecomePiwikSupporter": "Vazhdoni te një faqe e sigurt pagesash me kartë krediti (Paypal) që të bëheni një Përkrahës i Matomo-s!",
+ "SoftwareSubcategoryHelp": "Ndarja Software ju shfaq sistemet operative, shfletues dhe shtojca që vizitorët tuaj përdorin për sajtin, që të mund ta optimizoni sajtin tuaj për të garantuar se është plotësisht i përputhshëm me formësimet më popullore.",
+ "StandardReport": "Raport standard",
+ "StartDate": "Datë Fillimi",
+ "SubscribeAndBecomePiwikSupporter": "Vazhdoni te një faqe e sigurt pagesash me kartë krediti (Paypal), që të bëheni një Përkrahës i Matomo-s!",
"SupportPiwik": "Përkrahni Matomo-n!",
- "TableNoData": "S’ka të dhëna për këtë tabelë.",
- "ThereIsNoDataForThisReport": "Nuk ka të dhëna për këtë raport.",
- "UnFlattenDataTable": "Raporti është i sheshtë %s Bëjeni hierarkik",
- "RemoveTotalsRowDataTable": "Raporti shfaq rreshtin e tërësoreve %s Hiqe rreshtin e tërësoreve",
- "AddTotalsRowDataTable": "Raporti s’shfaq rreshtin e tërësoreve %s Shfaqe rreshtin e tërësoreve",
- "ViewAllPiwikVideoTutorials": "Shihini krejt Përkujdesoret Video për Matomo-n",
- "WebAnalyticsReports": "Raporte Analizash Web",
- "YouAreUsingTheLatestVersion": "Po përdorni versionin më të ri të Matomo-s!",
- "ClickRowToExpandOrContract": "Klikoni mbi këtë rresht që të zgjeroni ose tkurrni nëntabelën.",
- "UndoPivotBySubtable": "Ky raport është rrotulluar %s Zhbëjeni rrotullimin",
- "NoSuchPage": "Kjo faqe s’ekziston",
- "PageUpShortcutDescription": "që të shkohet në krye të faqes",
- "PageDownShortcutDescription": "që të shkohet në fund të faqes",
- "PivotBySubtable": "Ky raport s’është rrotulluar %1$s Rrotullojeni sipas %2$s",
- "SystemSummaryWidget": "Përmbledhje Sistemi",
- "SystemSummaryNWebsites": "%d sajte",
+ "SupportUsOn": "Na përkrahni në",
+ "SystemSummaryMysqlVersion": "Version MySQL-je",
+ "SystemSummaryNActivatedPlugins": "%d shtojca të aktivizuara",
"SystemSummaryNSegments": "%1$d segmente",
"SystemSummaryNSegmentsWithBreakdown": "%1$d segmente (%2$s të parapërpunuar, %3$s të përpunuar aty për aty)",
- "SystemSummaryNActivatedPlugins": "%d shtojca të aktivizuara",
- "SystemSummaryPiwikVersion": "Version Matomo",
- "SystemSummaryMysqlVersion": "Version MySQL-je",
+ "SystemSummaryNWebsites": "%d sajte",
"SystemSummaryPhpVersion": "Version PHP-je",
- "QuickAccessTitle": "Kërkoni për %s. Përdorni tastet shigjetë që të lëvizni nëpër përfundimet e kërkimit. Shkurtore tastiere: Shtypni 'f' që të kërkohet.",
- "MenuEntries": "Zëra menuje",
- "Segments": "Segmente",
- "OneClickUpdateNotPossibleAsMultiServerEnvironment": "S’kryeni dot përditësim me një klikim, ngaqë po e përdorni Matomo-n me disa shërbyes. Ju lutemi, që të mund të vazhdohet, shkarkoni versionin më të ri prej %1$s.",
- "CssDidntLoad": "Shfletuesi juaj s’qe në gjendje të ngarkonte stilin e kësaj faqeje.",
- "JsDidntLoad": "Shfletuesi juaj s’qe në gjendje të ngarkonte programthet e kësaj faqeje.",
- "AdblockIsMaybeUsed": "Në rast se përdorni ndonjë bllokues reklamash, ju lutemi, çaktivizojeni për këtë sajt, që të siguroni punën pa probleme të Matomo-s.",
- "ChangeCurrentWebsite": "Zgjidhni një sajt, sajti i përzgjedhur tani: %s",
- "LeadingAnalyticsPlatformRespectsYourPrivacy": "Platforma kryesuese e analizave të hapura që respekton privatësinë tuaj.",
- "MacPageUp": "Fn+shigjeta Majtas",
- "MacPageDown": "Fn+shigjeta Djathtas",
- "ReportType": "Lloj raport",
- "RowLimit": "Kufi i papërpunuar",
- "CustomLimit": "Kufi vetjak",
- "ExportFormat": "Format eksportimi",
- "ExportTooltip": "Shënim: Për të përdorur URL-në e prodhuar për eksport, do t’ju duhet të specifikoni një aplikacion mirëfilltësimi token-ësh. Këta token-ë mund t’i formësoni te Përgjegjës -> Siguri -> Token-ë Mirëfilltësimi.",
- "ExportTooltipWithLink": "Shënim: Për të përdorur URL-në e prodhuar për eksport, do t’ju duhet të specifikoni një aplikacion mirëfilltësimi token-ësh. Këta token-ë mund t’i formësoni te %1$s[Përgjegjës -> Siguri -> Token-ë Mirëfilltësimi]%2$s. Zëvendësoni %3$s ite URL Eksporti ,e token-in tuaj të Mirëfilltësimit. Kujdes: Mos ia jepni kujt tjetër URL-në me token-in real.",
- "ExpandSubtables": "Zgjeroji nëntabelat",
- "StandardReport": "Raport standard",
- "FlattenReport": "Raport i sheshtë",
- "ReportWithMetadata": "Raport me tejtëdhëna",
- "ReadMoreOnlineGuide": "Lexoni më tepër rreth kësaj teme te udhërrëfyesi në internet.",
- "SeeAvailableVersions": "Shihni Versione të Gatshëm",
- "QuickLinks": "Lidhje të Shpejta",
- "Profilable": "E profilizueshme",
- "SearchOnMatomo": "Kërkoni për '%1$s' te Matomo.org",
- "ReportingCategoryHelpPrefix": "Si më ndihmon faqja e raportimeve \"%1$s > %2$s\"?",
- "VisitorsCategoryHelp1": "Faqet Vizitorë ju tregojnë gjëra rreth se cilët janë vizitorët tuaj. Gjëra të tilla si nga vijnë vizitorët tuaj, çfarë pajisjesh dhe shfletuesish përdorin dhe kur e vizitojnë, përgjithësisht, sajtin tuaj. Të kuptoni, përmbledhtas, cili është publiku juaj, dhe të kërkoni për veçanti, për të parë se si mund të shtohet publiku juaj.",
+ "SystemSummaryPiwikVersion": "Version Matomo",
+ "SystemSummaryWidget": "Përmbledhje Sistemi",
+ "TableNoData": "S’ka të dhëna për këtë tabelë.",
+ "TechDeprecationWarning": "Duke filluar me versionin Matomo %1$s, Matomo-ja do të reshtë së mbuluari %2$s. Për më tepër hollësi, %3$sshihni postimin tonë në blog.%4$s",
+ "ThanksFromAllOfUs": "Faleminderit prej krejt nesh në Matomo!",
+ "ThereIsNoDataForThisReport": "S’ka të dhëna për këtë raport.",
+ "UnFlattenDataTable": "Raporti është i sheshtë %s Bëje hierarkik",
+ "UndoPivotBySubtable": "Ky raport është rrotulluar %s Zhbëje rrotullimin",
+ "ViewAllPiwikVideoTutorials": "Shihini krejt Përkujdesoret Video për Matomo-n",
+ "VisitStatusOrdered": "Të porositura",
+ "VisitStatusOrderedThenAbandoned": "Shportë e të Porositurave, mandej të Braktisura",
+ "VisitTypeReturning": "I rikthyer",
+ "VisitTypeReturningCustomer": "Klient i Rikthyer",
+ "VisitorsCategoryHelp1": "Faqet Vizitorë ju tregojnë gjëra rreth se cilët janë vizitorët tuaj. Gjëra të tilla si nga vijnë vizitorët tuaj, çfarë pajisjesh dhe shfletuesish përdorin dhe kur e vizitojnë, përgjithësisht, sajtin tuaj. Të kuptoni, përmbledhtas, cili është publiku juaj dhe të kërkoni për veçanti, për të parë se si mund të shtohet publiku juaj.",
"VisitorsCategoryHelp2": "Përveç informacionit të përgjithshëm rreth vizitorëve tuaj, mund të përdorni edhe %1$sRegjistër Vizitash%2$s, që të shihni ç’ndodhi gjatë çdo vizite individuale.",
- "VisitorsOverviewHelp": "Përmbledhja mbi Vizitorët ju ndihmon të kuptoni popullaritetin e sajtit tuaj. Kjo bëhet duke dhënë grafikë që shfaqin sa vizita ka sajti juaj gjatë një periudhe të caktuar dhe shkallën mesatare të angazhimit për veçori bazë, bie fjala, kërkime dhe shkarkime.",
- "DevicesSubcategoryHelp": "Ndarja Pajisje ju ndihmon të njihni teknologjinë që vizitorët tuaj përdorin në sajtin tuaj. Do të shihni raporte mbi llojin e pajisjes dhe modele specifike, që t’ju bëjnë të mundur ta optimizoni sajtin për shumicën e pajisjeve popullore.",
- "SoftwareSubcategoryHelp": "Ndarja Software ju shfaq sistemet operative, shfletues dhe shtojca që vizitorët tuaj përdorin për sajtin, që të mund ta optimizoni sajtin tuaj për të garantuar se është plotësisht i përputhshëm me formësimet më popullore.",
- "EngagementSubcategoryHelp1": "Ndarja Angazhim ju furnizon raporte që ndihmojnë të kini një ide mbi sasinë e vizitave të reja dhe të rikthyerish që përfiton sajti juaj. Mund të shqyrtoni edhe raporte që japin kohën mesatare dhe numrin e faqeve sipas vizitash, si dhe numrin e herëve që një vizitor ka qenë në sajtin tuaj dhe numrin më të zakonshëm të ditëve mes vizitash.",
- "EngagementSubcategoryHelp2": "Kjo mund t’ju ndihmojë të bëni optimizim për shpeshti dhe vizita me shkallë të lartë ndërveprimi, përveç se për të kapur maksimumin e shtrirjes tuaj.",
- "PeriodHasOnlyRawData": "Duket sikur raportet për këtë periudhë s’janë përpunuar ende. Doni të shihni ç’po ndodh tani? Shihni %1$sRegjistër vizitash%2$s ose zgjidhni një periudhë tjetër datash, deri sa të prodhohen raportet."
+ "VisitorsOverviewHelp": "Përmbledhja mbi Vizitorët ju ndihmon të kuptoni popullaritetin e sajtit tuaj. Këtë e bën duke dhënë grafikë që shfaqin sa vizita ka sajti juaj gjatë një periudhe të caktuar dhe shkallën mesatare të angazhimit për veçori bazë, bie fjala, kërkime dhe shkarkime.",
+ "WebAnalyticsReports": "Raporte Analizash Web",
+ "YouAreUsingTheLatestVersion": "Po përdorni versionin më të ri të Matomo-s!",
+ "YourDonationWillHelp": "Dhurimi juaj do të ndihmojë drejtpërsëdrejti për financim veçorish të reja dhe përmirësime të kësaj platforme statistikash dhe analizimesh me burim të hapët. Kjo do të thotë se bashkësia do të përfitojë përherë nga një mjet që mbron privatësinë dhe ju lejon të jeni në kontroll të të dhënave tuaja."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreHome/lang/ta.json b/plugins/CoreHome/lang/ta.json
index 4193a4e4a4..78b4409578 100644
--- a/plugins/CoreHome/lang/ta.json
+++ b/plugins/CoreHome/lang/ta.json
@@ -2,14 +2,18 @@
"CoreHome": {
"CheckForUpdates": "புதிய பதிப்புகளை சரிபார்க்கவும்",
"CheckPiwikOut": "பிவிக் வெளியேறலை செய்ய சரியிடுக",
+ "ChooseX": "%1$s ஐத் தேர்ந்தெடுக்கவும்",
"ClickToEditX": "%sஐத் திருத்த கிளிக் செய்க",
"ClickToSeeFullInformation": "முழு தகவலைக் காண கிளிக் செய்க",
"CloseSearch": "தேடலை மூடு",
"CloseWidgetDirections": "விட்ஜெட்டின் மேல்பகுதியில் உள்ள 'X' படவுருவை க்ளிக் செய்வதன் மூலம் இந்த விட்ஜெட்டை நீங்கள் மூட முடியும்",
- "ChooseX": "%1$s ஐத் தேர்ந்தெடுக்கவும்",
+ "DataForThisReportHasBeenPurged": "இந்த அறிக்கைக்கான தரவு %sஐ மாதங்களைத் தாண்டியுள்ளது. மேலும், அது நீக்கப்பட்டுள்ளது.",
"Default": "தவறுதல்",
"DonateCall1": "பிவிக் எப்போதும் உங்களுக்கு எந்தவித செலவும் இல்லாமல் கிடைகிறது, ஆனால் பிவிக்-ஐ உருவாக்க எங்களுக்கு செலவாகாமல் இருப்பதில்லை.",
"DonateCall2": "Matomo செழித்து வளர உங்கள் தொடர்ந்த ஆதரவு தேவைப்படுகிறது.",
+ "EndShortcut": "முடிவுறு",
+ "EnterZenMode": "ஜென் மோடிற்குள் நுழை (மெனுவை மறைக்கவும்)",
+ "ExitZenMode": "ஜென் மோடை விட்டும் வெளியேறு (மெனுவை காட்டவும்)",
"InjectedHostEmailBody": "வணக்கம், நான் இன்று Matomo அணுக முயற்சிசெய்யும் போது அறியப்படாத புரவலன்பெயர் எச்சரிக்கையை எதிர்கொண்டேன்.",
"InjectedHostEmailSubject": "Matomo தெரியாத இந்த புரவலன் பேரில் இருந்து அணுகப்பட்டுள்ளது: %s",
"InjectedHostWarningIntro": "நீங்கள் இப்போது பிவிக்கை %1$s -ல் இருந்து இயக்குகிறீர்கள், ஆனால் பிவிக்கானது %2$s -முகவரியிலிருந்து இயங்க கட்டமைக்கப்பட்டுள்ளது.",
@@ -27,4 +31,4 @@
"WebAnalyticsReports": "இணைய பகுப்பாய்வு அறிக்கைகள்",
"YouAreUsingTheLatestVersion": "நீங்கள் Matomo அண்மைய புதிய பதிப்பை பயன்படுத்துகிறீர்கள்"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreHome/lang/zh-cn.json b/plugins/CoreHome/lang/zh-cn.json
index 0d6993cd54..48a9fe758b 100644
--- a/plugins/CoreHome/lang/zh-cn.json
+++ b/plugins/CoreHome/lang/zh-cn.json
@@ -16,6 +16,7 @@
"CloseWidgetDirections": "点击右上角的 'X' 图标可关闭这个小窗口。",
"CssDidntLoad": "您的浏览器无法加载此页面的样式。",
"CustomLimit": "自定义限制",
+ "DataForThisReportHasBeenDisabled": "此报告当前已禁用分段。有关详细信息,请查看%1$s此常见问题解答%2$s。",
"DataForThisReportHasBeenPurged": "本报表数据超过 %s 个月已被清空。",
"DataTableCombineDimensions": "尺寸单独显示%s显示组合尺寸",
"DataTableExcludeAggregateRows": "汇总行已显示 %s 隐藏汇总",
@@ -28,6 +29,7 @@
"DonateCall1": "Matomo 对您来说可以免费使用,但对我们来说并非零成本。",
"DonateCall2": "Matomo 的茁壮成长离不开您的支持。",
"DonateCall3": "如果你觉得Matomo对你的商业有价值的话,%1$s请考虑资助%2$s 或者 %3$s购买会员%4$s。任何一分都会有帮助。",
+ "EndDate": "结束日期",
"EndShortcut": "结束",
"EngagementSubcategoryHelp1": "参与部分提供的报告帮助你量化了得到的新访客和回访访客的数量。你还可以查看报告,其中细分了每次访问的平均时间和页面数,以及访客访问你的网站的次数和最常见的访问间隔天数。",
"EngagementSubcategoryHelp2": "这可以帮助你优化频率和高互动访问,此外还可以最大限度地提高你的影响力。",
@@ -97,6 +99,7 @@
"SkipToContent": "跳过,查看内容",
"SoftwareSubcategoryHelp": "软件部分展示了您的访问者在访问网站时使用的操作系统、浏览器和插件,以便您可以优化您的网站,以确保它与最流行的配置完全兼容。",
"StandardReport": "标准报告",
+ "StartDate": "开始日期",
"SubscribeAndBecomePiwikSupporter": "进入安全的信用卡付款页面 (Paypal) 支持 Matomo !",
"SupportPiwik": "支持 Matomo!",
"SupportUsOn": "支持我们",
diff --git a/plugins/CoreHome/templates/_dataTable.twig b/plugins/CoreHome/templates/_dataTable.twig
index 96dd9841dc..4ba518a511 100644
--- a/plugins/CoreHome/templates/_dataTable.twig
+++ b/plugins/CoreHome/templates/_dataTable.twig
@@ -13,7 +13,7 @@
{% if properties.title %}
<h2 class="card-title"
{% if properties.title_edit_entity_url %}edit-url="{{ properties.title_edit_entity_url }}"{% endif %}
- {% if reportLastUpdatedMessage is defined and reportLastUpdatedMessage %}report-generated="{{ reportLastUpdatedMessage|raw }}"{% endif %}
+ report-generated="{% if reportLastUpdatedMessage is defined %}{{ reportLastUpdatedMessage|raw }}{% endif %}"
piwik-enriched-headline
>{{ properties.title }}</h2>
{% endif %}
diff --git a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
index 848d933f5a..da1fd47ee9 100644
--- a/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
+++ b/plugins/CoreHome/tests/Integration/Column/UserIdTest.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\CoreHome\tests\Integration\Column;
use Piwik\Cache;
-use Piwik\DataAccess\ArchiveTableCreator;
-use Piwik\Db;
use Piwik\Metrics;
use Piwik\Plugins\CoreHome\Columns\UserId;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
index acbf850dde..f0fc25024c 100644
--- a/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
+++ b/plugins/CoreHome/tests/Integration/Column/VisitLastActionTimeTest.php
@@ -8,23 +8,14 @@
namespace Piwik\Plugins\CoreHome\tests\Integration\Column;
-use Piwik\Cache;
use Piwik\Common;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Metrics;
-use Piwik\Plugins\CoreHome\Columns\UserId;
use Piwik\Plugins\CoreHome\Columns\VisitLastActionTime;
-use Piwik\Plugins\CoreHome\Tracker\LogTable\Visit;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\DataTable;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visit\VisitProperties;
use Piwik\Tracker\Visitor;
-use Piwik\Tracker\VisitorRecognizer;
/**
* @group CoreHome
diff --git a/plugins/CoreHome/tests/UI/SingleMetricView_spec.js b/plugins/CoreHome/tests/UI/SingleMetricView_spec.js
index 93b1959894..d0722973b7 100644
--- a/plugins/CoreHome/tests/UI/SingleMetricView_spec.js
+++ b/plugins/CoreHome/tests/UI/SingleMetricView_spec.js
@@ -38,7 +38,7 @@ describe('SingleMetricView', function () {
$('#dashboardWidgetsArea #widgetCoreVisualizationssingleMetricViewcolumn .jqplot-seriespicker').trigger('mouseenter');
});
await page.webpage.evaluate(function(){
- $('#dashboardWidgetsArea .jqplot-seriespicker-popover label:contains(Revenue)').click();
+ $('#dashboardWidgetsArea .jqplot-seriespicker-popover label:contains(Revenue):eq(0)').click();
});
await page.waitForNetworkIdle();
await page.waitForTimeout(250);
@@ -53,7 +53,7 @@ describe('SingleMetricView', function () {
});
await page.waitForTimeout(250);
await page.evaluate(function(){
- $('#dashboardWidgetsArea .jqplot-seriespicker-popover label:contains(_x)').click()
+ $('#dashboardWidgetsArea .jqplot-seriespicker-popover label:contains(_x):eq(0)').click()
});
await page.waitForNetworkIdle();
await page.waitForTimeout(250);
@@ -69,7 +69,7 @@ describe('SingleMetricView', function () {
});
await page.waitForTimeout(250);
await page.evaluate(function(){
- $('#dashboardWidgetsArea #widgetCoreVisualizationssingleMetricViewcolumn .jqplot-seriespicker-popover label:contains(Revenue)').click()
+ $('#dashboardWidgetsArea #widgetCoreVisualizationssingleMetricViewcolumn .jqplot-seriespicker-popover label:contains(Revenue):eq(0)').click()
});
await page.waitForNetworkIdle();
await page.waitForTimeout(250);
diff --git a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_formatted_metric.png b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_formatted_metric.png
index 26ce8b42b5..6f6a0b3397 100644
--- a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_formatted_metric.png
+++ b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_formatted_metric.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fb9305159cdcbf107a6747b315cba146214a1f73f404c200aa37d6734706ccc2
-size 6485
+oid sha256:f52ffb459eaad6bf566e3f837974b82f02ef104a484d16149b3e8f204f6a220f
+size 6302
diff --git a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_goal_metric.png b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_goal_metric.png
index e6cdfa9a26..668b981e43 100644
--- a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_goal_metric.png
+++ b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_goal_metric.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:33bbb2c1fe617afaf7dc2216e981057698abe7679814ca3d4a729517b7859b33
-size 8952
+oid sha256:d7eae513738ddda333cabbf469c1acadb3ac3bc4f7ed80caa0520b0a73b23dfb
+size 9002
diff --git a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_loaded.png b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_loaded.png
index 9dcc86fc15..2d0189601c 100644
--- a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_loaded.png
+++ b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:da10b7861b5b8208164116aebb716bb8d6028701544c7430bf172d9b328fbe74
-size 4741
+oid sha256:e8d3f4bcf5e2b039f91160466eb94f26f54f24d57d03188cce70132795789609
+size 4646
diff --git a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_range.png b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_range.png
index f685b2dc05..97a4a0938c 100644
--- a/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_range.png
+++ b/plugins/CoreHome/tests/UI/expected-screenshots/SingleMetricView_range.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9cbbbee4066bb4ae19015e8398353d512f42d943cd27a375554218f865581738
-size 5059
+oid sha256:307d7efaa78defa78c7162bae0e51beb7d8d963db529ab5f4a95153f339c2fd3
+size 4844
diff --git a/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php b/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
index 7ecdb2d046..7929eba0e4 100644
--- a/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
+++ b/plugins/CoreHome/tests/Unit/EvolutionMetricTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreHome\tests\Unit;
use PHPUnit\Framework\TestCase;
use Piwik\DataTable;
-use Piwik\Archive\DataCollection;
use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\Plugins\CoreHome\Columns\Metrics\EvolutionMetric;
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 5da33128c8..e61ac93ab0 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -162,6 +162,7 @@ __webpack_require__.d(__webpack_exports__, "todayIsInRange", function() { return
__webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return /* reexport */ DropdownMenu; });
__webpack_require__.d(__webpack_exports__, "FocusAnywhereButHere", function() { return /* reexport */ FocusAnywhereButHere; });
__webpack_require__.d(__webpack_exports__, "FocusIf", function() { return /* reexport */ FocusIf; });
+__webpack_require__.d(__webpack_exports__, "Tooltips", function() { return /* reexport */ Tooltips; });
__webpack_require__.d(__webpack_exports__, "MatomoDialog", function() { return /* reexport */ MatomoDialog; });
__webpack_require__.d(__webpack_exports__, "ExpandOnClick", function() { return /* reexport */ ExpandOnClick; });
__webpack_require__.d(__webpack_exports__, "ExpandOnHover", function() { return /* reexport */ ExpandOnHover; });
@@ -186,6 +187,7 @@ __webpack_require__.d(__webpack_exports__, "FieldArray", function() { return /*
__webpack_require__.d(__webpack_exports__, "MultiPairField", function() { return /* reexport */ MultiPairField; });
__webpack_require__.d(__webpack_exports__, "PeriodSelector", function() { return /* reexport */ PeriodSelector; });
__webpack_require__.d(__webpack_exports__, "ReportingMenu", function() { return /* reexport */ ReportingMenu; });
+__webpack_require__.d(__webpack_exports__, "ReportingMenuStore", function() { return /* reexport */ ReportingMenu_store; });
__webpack_require__.d(__webpack_exports__, "ReportingPagesStore", function() { return /* reexport */ ReportingPages_store; });
__webpack_require__.d(__webpack_exports__, "ReportMetadataStore", function() { return /* reexport */ ReportMetadata_store; });
__webpack_require__.d(__webpack_exports__, "WidgetsStore", function() { return /* reexport */ Widgets_store; });
@@ -1116,11 +1118,11 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
MatomoUrl_defineProperty(this, "hashQuery", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(''));
MatomoUrl_defineProperty(this, "urlParsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(MatomoUrl_broadcast.getValuesFromUrl("?".concat(_this.urlQuery.value), true));
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.parse(_this.urlQuery.value));
}));
MatomoUrl_defineProperty(this, "hashParsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(MatomoUrl_broadcast.getValuesFromUrl("?".concat(_this.hashQuery.value), true));
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.parse(_this.hashQuery.value));
}));
MatomoUrl_defineProperty(this, "parsed", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
@@ -1171,8 +1173,8 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
key: "getFinalHashParams",
value: function getFinalHashParams(params) {
var urlParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var paramsObj = typeof params !== 'string' ? params : MatomoUrl_broadcast.getValuesFromUrl("?".concat(params), true);
- var urlParamsObj = typeof params !== 'string' ? urlParams : MatomoUrl_broadcast.getValuesFromUrl("?".concat(urlParams), true);
+ var paramsObj = typeof params !== 'string' ? params : this.parse(params);
+ var urlParamsObj = typeof params !== 'string' ? urlParams : this.parse(urlParams);
return Object.assign({
// these params must always be present in the hash
period: urlParamsObj.period || this.parsed.value.period,
@@ -1208,6 +1210,11 @@ var MatomoUrl_MatomoUrl = /*#__PURE__*/function () {
return window.broadcast.getValueFromUrl(paramName, window.location.search);
}
}, {
+ key: "parse",
+ value: function parse(query) {
+ return MatomoUrl_broadcast.getValuesFromUrl("?".concat(query), true);
+ }
+ }, {
key: "stringify",
value: function stringify(search) {
var searchWithoutEmpty = Object.fromEntries(Object.entries(search).filter(function (_ref) {
@@ -1337,6 +1344,18 @@ window.angular.module('piwikApp.service').run(initPiwikService);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+function AjaxHelper_toConsumableArray(arr) { return AjaxHelper_arrayWithoutHoles(arr) || AjaxHelper_iterableToArray(arr) || AjaxHelper_unsupportedIterableToArray(arr) || AjaxHelper_nonIterableSpread(); }
+
+function AjaxHelper_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 AjaxHelper_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return AjaxHelper_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 AjaxHelper_arrayLikeToArray(o, minLen); }
+
+function AjaxHelper_iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
+
+function AjaxHelper_arrayWithoutHoles(arr) { if (Array.isArray(arr)) return AjaxHelper_arrayLikeToArray(arr); }
+
+function AjaxHelper_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 AjaxHelper_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 AjaxHelper_createClass(Constructor, protoProps, staticProps) { if (protoProps) AjaxHelper_defineProperties(Constructor.prototype, protoProps); if (staticProps) AjaxHelper_defineProperties(Constructor, staticProps); return Constructor; }
@@ -2017,10 +2036,24 @@ var AjaxHelper_AjaxHelper = /*#__PURE__*/function () {
}
helper.setFormat(options.format || 'json');
- helper.addParams(Object.assign({
- module: 'API',
- format: options.format || 'json'
- }, params), 'get');
+
+ if (Array.isArray(params)) {
+ helper.setBulkRequests.apply(helper, AjaxHelper_toConsumableArray(params));
+ } else {
+ helper.addParams(Object.assign(Object.assign({
+ module: 'API',
+ format: options.format || 'json'
+ }, params), {}, {
+ // ajax helper does not encode the segment parameter assuming it is already encoded. this is
+ // probably for pre-angularjs code, so we don't want to do this now, but just treat segment
+ // as a normal query parameter input (so it will have double encoded values in input params
+ // object, then naturally triple encoded in the URL after a $.param call), however we need
+ // to support any existing uses of the old code, so instead we do a manual encode here. new
+ // code that uses .fetch() will not need to pre-encode the parameter, while old code
+ // can pre-encode it.
+ segment: params.segment ? encodeURIComponent(params.segment) : undefined
+ }), 'get');
+ }
if (options.postParams) {
helper.addParams(options.postParams, 'post');
@@ -2888,6 +2921,8 @@ function ExpandOnClick_onEscapeHandler(element, binding, event) {
}
var ExpandOnClick_doc = document.documentElement;
+var ExpandOnClick_window = window,
+ ExpandOnClick_$ = ExpandOnClick_window.$;
/**
* Usage (in a component):
*
@@ -2910,7 +2945,7 @@ var ExpandOnClick_doc = document.documentElement;
var expander = directiveUtilities.getRef(binding.value.expander, binding);
if (expander) {
- expander.addEventListener('click', binding.value.onExpand);
+ ExpandOnClick_$(expander).on('click', binding.value.onExpand);
}
});
ExpandOnClick_doc.addEventListener('keyup', binding.value.onEscapeHandler);
@@ -2922,7 +2957,7 @@ var ExpandOnClick_doc = document.documentElement;
var expander = directiveUtilities.getRef(binding.value.expander, binding);
if (expander) {
- expander.removeEventListener('click', binding.value.onExpand);
+ ExpandOnClick_$(expander).off('click', binding.value.onExpand);
}
ExpandOnClick_doc.removeEventListener('keyup', binding.value.onEscapeHandler);
@@ -3519,9 +3554,9 @@ MatomoDialogvue_type_script_lang_ts.render = MatomoDialogvue_type_template_id_00
},
noScope: 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/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=51cfd3df
+// 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/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=7b85675d
-var EnrichedHeadlinevue_type_template_id_51cfd3df_hoisted_1 = {
+var EnrichedHeadlinevue_type_template_id_7b85675d_hoisted_1 = {
key: 0,
class: "title",
tabindex: "6"
@@ -3553,7 +3588,7 @@ var _hoisted_11 = {
var _hoisted_12 = ["innerHTML"];
var _hoisted_13 = ["innerHTML"];
var _hoisted_14 = ["href"];
-function EnrichedHeadlinevue_type_template_id_51cfd3df_render(_ctx, _cache, $props, $setup, $data, $options) {
+function EnrichedHeadlinevue_type_template_id_7b85675d_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_RateFeature = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("RateFeature");
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
@@ -3565,7 +3600,7 @@ function EnrichedHeadlinevue_type_template_id_51cfd3df_render(_ctx, _cache, $pro
return _ctx.showIcons = false;
}),
ref: "root"
- }, [!_ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EnrichedHeadlinevue_type_template_id_51cfd3df_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", {
+ }, [!_ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", EnrichedHeadlinevue_type_template_id_7b85675d_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "default")])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.editUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", {
key: 1,
class: "title",
href: _ctx.editUrl,
@@ -3590,18 +3625,19 @@ function EnrichedHeadlinevue_type_template_id_51cfd3df_render(_ctx, _cache, $pro
title: _ctx.actualFeatureName
}, null, 8, ["title"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showIcons || _ctx.showInlineHelp]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
innerHTML: _ctx.$sanitize(_ctx.actualInlineHelp)
- }, null, 8, _hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- class: "helpDate",
- innerHTML: _ctx.reportGenerated
- }, null, 8, _hoisted_13), _ctx.helpUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", {
+ }, null, 8, _hoisted_12), _ctx.reportGenerated != '' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", {
key: 0,
+ class: "helpDate",
+ innerHTML: _ctx.$sanitize(_ctx.reportGenerated)
+ }, null, 8, _hoisted_13)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.helpUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", {
+ key: 1,
rel: "noreferrer noopener",
target: "_blank",
class: "readMore",
href: _ctx.helpUrl
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_MoreDetails')), 9, _hoisted_14)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showInlineHelp]])], 544);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=51cfd3df
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue?vue&type=template&id=7b85675d
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/useExternalPluginComponent.ts
/*!
@@ -3763,7 +3799,7 @@ var RateFeature = useExternalPluginComponent('Feedback', 'RateFeature');
-EnrichedHeadlinevue_type_script_lang_ts.render = EnrichedHeadlinevue_type_template_id_51cfd3df_render
+EnrichedHeadlinevue_type_script_lang_ts.render = EnrichedHeadlinevue_type_template_id_7b85675d_render
/* harmony default export */ var EnrichedHeadline = (EnrichedHeadlinevue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.adapter.ts
@@ -4296,7 +4332,7 @@ var Comparisons_store_ComparisonsStore = /*#__PURE__*/function () {
return;
}
- if (matomoModule === 'CoreUpdater' || matomoModule === 'Installation') {
+ if (matomoModule === 'CoreUpdater' || matomoModule === 'Installation' || matomoModule === 'Overlay') {
this.privateState.comparisonsDisabledFor = [];
return;
}
@@ -4470,13 +4506,23 @@ function Comparisonsvue_type_template_id_a22a9668_render(_ctx, _cache, $props, $
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+var Tooltips_window = window,
+ Tooltips_$ = Tooltips_window.$;
+
+function defaultContentTransform() {
+ var title = Tooltips_$(this).attr('title') || '';
+ return window.vueSanitize(title.replace(/\n/g, '<br />'));
+}
+
function setupTooltips(el, binding) {
- window.$(el).tooltip({
+ var _binding$value, _binding$value2, _binding$value3;
+
+ Tooltips_$(el).tooltip({
track: true,
- content: binding.value.content,
+ content: ((_binding$value = binding.value) === null || _binding$value === void 0 ? void 0 : _binding$value.content) || defaultContentTransform,
show: {
- delay: binding.value.delay || 700,
- duration: binding.value.duration || 200
+ delay: ((_binding$value2 = binding.value) === null || _binding$value2 === void 0 ? void 0 : _binding$value2.delay) || 700,
+ duration: ((_binding$value3 = binding.value) === null || _binding$value3 === void 0 ? void 0 : _binding$value3.duration) || 200
},
hide: false
});
@@ -6416,36 +6462,36 @@ function siteSelectorModelAdapter() {
}
window.angular.module('piwikApp.service').factory('siteSelectorModel', siteSelectorModelAdapter);
-// 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/QuickAccess/QuickAccess.vue?vue&type=template&id=7ea3c4c3
+// 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/QuickAccess/QuickAccess.vue?vue&type=template&id=9128faf0
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_1 = {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_1 = {
ref: "root",
class: "quickAccessInside"
};
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_2 = ["title"];
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_3 = {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_2 = ["title"];
+var QuickAccessvue_type_template_id_9128faf0_hoisted_3 = {
class: "dropdown"
};
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_4 = {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_4 = {
class: "no-result"
};
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_5 = ["onClick"];
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_6 = ["onMouseenter", "onClick"];
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_7 = {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_5 = ["onClick"];
+var QuickAccessvue_type_template_id_9128faf0_hoisted_6 = ["onMouseenter", "onClick"];
+var QuickAccessvue_type_template_id_9128faf0_hoisted_7 = {
class: "quickAccessMatomoSearch"
};
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_8 = ["onMouseenter", "onClick"];
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_9 = ["textContent"];
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_10 = {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_8 = ["onMouseenter", "onClick"];
+var QuickAccessvue_type_template_id_9128faf0_hoisted_9 = ["textContent"];
+var QuickAccessvue_type_template_id_9128faf0_hoisted_10 = {
class: "quick-access-category helpCategory"
};
-var QuickAccessvue_type_template_id_7ea3c4c3_hoisted_11 = ["href"];
-function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $setup, $data, $options) {
+var QuickAccessvue_type_template_id_9128faf0_hoisted_11 = ["href"];
+function QuickAccessvue_type_template_id_9128faf0_render(_ctx, _cache, $props, $setup, $data, $options) {
var _directive_focus_if = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-if");
var _directive_focus_anywhere_but_here = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("focus-anywhere-but-here");
- 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", QuickAccessvue_type_template_id_7ea3c4c3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ 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", QuickAccessvue_type_template_id_9128faf0_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-search",
onMouseenter: _cache[0] || (_cache[0] = function ($event) {
return _ctx.searchActive = true;
@@ -6465,7 +6511,7 @@ function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $
tabindex: "2",
title: _ctx.quickAccessTitle,
ref: "input"
- }, null, 40, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.searchActive]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", QuickAccessvue_type_template_id_7ea3c4c3_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_7ea3c4c3_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_SearchNoResults')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.numMenuItems > 0 || _ctx.sites.length)]]), (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.menuItems, function (subcategory) {
+ }, null, 40, QuickAccessvue_type_template_id_9128faf0_hoisted_2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.searchTerm], [_directive_focus_if, {}, _ctx.searchActive]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", QuickAccessvue_type_template_id_9128faf0_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_9128faf0_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_SearchNoResults')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !(_ctx.numMenuItems > 0 || _ctx.sites.length)]]), (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.menuItems, function (subcategory) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("ul", {
key: subcategory.title
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
@@ -6475,7 +6521,7 @@ function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $
_ctx.searchMenu(_ctx.searchTerm);
}
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(subcategory.title), 9, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_5), (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"])(subcategory.items, function (submenuEntry) {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(subcategory.title), 9, QuickAccessvue_type_template_id_9128faf0_hoisted_5), (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"])(subcategory.items, function (submenuEntry) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["result", {
selected: submenuEntry.menuIndex === _ctx.searchIndex
@@ -6487,9 +6533,9 @@ function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $
return _ctx.selectMenuItem(submenuEntry.index);
},
key: submenuEntry.index
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(submenuEntry.name.trim()), 1)], 42, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_6);
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(submenuEntry.name.trim()), 1)], 42, QuickAccessvue_type_template_id_9128faf0_hoisted_6);
}), 128))]);
- }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", QuickAccessvue_type_template_id_7ea3c4c3_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", QuickAccessvue_type_template_id_9128faf0_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: "quick-access-category websiteCategory"
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_Sites')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && _ctx.sites.length || _ctx.isLoading]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: "no-result"
@@ -6507,8 +6553,8 @@ function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $
key: site.idsite
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(site.name)
- }, null, 8, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_9)], 42, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_8)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && !_ctx.isLoading]]);
- }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_7ea3c4c3_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_HelpResources')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ }, null, 8, QuickAccessvue_type_template_id_9128faf0_hoisted_9)], 42, QuickAccessvue_type_template_id_9128faf0_hoisted_8)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSitesSelector && !_ctx.isLoading]]);
+ }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", QuickAccessvue_type_template_id_9128faf0_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_HelpResources')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
selected: _ctx.searchIndex === 'help'
}, "quick-access-help"]),
@@ -6516,13 +6562,13 @@ function QuickAccessvue_type_template_id_7ea3c4c3_render(_ctx, _cache, $props, $
return _ctx.searchIndex = 'help';
})
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
- href: "https://matomo.org?s=".concat(encodeURIComponent(_ctx.searchTerm)),
+ href: "https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=".concat(encodeURIComponent(_ctx.searchTerm)),
target: "_blank"
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreHome_SearchOnMatomo', _ctx.searchTerm)), 9, QuickAccessvue_type_template_id_7ea3c4c3_hoisted_11)], 34)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm && _ctx.searchActive]])], 512)), [[_directive_focus_anywhere_but_here, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreHome_SearchOnMatomo', _ctx.searchTerm)), 9, QuickAccessvue_type_template_id_9128faf0_hoisted_11)], 34)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.searchTerm && _ctx.searchActive]])], 512)), [[_directive_focus_anywhere_but_here, {
blur: _ctx.onBlur
}]]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=7ea3c4c3
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue?vue&type=template&id=9128faf0
// 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/QuickAccess/QuickAccess.vue?vue&type=script&lang=ts
@@ -6920,7 +6966,7 @@ function scrollFirstElementIntoView(element) {
-QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_7ea3c4c3_render
+QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_9128faf0_render
/* harmony default export */ var QuickAccess = (QuickAccessvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/QuickAccess/QuickAccess.adapter.ts
@@ -6946,26 +6992,26 @@ QuickAccessvue_type_script_lang_ts.render = QuickAccessvue_type_template_id_7ea3
}
}
}));
-// 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/FieldArray/FieldArray.vue?vue&type=template&id=460ed852
-function FieldArrayvue_type_template_id_460ed852_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; }
+// 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/FieldArray/FieldArray.vue?vue&type=template&id=66b76384
+function FieldArrayvue_type_template_id_66b76384_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; }
-var FieldArrayvue_type_template_id_460ed852_hoisted_1 = {
+var FieldArrayvue_type_template_id_66b76384_hoisted_1 = {
class: "fieldArray form-group"
};
-var FieldArrayvue_type_template_id_460ed852_hoisted_2 = {
+var FieldArrayvue_type_template_id_66b76384_hoisted_2 = {
key: 0,
class: "fieldUiControl"
};
-var FieldArrayvue_type_template_id_460ed852_hoisted_3 = ["onClick", "title"];
-function FieldArrayvue_type_template_id_460ed852_render(_ctx, _cache, $props, $setup, $data, $options) {
+var FieldArrayvue_type_template_id_66b76384_hoisted_3 = ["onClick", "title"];
+function FieldArrayvue_type_template_id_66b76384_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", FieldArrayvue_type_template_id_460ed852_hoisted_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.modelValue, function (item, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldArrayvue_type_template_id_66b76384_hoisted_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.modelValue, function (item, 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"])(["fieldArrayTable multiple valign-wrapper", FieldArrayvue_type_template_id_460ed852_defineProperty({}, "fieldArrayTable".concat(index), true)]),
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["fieldArrayTable multiple valign-wrapper", FieldArrayvue_type_template_id_66b76384_defineProperty({}, "fieldArrayTable".concat(index), true)]),
key: index
- }, [_ctx.field.uiControl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldArrayvue_type_template_id_460ed852_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, [_ctx.field.uiControl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldArrayvue_type_template_id_66b76384_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"full-width": true,
"model-value": item,
options: _ctx.field.availableValues,
@@ -6975,17 +7021,19 @@ function FieldArrayvue_type_template_id_460ed852_render(_ctx, _cache, $props, $s
placeholder: ' ',
uicontrol: _ctx.field.uiControl,
title: _ctx.field.title,
- name: "".concat(_ctx.name, "-").concat(index)
- }, null, 8, ["model-value", "options", "onUpdate:modelValue", "uicontrol", "title", "name"])])) : 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", {
+ name: "".concat(_ctx.name, "-").concat(index),
+ "template-file": _ctx.field.templateFile,
+ component: _ctx.field.component
+ }, null, 8, ["model-value", "options", "onUpdate:modelValue", "uicontrol", "title", "name", "template-file", "component"])])) : 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", {
onClick: function onClick($event) {
return _ctx.removeEntry(index);
},
class: "icon-minus valign",
title: _ctx.translate('General_Remove')
- }, null, 8, FieldArrayvue_type_template_id_460ed852_hoisted_3), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2);
+ }, null, 8, FieldArrayvue_type_template_id_66b76384_hoisted_3), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2);
}), 128))]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.vue?vue&type=template&id=460ed852
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.vue?vue&type=template&id=66b76384
// 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/FieldArray/FieldArray.vue?vue&type=script&lang=ts
function FieldArrayvue_type_script_lang_ts_toConsumableArray(arr) { return FieldArrayvue_type_script_lang_ts_arrayWithoutHoles(arr) || FieldArrayvue_type_script_lang_ts_iterableToArray(arr) || FieldArrayvue_type_script_lang_ts_unsupportedIterableToArray(arr) || FieldArrayvue_type_script_lang_ts_nonIterableSpread(); }
@@ -7051,7 +7099,7 @@ var Field = useExternalPluginComponent('CorePluginsAdmin', 'Field');
-FieldArrayvue_type_script_lang_ts.render = FieldArrayvue_type_template_id_460ed852_render
+FieldArrayvue_type_script_lang_ts.render = FieldArrayvue_type_template_id_66b76384_render
/* harmony default export */ var FieldArray = (FieldArrayvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/FieldArray/FieldArray.adapter.ts
@@ -7102,34 +7150,34 @@ FieldArrayvue_type_script_lang_ts.render = FieldArrayvue_type_template_id_460ed8
}
}
}));
-// 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/MultiPairField/MultiPairField.vue?vue&type=template&id=15775141
-function MultiPairFieldvue_type_template_id_15775141_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; }
+// 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/MultiPairField/MultiPairField.vue?vue&type=template&id=b0d1c4e2
+function MultiPairFieldvue_type_template_id_b0d1c4e2_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; }
-var MultiPairFieldvue_type_template_id_15775141_hoisted_1 = {
+var MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_1 = {
class: "multiPairField form-group"
};
-var MultiPairFieldvue_type_template_id_15775141_hoisted_2 = {
+var MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_2 = {
key: 1,
class: "fieldUiControl fieldUiControl2"
};
-var MultiPairFieldvue_type_template_id_15775141_hoisted_3 = {
+var MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_3 = {
key: 2,
class: "fieldUiControl fieldUiControl3"
};
-var MultiPairFieldvue_type_template_id_15775141_hoisted_4 = {
+var MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_4 = {
key: 3,
class: "fieldUiControl fieldUiControl4"
};
-var MultiPairFieldvue_type_template_id_15775141_hoisted_5 = ["onClick", "title"];
-function MultiPairFieldvue_type_template_id_15775141_render(_ctx, _cache, $props, $setup, $data, $options) {
+var MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_5 = ["onClick", "title"];
+function MultiPairFieldvue_type_template_id_b0d1c4e2_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", MultiPairFieldvue_type_template_id_15775141_hoisted_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.modelValue, function (item, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_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.modelValue, function (item, index) {
var _ref;
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"])(["multiPairFieldTable multiple valign-wrapper", (_ref = {}, MultiPairFieldvue_type_template_id_15775141_defineProperty(_ref, "multiPairFieldTable".concat(index), true), MultiPairFieldvue_type_template_id_15775141_defineProperty(_ref, "has".concat(_ctx.fieldCount, "Fields"), true), _ref)]),
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper", (_ref = {}, MultiPairFieldvue_type_template_id_b0d1c4e2_defineProperty(_ref, "multiPairFieldTable".concat(index), true), MultiPairFieldvue_type_template_id_b0d1c4e2_defineProperty(_ref, "has".concat(_ctx.fieldCount, "Fields"), true), _ref)]),
key: index
}, [_ctx.field1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
key: 0,
@@ -7148,8 +7196,10 @@ function MultiPairFieldvue_type_template_id_15775141_render(_ctx, _cache, $props
placeholder: ' ',
uicontrol: _ctx.field1.uiControl,
name: "".concat(_ctx.name, "-p1-").concat(index),
- title: _ctx.field1.title
- }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "uicontrol", "name", "title"])], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field2 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_15775141_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ title: _ctx.field1.title,
+ "template-file": _ctx.field1.templateFile,
+ component: _ctx.field1.component
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "uicontrol", "name", "title", "template-file", "component"])], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field2 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"full-width": true,
options: _ctx.field2.availableValues,
"onUpdate:modelValue": [function ($event) {
@@ -7161,8 +7211,10 @@ function MultiPairFieldvue_type_template_id_15775141_render(_ctx, _cache, $props
placeholder: ' ',
uicontrol: _ctx.field2.uiControl,
name: "".concat(_ctx.name, "-p2-").concat(index),
- title: _ctx.field2.title
- }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "name", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field3 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_15775141_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ title: _ctx.field2.title,
+ "template-file": _ctx.field2.templateFile,
+ component: _ctx.field2.component
+ }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "name", "title", "template-file", "component"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field3 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"full-width": true,
options: _ctx.field3.availableValues,
"onUpdate:modelValue": [function ($event) {
@@ -7173,8 +7225,10 @@ function MultiPairFieldvue_type_template_id_15775141_render(_ctx, _cache, $props
modelValue: item[_ctx.field3.key],
placeholder: ' ',
uicontrol: _ctx.field3.uiControl,
- title: _ctx.field3.title
- }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field4 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_15775141_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ title: _ctx.field3.title,
+ "template-file": _ctx.field3.templateFile,
+ component: _ctx.field3.component
+ }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title", "template-file", "component"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.field4 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"full-width": true,
options: _ctx.field4.availableValues,
"onUpdate:modelValue": [function ($event) {
@@ -7185,17 +7239,19 @@ function MultiPairFieldvue_type_template_id_15775141_render(_ctx, _cache, $props
modelValue: item[_ctx.field4.key],
placeholder: ' ',
uicontrol: _ctx.field4.uiControl,
- title: _ctx.field4.title
- }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title"])])) : 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", {
+ title: _ctx.field4.title,
+ "template-file": _ctx.field4.templateFile,
+ component: _ctx.field4.component
+ }, null, 8, ["options", "onUpdate:modelValue", "modelValue", "uicontrol", "title", "template-file", "component"])])) : 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", {
onClick: function onClick($event) {
return _ctx.removeEntry(index);
},
class: "icon-minus valign",
title: _ctx.translate('General_Remove')
- }, null, 8, MultiPairFieldvue_type_template_id_15775141_hoisted_5), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2);
+ }, null, 8, MultiPairFieldvue_type_template_id_b0d1c4e2_hoisted_5), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.modelValue.length]])], 2);
}), 128))]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue?vue&type=template&id=15775141
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue?vue&type=template&id=b0d1c4e2
// 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/MultiPairField/MultiPairField.vue?vue&type=script&lang=ts
function MultiPairFieldvue_type_script_lang_ts_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; }
@@ -7331,7 +7387,7 @@ var MultiPairFieldvue_type_script_lang_ts_Field = useExternalPluginComponent('Co
-MultiPairFieldvue_type_script_lang_ts.render = MultiPairFieldvue_type_template_id_15775141_render
+MultiPairFieldvue_type_script_lang_ts.render = MultiPairFieldvue_type_template_id_b0d1c4e2_render
/* harmony default export */ var MultiPairField = (MultiPairFieldvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/MultiPairField/MultiPairField.adapter.ts
@@ -9566,33 +9622,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=64d7392c
+// 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
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_1 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_1 = {
key: 0
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_2 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_2 = {
class: "notification system notification-error"
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_3 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_3 = {
key: 0,
rel: "noreferrer noopener",
target: "_blank",
href: "https://matomo.org/faq/troubleshooting/faq_19489/"
};
-var WidgetLoadervue_type_template_id_64d7392c_hoisted_4 = {
+var WidgetLoadervue_type_template_id_999e513a_hoisted_4 = {
class: "theWidgetContent",
ref: "widgetContent"
};
-function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props, $setup, $data, $options) {
+function WidgetLoadervue_type_template_id_999e513a_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_64d7392c_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_64d7392c_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_64d7392c_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_64d7392c_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_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)]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=64d7392c
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=999e513a
// 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
@@ -9766,6 +9822,7 @@ function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props,
var $rootScope = Matomo_Matomo.helper.getAngularDependency('$rootScope');
var scope = $rootScope.$new();
_this.currentScope = scope;
+ Matomo_Matomo.helper.compileVueEntryComponents($content);
Matomo_Matomo.helper.compileAngularComponents($content, {
scope: scope
});
@@ -9803,7 +9860,7 @@ function WidgetLoadervue_type_template_id_64d7392c_render(_ctx, _cache, $props,
-WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_64d7392c_render
+WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_999e513a_render
/* harmony default export */ var WidgetLoader = (WidgetLoadervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.adapter.ts
@@ -9828,9 +9885,9 @@ WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_64
},
directiveName: 'piwikWidgetLoader'
}));
-// 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/WidgetContainer/WidgetContainer.vue?vue&type=template&id=3b62b118
+// 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/WidgetContainer/WidgetContainer.vue?vue&type=template&id=41745e0f
-function WidgetContainervue_type_template_id_3b62b118_render(_ctx, _cache, $props, $setup, $data, $options) {
+function WidgetContainervue_type_template_id_41745e0f_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Widget = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Widget");
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_["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.actualContainer, function (widget, index) {
@@ -9842,7 +9899,7 @@ function WidgetContainervue_type_template_id_3b62b118_render(_ctx, _cache, $prop
}, null, 8, ["widget"])])]);
}), 128))]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue?vue&type=template&id=3b62b118
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue?vue&type=template&id=41745e0f
// 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/WidgetContainer/WidgetContainer.vue?vue&type=script&lang=ts
function WidgetContainervue_type_script_lang_ts_toConsumableArray(arr) { return WidgetContainervue_type_script_lang_ts_arrayWithoutHoles(arr) || WidgetContainervue_type_script_lang_ts_iterableToArray(arr) || WidgetContainervue_type_script_lang_ts_unsupportedIterableToArray(arr) || WidgetContainervue_type_script_lang_ts_nonIterableSpread(); }
@@ -9910,7 +9967,7 @@ var Widget = useExternalPluginComponent('CoreHome', 'Widget');
-WidgetContainervue_type_script_lang_ts.render = WidgetContainervue_type_template_id_3b62b118_render
+WidgetContainervue_type_script_lang_ts.render = WidgetContainervue_type_template_id_41745e0f_render
/* harmony default export */ var WidgetContainer = (WidgetContainervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.adapter.ts
@@ -9931,37 +9988,37 @@ WidgetContainervue_type_script_lang_ts.render = WidgetContainervue_type_template
},
directiveName: 'piwikWidgetContainer'
}));
-// 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/WidgetByDimensionContainer/WidgetByDimensionContainer.vue?vue&type=template&id=2a665f7d
+// 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/WidgetByDimensionContainer/WidgetByDimensionContainer.vue?vue&type=template&id=3681f928
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_1 = {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_1 = {
class: "reportsByDimensionView"
};
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_2 = {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_2 = {
class: "entityList"
};
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_3 = {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_3 = {
class: "listCircle"
};
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_4 = ["onClick"];
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_5 = {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_4 = ["onClick"];
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_5 = {
class: "dimension"
};
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_6 = {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_6 = {
class: "reportContainer"
};
-var WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "clear"
}, null, -1);
-function WidgetByDimensionContainervue_type_template_id_2a665f7d_render(_ctx, _cache, $props, $setup, $data, $options) {
+function WidgetByDimensionContainervue_type_template_id_3681f928_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_WidgetLoader = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("WidgetLoader");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetByDimensionContainervue_type_template_id_2a665f7d_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"])(_ctx.widgetsByCategory, function (category) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetByDimensionContainervue_type_template_id_3681f928_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"])(_ctx.widgetsByCategory, function (category) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
class: "dimensionCategory",
key: category.name
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(category.name) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_3, [(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"])(category.widgets, function (widget) {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(category.name) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_3, [(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"])(category.widgets, function (widget) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["reportDimension", {
activeDimension: _ctx.selectedWidget.uniqueId === widget.uniqueId
@@ -9970,15 +10027,15 @@ function WidgetByDimensionContainervue_type_template_id_2a665f7d_render(_ctx, _c
onClick: function onClick($event) {
return _ctx.selectWidget(widget);
}
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(widget.name), 1)], 10, WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_4);
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(widget.name), 1)], 10, WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_4);
}), 128))])]);
- }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_6, [_ctx.selectedWidget.parameters ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_WidgetLoader, {
+ }), 128))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_6, [_ctx.selectedWidget.parameters ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_WidgetLoader, {
key: 0,
"widget-params": _ctx.selectedWidget.parameters,
class: "dimensionReport"
- }, null, 8, ["widget-params"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), WidgetByDimensionContainervue_type_template_id_2a665f7d_hoisted_7]);
+ }, null, 8, ["widget-params"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), WidgetByDimensionContainervue_type_template_id_3681f928_hoisted_7]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue?vue&type=template&id=2a665f7d
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue?vue&type=template&id=3681f928
// 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/WidgetByDimensionContainer/WidgetByDimensionContainer.vue?vue&type=script&lang=ts
function WidgetByDimensionContainervue_type_script_lang_ts_slicedToArray(arr, i) { return WidgetByDimensionContainervue_type_script_lang_ts_arrayWithHoles(arr) || WidgetByDimensionContainervue_type_script_lang_ts_iterableToArrayLimit(arr, i) || WidgetByDimensionContainervue_type_script_lang_ts_unsupportedIterableToArray(arr, i) || WidgetByDimensionContainervue_type_script_lang_ts_nonIterableRest(); }
@@ -10054,7 +10111,7 @@ function WidgetByDimensionContainervue_type_script_lang_ts_arrayWithHoles(arr) {
-WidgetByDimensionContainervue_type_script_lang_ts.render = WidgetByDimensionContainervue_type_template_id_2a665f7d_render
+WidgetByDimensionContainervue_type_script_lang_ts.render = WidgetByDimensionContainervue_type_template_id_3681f928_render
/* harmony default export */ var WidgetByDimensionContainer = (WidgetByDimensionContainervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts
@@ -10078,16 +10135,16 @@ WidgetByDimensionContainervue_type_script_lang_ts.render = WidgetByDimensionCont
},
directiveName: 'piwikWidgetByDimensionContainer'
}));
-// 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/Widget/Widget.vue?vue&type=template&id=4f52b268
+// 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/Widget/Widget.vue?vue&type=template&id=23f53472
-var Widgetvue_type_template_id_4f52b268_hoisted_1 = ["id"];
-var Widgetvue_type_template_id_4f52b268_hoisted_2 = {
+var Widgetvue_type_template_id_23f53472_hoisted_1 = ["id"];
+var Widgetvue_type_template_id_23f53472_hoisted_2 = {
key: 1
};
-var Widgetvue_type_template_id_4f52b268_hoisted_3 = {
+var Widgetvue_type_template_id_23f53472_hoisted_3 = {
key: 2
};
-function Widgetvue_type_template_id_4f52b268_render(_ctx, _cache, $props, $setup, $data, $options) {
+function Widgetvue_type_template_id_23f53472_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_WidgetLoader = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("WidgetLoader");
var _component_WidgetContainer = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("WidgetContainer");
@@ -10106,15 +10163,15 @@ function Widgetvue_type_template_id_4f52b268_render(_ctx, _cache, $props, $setup
key: 0,
"widget-params": _ctx.actualWidget.parameters,
"widget-name": _ctx.actualWidget.name
- }, null, 8, ["widget-params", "widget-name"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualWidget.isContainer && _ctx.actualWidget.layout !== 'ByDimension' && !this.preventRecursion ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Widgetvue_type_template_id_4f52b268_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_WidgetContainer, {
+ }, null, 8, ["widget-params", "widget-name"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualWidget.isContainer && _ctx.actualWidget.layout !== 'ByDimension' && !this.preventRecursion ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Widgetvue_type_template_id_23f53472_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_WidgetContainer, {
container: _ctx.actualWidget.widgets
- }, null, 8, ["container"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualWidget.isContainer && _ctx.actualWidget.layout === 'ByDimension' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Widgetvue_type_template_id_4f52b268_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_WidgetByDimensionContainer, {
+ }, null, 8, ["container"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.actualWidget.isContainer && _ctx.actualWidget.layout === 'ByDimension' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Widgetvue_type_template_id_23f53472_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_WidgetByDimensionContainer, {
widgets: _ctx.actualWidget.widgets
- }, null, 8, ["widgets"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, Widgetvue_type_template_id_4f52b268_hoisted_1)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showWidget], [_directive_tooltips, {
+ }, null, 8, ["widgets"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 10, Widgetvue_type_template_id_23f53472_hoisted_1)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showWidget], [_directive_tooltips, {
content: _ctx.tooltipContent
}]]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Widget/Widget.vue?vue&type=template&id=4f52b268
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Widget/Widget.vue?vue&type=template&id=23f53472
// 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/Widget/Widget.vue?vue&type=script&lang=ts
@@ -10279,7 +10336,7 @@ function findContainer(widgetsByCategory, containerId) {
-Widgetvue_type_script_lang_ts.render = Widgetvue_type_template_id_4f52b268_render
+Widgetvue_type_script_lang_ts.render = Widgetvue_type_template_id_23f53472_render
/* harmony default export */ var Widget_Widget = (Widgetvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Widget/Widget.adapter.ts
@@ -10306,25 +10363,25 @@ Widgetvue_type_script_lang_ts.render = Widgetvue_type_template_id_4f52b268_rende
},
directiveName: 'piwikWidget'
}));
-// 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/ReportingPage/ReportingPage.vue?vue&type=template&id=6531b4d8
+// 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/ReportingPage/ReportingPage.vue?vue&type=template&id=607224ec
-var ReportingPagevue_type_template_id_6531b4d8_hoisted_1 = {
+var ReportingPagevue_type_template_id_607224ec_hoisted_1 = {
class: "reporting-page"
};
-var ReportingPagevue_type_template_id_6531b4d8_hoisted_2 = {
+var ReportingPagevue_type_template_id_607224ec_hoisted_2 = {
key: 1,
class: "col s12 l6 leftWidgetColumn"
};
-var ReportingPagevue_type_template_id_6531b4d8_hoisted_3 = {
+var ReportingPagevue_type_template_id_607224ec_hoisted_3 = {
key: 2,
class: "col s12 l6 rightWidgetColumn"
};
-function ReportingPagevue_type_template_id_6531b4d8_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ReportingPagevue_type_template_id_607224ec_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
var _component_Widget = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Widget");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_6531b4d8_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_607224ec_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.loading
}, null, 8, ["loading"]), 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_["toDisplayString"])(_ctx.translate('CoreHome_NoSuchPage')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasNoPage]]), (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.widgets, function (widget) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
@@ -10334,12 +10391,12 @@ function ReportingPagevue_type_template_id_6531b4d8_render(_ctx, _cache, $props,
key: 0,
class: "col s12 fullWidgetColumn",
widget: widget
- }, null, 8, ["widget"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), widget.group ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_6531b4d8_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"])(widget.left, function (widgetInGroup) {
+ }, null, 8, ["widget"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), widget.group ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_607224ec_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"])(widget.left, function (widgetInGroup) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Widget, {
widget: widgetInGroup,
key: widgetInGroup.uniqueId
}, null, 8, ["widget"]);
- }), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), widget.group ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_6531b4d8_hoisted_3, [(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"])(widget.right, function (widgetInGroup) {
+ }), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), widget.group ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ReportingPagevue_type_template_id_607224ec_hoisted_3, [(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"])(widget.right, function (widgetInGroup) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Widget, {
widget: widgetInGroup,
key: widgetInGroup.uniqueId
@@ -10347,7 +10404,7 @@ function ReportingPagevue_type_template_id_6531b4d8_render(_ctx, _cache, $props,
}), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]);
}), 128))]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue?vue&type=template&id=6531b4d8
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue?vue&type=template&id=607224ec
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts
function ReportingPage_store_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -10550,8 +10607,6 @@ var ReportingPage_store_ReportingPageStore = /*#__PURE__*/function () {
-var ReportingPagevue_type_script_lang_ts_window = window,
- ReportingPagevue_type_script_lang_ts_$ = ReportingPagevue_type_script_lang_ts_window.$;
function showOnlyRawDataNotification() {
var params = 'category=General_Visitors&subcategory=Live_VisitorLog';
@@ -10653,19 +10708,15 @@ function hideOnlyRawDataNoticifation() {
this.showOnlyRawDataMessageIfRequired();
}
- if (category === 'Dashboard_Dashboard' && ReportingPagevue_type_script_lang_ts_$.isNumeric(subcategory) && ReportingPagevue_type_script_lang_ts_$('[piwik-dashboard]').length) {
- // TODO: should be changed eventually
- // hack to make loading of dashboards faster since all the information is already there
- // in the piwik-dashboard widget, we can let the piwik-dashboard widget render the page.
- // We need to find a proper solution for this. A workaround for now could be an event or
- // something to let other components render a specific page.
- this.loading = true;
- var element = ReportingPagevue_type_script_lang_ts_$('[piwik-dashboard]');
- var scope = window.angular.element(element).scope(); // eslint-disable-line
+ var params = {
+ category: category,
+ subcategory: subcategory
+ };
+ Matomo_Matomo.postEvent('ReportingPage.loadPage', params);
- scope.fetchDashboard(parseInt(subcategory, 10)).then(function () {
- _this2.loading = false;
- }, function () {
+ if (params.promise) {
+ this.loading = true;
+ Promise.resolve(params.promise).finally(function () {
_this2.loading = false;
});
return;
@@ -10766,7 +10817,7 @@ function hideOnlyRawDataNoticifation() {
-ReportingPagevue_type_script_lang_ts.render = ReportingPagevue_type_template_id_6531b4d8_render
+ReportingPagevue_type_script_lang_ts.render = ReportingPagevue_type_template_id_607224ec_render
/* harmony default export */ var ReportingPage = (ReportingPagevue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/ReportingPage/ReportingPage.adapter.ts
@@ -12163,6 +12214,8 @@ function deleteCookie(name) {
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index 5400616c0b..02d26d7e34 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -4,7 +4,7 @@
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createVueApp",(function(){return it})),n.d(t,"useExternalPluginComponent",(function(){return An})),n.d(t,"DirectiveUtilities",(function(){return It})),n.d(t,"debounce",(function(){return Bi})),n.d(t,"lazyInitSingleton",(function(){return yu})),n.d(t,"createAngularJsAdapter",(function(){return gt})),n.d(t,"transformAngularJsBoolAttr",(function(){return vt})),n.d(t,"transformAngularJsIntAttr",(function(){return bt})),n.d(t,"removeAngularJsSpecificProperties",(function(){return ht})),n.d(t,"clone",(function(){return yt})),n.d(t,"cloneThenApply",(function(){return wt})),n.d(t,"activityIndicatorAdapter",(function(){return wu})),n.d(t,"ActivityIndicator",(function(){return ro})),n.d(t,"translate",(function(){return C})),n.d(t,"Alert",(function(){return rt})),n.d(t,"AjaxHelper",(function(){return Je})),n.d(t,"setCookie",(function(){return Ou})),n.d(t,"getCookie",(function(){return ju})),n.d(t,"deleteCookie",(function(){return ku})),n.d(t,"MatomoUrl",(function(){return Ce})),n.d(t,"Matomo",(function(){return S})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return G})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return ce})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return E})),n.d(t,"getToday",(function(){return D})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return V})),n.d(t,"DropdownMenu",(function(){return Ot})),n.d(t,"FocusAnywhereButHere",(function(){return Pt})),n.d(t,"FocusIf",(function(){return Tt})),n.d(t,"MatomoDialog",(function(){return gn})),n.d(t,"ExpandOnClick",(function(){return $t})),n.d(t,"ExpandOnHover",(function(){return zt})),n.d(t,"ShowSensitiveData",(function(){return Xt})),n.d(t,"DropdownButton",(function(){return nn})),n.d(t,"SelectOnFocus",(function(){return cn})),n.d(t,"SideNav",(function(){return dn})),n.d(t,"EnrichedHeadline",(function(){return Bn})),n.d(t,"ContentBlock",(function(){return Jn})),n.d(t,"Comparisons",(function(){return Pr})),n.d(t,"MenuDropdown",(function(){return Ur})),n.d(t,"DatePicker",(function(){return Qr})),n.d(t,"DateRangePicker",(function(){return ni})),n.d(t,"PeriodDatePicker",(function(){return li})),n.d(t,"Notification",(function(){return zo})),n.d(t,"NotificationGroup",(function(){return cl})),n.d(t,"NotificationsStore",(function(){return rl})),n.d(t,"SitesStore",(function(){return xi})),n.d(t,"SiteSelector",(function(){return Mi})),n.d(t,"QuickAccess",(function(){return ea})),n.d(t,"FieldArray",(function(){return fa})),n.d(t,"MultiPairField",(function(){return Ta})),n.d(t,"PeriodSelector",(function(){return bo})),n.d(t,"ReportingMenu",(function(){return $l})),n.d(t,"ReportingPagesStore",(function(){return fl})),n.d(t,"ReportMetadataStore",(function(){return Ql})),n.d(t,"WidgetsStore",(function(){return Fl})),n.d(t,"WidgetLoader",(function(){return rc})),n.d(t,"WidgetContainer",(function(){return vc})),n.d(t,"WidgetByDimensionContainer",(function(){return xc})),n.d(t,"Widget",(function(){return _c})),n.d(t,"ReportingPage",(function(){return us})),n.d(t,"ReportExport",(function(){return Hs})),n.d(t,"Sparkline",(function(){return Gs})),n.d(t,"Progressbar",(function(){return eu})),n.d(t,"ContentIntro",(function(){return tu})),n.d(t,"ContentTable",(function(){return ru})),n.d(t,"AjaxForm",(function(){return uu})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}n("2342");var a=n("8bbf");function o(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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */window.hasBlockedContent=!1},"8bbf":function(t,n){t.exports=e},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"createVueApp",(function(){return ut})),n.d(t,"useExternalPluginComponent",(function(){return _n})),n.d(t,"DirectiveUtilities",(function(){return _t})),n.d(t,"debounce",(function(){return Ji})),n.d(t,"lazyInitSingleton",(function(){return Pu})),n.d(t,"createAngularJsAdapter",(function(){return jt})),n.d(t,"transformAngularJsBoolAttr",(function(){return kt})),n.d(t,"transformAngularJsIntAttr",(function(){return St})),n.d(t,"removeAngularJsSpecificProperties",(function(){return Ot})),n.d(t,"clone",(function(){return Ct})),n.d(t,"cloneThenApply",(function(){return Et})),n.d(t,"activityIndicatorAdapter",(function(){return Vu})),n.d(t,"ActivityIndicator",(function(){return ho})),n.d(t,"translate",(function(){return C})),n.d(t,"Alert",(function(){return st})),n.d(t,"AjaxHelper",(function(){return Xe})),n.d(t,"setCookie",(function(){return Nu})),n.d(t,"getCookie",(function(){return Tu})),n.d(t,"deleteCookie",(function(){return Au})),n.d(t,"MatomoUrl",(function(){return Ce})),n.d(t,"Matomo",(function(){return S})),n.d(t,"Periods",(function(){return p})),n.d(t,"Day",(function(){return G})),n.d(t,"Week",(function(){return X})),n.d(t,"Month",(function(){return re})),n.d(t,"Year",(function(){return ce})),n.d(t,"Range",(function(){return _})),n.d(t,"format",(function(){return E})),n.d(t,"getToday",(function(){return D})),n.d(t,"parseDate",(function(){return P})),n.d(t,"todayIsInRange",(function(){return V})),n.d(t,"DropdownMenu",(function(){return Dt})),n.d(t,"FocusAnywhereButHere",(function(){return xt})),n.d(t,"FocusIf",(function(){return Lt})),n.d(t,"Tooltips",(function(){return Lr})),n.d(t,"MatomoDialog",(function(){return Sn})),n.d(t,"ExpandOnClick",(function(){return Yt})),n.d(t,"ExpandOnHover",(function(){return nn})),n.d(t,"ShowSensitiveData",(function(){return ln})),n.d(t,"DropdownButton",(function(){return dn})),n.d(t,"SelectOnFocus",(function(){return gn})),n.d(t,"SideNav",(function(){return yn})),n.d(t,"EnrichedHeadline",(function(){return Un})),n.d(t,"ContentBlock",(function(){return er})),n.d(t,"Comparisons",(function(){return Fr})),n.d(t,"MenuDropdown",(function(){return ei})),n.d(t,"DatePicker",(function(){return li})),n.d(t,"DateRangePicker",(function(){return mi})),n.d(t,"PeriodDatePicker",(function(){return bi})),n.d(t,"Notification",(function(){return al})),n.d(t,"NotificationGroup",(function(){return yl})),n.d(t,"NotificationsStore",(function(){return fl})),n.d(t,"SitesStore",(function(){return qi})),n.d(t,"SiteSelector",(function(){return zi})),n.d(t,"QuickAccess",(function(){return da})),n.d(t,"FieldArray",(function(){return Ca})),n.d(t,"MultiPairField",(function(){return Ha})),n.d(t,"PeriodSelector",(function(){return Vo})),n.d(t,"ReportingMenu",(function(){return Xl})),n.d(t,"ReportingMenuStore",(function(){return $l})),n.d(t,"ReportingPagesStore",(function(){return Cl})),n.d(t,"ReportMetadataStore",(function(){return lc})),n.d(t,"WidgetsStore",(function(){return Yl})),n.d(t,"WidgetLoader",(function(){return fc})),n.d(t,"WidgetContainer",(function(){return Pc})),n.d(t,"WidgetByDimensionContainer",(function(){return qc})),n.d(t,"Widget",(function(){return Kc})),n.d(t,"ReportingPage",(function(){return ys})),n.d(t,"ReportExport",(function(){return Ks})),n.d(t,"Sparkline",(function(){return nu})),n.d(t,"Progressbar",(function(){return su})),n.d(t,"ContentIntro",(function(){return uu})),n.d(t,"ContentTable",(function(){return pu})),n.d(t,"AjaxForm",(function(){return yu})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}n("2342");var a=n("8bbf");function o(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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function s(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
*
@@ -29,13 +29,13 @@ function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function E(e){return $.datepicker.formatDate("yy-mm-dd",e)}function D(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function P(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return D();if("yesterday"===t||"yesterdaySameTime"===t){var n=D();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=D();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var i=D();return i.setDate(1),i.setMonth(i.getMonth()-1),i}if(t.match(/last[ -]?year/i)){var a=D();return a.setFullYear(a.getFullYear()-1),a}return $.datepicker.parseDate("yy-mm-dd",t)}function V(e){return 2===e.length&&(D()>=e[0]&&D()<=e[1])}function N(e,t){return B(e)||I(e,t)||A(e,t)||T()}function T(){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 A(e,t){if(e){if("string"===typeof e)return x(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)?x(e,t):void 0}}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function I(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function B(e){if(Array.isArray(e))return e}function L(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function F(e,t,n){return t&&M(e.prototype,t),n&&M(e,n),e}function R(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(e){return $.datepicker.formatDate("yy-mm-dd",e)}function D(){var e=new Date(Date.now());return e.setTime(e.getTime()+60*e.getTimezoneOffset()*1e3),e.setHours(e.getHours()+(window.piwik.timezoneOffset||0)/3600),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e}function P(e){if(e instanceof Date)return e;var t=decodeURIComponent(e).trim();if(""===t)throw new Error("Invalid date, empty string.");if("today"===t||"now"===t)return D();if("yesterday"===t||"yesterdaySameTime"===t){var n=D();return n.setDate(n.getDate()-1),n}if(t.match(/last[ -]?week/i)){var r=D();return r.setDate(r.getDate()-7),r}if(t.match(/last[ -]?month/i)){var i=D();return i.setDate(1),i.setMonth(i.getMonth()-1),i}if(t.match(/last[ -]?year/i)){var a=D();return a.setFullYear(a.getFullYear()-1),a}return $.datepicker.parseDate("yy-mm-dd",t)}function V(e){return 2===e.length&&(D()>=e[0]&&D()<=e[1])}function N(e,t){return B(e)||x(e,t)||A(e,t)||T()}function T(){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 A(e,t){if(e){if("string"===typeof e)return I(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)?I(e,t):void 0}}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function x(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function B(e){if(Array.isArray(e))return e}function M(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 r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function R(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),e}function F(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 _=function(){function e(t,n,r){L(this,e),R(this,"startDate",void 0),R(this,"endDate",void 0),R(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return F(e,[{key:"getPrettyString",value:function(){var e=E(this.startDate),t=E(this.endDate);return C("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return V(this.getDateRange())}},{key:"getDayCount",value:function(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}],[{key:"getLastNRange",value:function(t,n,r){var i=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");var a=r?P(r):D(),o=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-i);else if("week"===t)o.setDate(o.getDate()-7*i);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-i);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-i)}if("day"!==t){var l=p.periods[t].parse(o),c=p.periods[t].parse(a),s=l.getDateRange(),u=N(s,1);o=u[0];var d=c.getDateRange(),m=N(d,2);a=m[1]}var f=new Date(1991,7,6);if(o.getTime()-f.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=f;break}return new e(o,a,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var i=n?P(n):D(),a=new Date(i.getTime()),o=new Date(i.getTime());if("day"===t)a.setDate(a.getDate()-r),o.setDate(o.getDate()-r);else if("week"===t)a.setDate(a.getDate()-7*r),o.setDate(o.getDate()-7*r);else if("month"===t)a.setDate(1),a.setMonth(a.getMonth()-r),o.setDate(1),o.setMonth(o.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));a.setFullYear(a.getFullYear()-r),o.setFullYear(o.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(a),c=p.periods[t].parse(o),s=l.getDateRange(),u=N(s,1);a=u[0];var d=c.getDateRange(),m=N(d,2);o=m[1]}var f=new Date(1991,7,6);if(a.getTime()-f.getTime()<0)switch(t){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=f;break}return new e(a,o,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var i=decodeURIComponent(t).split(",");return new e(P(i[0]),P(i[1]),n)}},{key:"getDisplayText",value:function(){return C("General_DateRangeInPeriodList")}}]),e}();function H(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:P,format:E,RangePeriod:_,todayIsInRange:V}}function U(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&q(e.prototype,t),n&&q(e,n),e}function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var _=function(){function e(t,n,r){M(this,e),F(this,"startDate",void 0),F(this,"endDate",void 0),F(this,"childPeriodType",void 0),this.startDate=t,this.endDate=n,this.childPeriodType=r}return R(e,[{key:"getPrettyString",value:function(){var e=E(this.startDate),t=E(this.endDate);return C("General_DateRangeFromTo",[e,t])}},{key:"getDateRange",value:function(){return[this.startDate,this.endDate]}},{key:"containsToday",value:function(){return V(this.getDateRange())}},{key:"getDayCount",value:function(){return Math.ceil((this.endDate.getTime()-this.startDate.getTime())/864e5)+1}}],[{key:"getLastNRange",value:function(t,n,r){var i=Math.max(parseInt(n.toString(),10)-1,0);if(Number.isNaN(i))throw new Error("Invalid range strAmount");var a=r?P(r):D(),o=new Date(a.getTime());if("day"===t)o.setDate(o.getDate()-i);else if("week"===t)o.setDate(o.getDate()-7*i);else if("month"===t)o.setDate(1),o.setMonth(o.getMonth()-i);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));o.setFullYear(o.getFullYear()-i)}if("day"!==t){var l=p.periods[t].parse(o),c=p.periods[t].parse(a),s=l.getDateRange(),u=N(s,1);o=u[0];var d=c.getDateRange(),m=N(d,2);a=m[1]}var f=new Date(1991,7,6);if(o.getTime()-f.getTime()<0)switch(t){case"year":o=new Date(1992,0,1);break;case"month":o=new Date(1991,8,1);break;case"week":o=new Date(1991,8,12);break;case"day":default:o=f;break}return new e(o,a,t)}},{key:"getLastNRangeChild",value:function(t,n,r){var i=n?P(n):D(),a=new Date(i.getTime()),o=new Date(i.getTime());if("day"===t)a.setDate(a.getDate()-r),o.setDate(o.getDate()-r);else if("week"===t)a.setDate(a.getDate()-7*r),o.setDate(o.getDate()-7*r);else if("month"===t)a.setDate(1),a.setMonth(a.getMonth()-r),o.setDate(1),o.setMonth(o.getMonth()-r);else{if("year"!==t)throw new Error("Unknown period type '".concat(t,"'."));a.setFullYear(a.getFullYear()-r),o.setFullYear(o.getFullYear()-r)}if("day"!==t){var l=p.periods[t].parse(a),c=p.periods[t].parse(o),s=l.getDateRange(),u=N(s,1);a=u[0];var d=c.getDateRange(),m=N(d,2);o=m[1]}var f=new Date(1991,7,6);if(a.getTime()-f.getTime()<0)switch(t){case"year":a=new Date(1992,0,1);break;case"month":a=new Date(1991,8,1);break;case"week":a=new Date(1991,8,12);break;case"day":default:a=f;break}return new e(a,o,t)}},{key:"parse",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"day";if(/^previous/.test(t)){var r=e.getLastNRange(n,"2").startDate;return e.getLastNRange(n,t.substring(8),r)}if(/^last/.test(t))return e.getLastNRange(n,t.substring(4));var i=decodeURIComponent(t).split(",");return new e(P(i[0]),P(i[1]),n)}},{key:"getDisplayText",value:function(){return C("General_DateRangeInPeriodList")}}]),e}();function H(){return{getAllLabels:p.getAllLabels.bind(p),isRecognizedPeriod:p.isRecognizedPeriod.bind(p),get:p.get.bind(p),parse:p.parse.bind(p),parseDate:P,format:E,RangePeriod:_,todayIsInRange:V}}function U(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function W(e,t,n){return t&&q(e.prototype,t),n&&q(e,n),e}function J(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
*
@@ -79,7 +79,7 @@ function se(e,t){return fe(e)||me(e,t)||de(e,t)||ue()}function ue(){throw new Ty
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */p.addCustomPeriod("year",ce);var ye=window,we=ye.piwik,Oe=ye.broadcast;function je(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ke=function(){function e(){var t=this;he(this,e),be(this,"urlQuery",Object(a["ref"])("")),be(this,"hashQuery",Object(a["ref"])("")),be(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(Oe.getValuesFromUrl("?".concat(t.urlQuery.value),!0))}))),be(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(Oe.getValuesFromUrl("?".concat(t.hashQuery.value),!0))}))),be(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(Object.assign(Object.assign({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ve(e,[{key:"updateHash",value:function(e){var t=this.getFinalHashParams(e),n=this.stringify(t),r=S.helper.getAngularDependency("$location");r.search(n);var i=S.helper.getAngularDependency("$timeout");i()}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r=Object.keys(t).length?this.getFinalHashParams(t,e):{},i=this.stringify(r),a="?".concat(n);i.length&&(a="".concat(a,"#?").concat(i)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,a)}},{key:"getFinalHashParams",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?e:Oe.getValuesFromUrl("?".concat(e),!0),r="string"!==typeof e?t:Oe.getValuesFromUrl("?".concat(t),!0);return Object.assign({period:r.period||this.parsed.value.period,date:r.date||this.parsed.value.date,segment:r.segment||this.parsed.value.segment},n)}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(je(t,e)&&(we.period!==t||we.currentDateString!==e)){we.period=t;var n=p.parse(t,e).getDateRange();we.startDateString=E(n[0]),we.endDateString=E(n[1]),we.updateDateInTitle(e,t),"range"===we.period&&(e="".concat(we.startDateString,",").concat(we.endDateString)),we.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),Se=new ke,Ce=Se;
+ */p.addCustomPeriod("year",ce);var ye=window,we=ye.piwik,Oe=ye.broadcast;function je(e,t){try{return p.parse(e,t),!0}catch(n){return!1}}var ke=function(){function e(){var t=this;he(this,e),be(this,"urlQuery",Object(a["ref"])("")),be(this,"hashQuery",Object(a["ref"])("")),be(this,"urlParsed",Object(a["computed"])((function(){return Object(a["readonly"])(t.parse(t.urlQuery.value))}))),be(this,"hashParsed",Object(a["computed"])((function(){return Object(a["readonly"])(t.parse(t.hashQuery.value))}))),be(this,"parsed",Object(a["computed"])((function(){return Object(a["readonly"])(Object.assign(Object.assign({},t.urlParsed.value),t.hashParsed.value))}))),this.setUrlQuery(window.location.search),this.setHashQuery(window.location.hash),S.on("$locationChangeSuccess",(function(e){var n=new URL(e);t.setUrlQuery(n.search.replace(/^\?/,"")),t.setHashQuery(n.hash.replace(/^#/,""))})),this.updatePeriodParamsFromUrl()}return ve(e,[{key:"updateHash",value:function(e){var t=this.getFinalHashParams(e),n=this.stringify(t),r=S.helper.getAngularDependency("$location");r.search(n);var i=S.helper.getAngularDependency("$timeout");i()}},{key:"updateUrl",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?this.stringify(e):e,r=Object.keys(t).length?this.getFinalHashParams(t,e):{},i=this.stringify(r),a="?".concat(n);i.length&&(a="".concat(a,"#?").concat(i)),window.broadcast.propagateNewPage("",void 0,void 0,void 0,a)}},{key:"getFinalHashParams",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="string"!==typeof e?e:this.parse(e),r="string"!==typeof e?t:this.parse(t);return Object.assign({period:r.period||this.parsed.value.period,date:r.date||this.parsed.value.date,segment:r.segment||this.parsed.value.segment},n)}},{key:"updateLocation",value:function(e){S.helper.isAngularRenderingThePage()?this.updateHash(e):this.updateUrl(e)}},{key:"getSearchParam",value:function(e){var t=window.location.href.split("#"),n=new RegExp("".concat(e,"(\\[]|=)"));if(t&&t[1]&&n.test(decodeURIComponent(t[1]))){var r=window.broadcast.getValueFromHash(e,window.location.href);if(r||"date"!==e&&"period"!==e&&"idSite"!==e)return r}return window.broadcast.getValueFromUrl(e,window.location.search)}},{key:"parse",value:function(e){return Oe.getValuesFromUrl("?".concat(e),!0)}},{key:"stringify",value:function(e){var t=Object.fromEntries(Object.entries(e).filter((function(e){var t=se(e,2),n=t[1];return""!==n&&null!==n&&void 0!==n})));return $.param(t).replace(/%5B%5D/g,"[]").replace(/%2C/g,",")}},{key:"updatePeriodParamsFromUrl",value:function(){var e=this.getSearchParam("date"),t=this.getSearchParam("period");if(je(t,e)&&(we.period!==t||we.currentDateString!==e)){we.period=t;var n=p.parse(t,e).getDateRange();we.startDateString=E(n[0]),we.endDateString=E(n[1]),we.updateDateInTitle(e,t),"range"===we.period&&(e="".concat(we.startDateString,",").concat(we.endDateString)),we.currentDateString=e}}},{key:"setUrlQuery",value:function(e){this.urlQuery.value=e.replace(/^\?/,"")}},{key:"setHashQuery",value:function(e){this.hashQuery.value=e.replace(/^[#/?]+/,"")}}]),e}(),Se=new ke,Ce=Se;
/*!
* Matomo - free/libre analytics platform
*
@@ -93,411 +93,411 @@ function Ee(){var e={getSearchParam:Ce.getSearchParam.bind(Ce)};return e}
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function De(){return S}function Pe(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return S.postEventNoEmit.apply(S,[e].concat(n)),this.$oldEmit.apply(this,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return S.postEventNoEmit.apply(S,[e].concat(n)),this.$oldBroadcast.apply(this,[e].concat(n))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Ve(e){return Ve="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},Ve(e)}function Ne(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Te(e,t,n){return t&&Ne(e.prototype,t),n&&Ne(e,n),e}function Ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ie(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&He(e,t)}function Be(e){var t=_e();return function(){var n,r=Ue(e);if(t){var i=Ue(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return Le(this,n)}}function Le(e,t){if(t&&("object"===Ve(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Me(e)}function Me(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Fe(e){var t="function"===typeof Map?new Map:void 0;return Fe=function(e){if(null===e||!$e(e))return e;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return Re(e,arguments,Ue(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),He(n,e)},Fe(e)}function Re(e,t,n){return Re=_e()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=Function.bind.apply(e,r),a=new i;return n&&He(a,n.prototype),a},Re.apply(null,arguments)}function _e(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function $e(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function He(e,t){return He=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},He(e,t)}function Ue(e){return Ue=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Ue(e)}
+function De(){return S}function Pe(e,t){t.$oldEmit=t.$emit,t.$emit=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return S.postEventNoEmit.apply(S,[e].concat(n)),this.$oldEmit.apply(this,[e].concat(n))},t.$oldBroadcast=t.$broadcast,t.$broadcast=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return S.postEventNoEmit.apply(S,[e].concat(n)),this.$oldBroadcast.apply(this,[e].concat(n))},t.$on("$locationChangeSuccess",e.updatePeriodParamsFromUrl)}function Ve(e){return Ve="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},Ve(e)}function Ne(e){return xe(e)||Ie(e)||Ae(e)||Te()}function Te(){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 Ae(e,t){if(e){if("string"===typeof e)return Be(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)?Be(e,t):void 0}}function Ie(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function xe(e){if(Array.isArray(e))return Be(e)}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Me(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Le(e,t,n){return t&&Me(e.prototype,t),n&&Me(e,n),e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _e(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ze(e,t)}function $e(e){var t=Je();return function(){var n,r=Ye(e);if(t){var i=Ye(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return He(this,n)}}function He(e,t){if(t&&("object"===Ve(t)||"function"===typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return Ue(e)}function Ue(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function qe(e){var t="function"===typeof Map?new Map:void 0;return qe=function(e){if(null===e||!Ge(e))return e;if("function"!==typeof e)throw new TypeError("Super expression must either be null or a function");if("undefined"!==typeof t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return We(e,arguments,Ye(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),ze(n,e)},qe(e)}function We(e,t,n){return We=Je()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=Function.bind.apply(e,r),a=new i;return n&&ze(a,n.prototype),a},We.apply(null,arguments)}function Je(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function Ge(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function ze(e,t){return ze=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},ze(e,t)}function Ye(e){return Ye=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Ye(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 qe(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}we.updatePeriodParamsFromUrl=Se.updatePeriodParamsFromUrl.bind(Se),window.angular.module("piwikApp.service").service("piwikUrl",Ee),window.angular.module("piwikApp.service").run(["$location",function(){return null}]),window.angular.module("piwikApp.service").service("piwik",De),Pe.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(Pe),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var We=function(e){Ie(n,e);var t=Be(n);function n(){return xe(this,n),t.apply(this,arguments)}return n}(Fe(Error)),Je=function(){function e(){xe(this,e),Ae(this,"format","json"),Ae(this,"timeout",null),Ae(this,"callback",null),Ae(this,"useRegularCallbackInCaseOfError",!1),Ae(this,"errorCallback",void 0),Ae(this,"withToken",!1),Ae(this,"completeCallback",void 0),Ae(this,"getParams",{}),Ae(this,"getUrl","?"),Ae(this,"postParams",{}),Ae(this,"loadingElement",null),Ae(this,"errorElement","#ajaxError"),Ae(this,"headers",void 0),Ae(this,"requestHandle",null),Ae(this,"abortController",null),Ae(this,"defaultParams",["idSite","period","date","segment"]),Ae(this,"resolveWithHelper",!1),this.errorCallback=qe}return Te(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var a=r[e];(-1===i.indexOf(e)||a)&&("get"===t.toLowerCase()?n.getParams[e]=a:"post"===t.toLowerCase()&&(n.postParams[e]=a))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;$(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle);var t=null;try{t=S.helper.getAngularDependency("$timeout")}catch(r){}this.abortController&&this.abortController.signal.addEventListener("abort",(function(){e.requestHandle&&e.requestHandle.abort()}));var n=new Promise((function(n,r){e.requestHandle.then((function(t){e.resolveWithHelper?n(e):n(t)})).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),r(t))})).done((function(){t&&t()}))}));return n}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var i={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,headers:this.headers?this.headers:void 0,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var i=null,a="toast";$(e.errorElement).length&&t.message&&($(e.errorElement).show(),i=e.errorElement,a=null);var o=!document.querySelector("#login_form");if(t.message&&o){var l=window["require"]("piwik/UI"),c=new l.Notification;c.show(t.message,{placeat:i,context:"error",type:a,id:"ajaxHelper"}),c.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,S.ajaxRequestFinished&&S.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(i)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||S.shouldPropagateTokenAuth?{token_auth:S.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Object.assign(Object.assign({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=Ce.getSearchParam("segment"),r={idSite:S.idSite?S.idSite.toString():broadcast.getValueFromUrl("idSite"),period:S.period||broadcast.getValueFromUrl("period"),segment:n},i=e;return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!i[e]&&!t.postParams[e]&&r[e]&&(i[e]=r[e])})),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=S.currentDateString),i}},{key:"getRequestHandle",value:function(){return this.requestHandle}}],[{key:"fetch",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new e;return n.withTokenInUrl&&r.withTokenInUrl(),r.setFormat(n.format||"json"),r.addParams(Object.assign({module:"API",format:n.format||"json"},t),"get"),n.postParams&&r.addParams(n.postParams,"post"),n.headers&&(r.headers=n.headers),"undefined"===typeof n.createErrorNotification||n.createErrorNotification||r.useCallbackInCaseOfError(),n.abortController&&(r.abortController=n.abortController),n.returnResponseObject&&(r.resolveWithHelper=!0),r.send().then((function(t){var n=t instanceof e?t.requestHandle.responseJSON:t;if("error"===n.result)throw new We(n.message);return t}))}},{key:"post",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.fetch(e,Object.assign(Object.assign({},n),{},{postParams:t}))}}]),e}();function Ge(){return window.globalAjaxQueue}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ye(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Qe(e,t,n){return t&&Ye(e.prototype,t),n&&Ye(e,n),e}
+ */function Qe(e,t){if("abort"!==t)if("undefined"!==typeof Piwik_Popover){var n=$("#loadingError");Piwik_Popover.isOpen()&&e&&500===e.status?e&&500===e.status&&$(document.body).html(piwikHelper.escape(e.responseText)):n.show()}else console.log("Request failed: ".concat(e.responseText))}we.updatePeriodParamsFromUrl=Se.updatePeriodParamsFromUrl.bind(Se),window.angular.module("piwikApp.service").service("piwikUrl",Ee),window.angular.module("piwikApp.service").run(["$location",function(){return null}]),window.angular.module("piwikApp.service").service("piwik",De),Pe.$inject=["piwik","$rootScope"],window.angular.module("piwikApp.service").run(Pe),window.globalAjaxQueue=[],window.globalAjaxQueue.active=0,window.globalAjaxQueue.clean=function(){for(var e=this.length;e>=0;e-=1)this[e]&&4!==this[e].readyState||this.splice(e,1)},window.globalAjaxQueue.push=function(){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return this.active+=n.length,this.clean(),(e=Array.prototype.push).call.apply(e,[this].concat(n))},window.globalAjaxQueue.abort=function(){this.forEach((function(e){return e&&e.abort&&e.abort()})),this.splice(0,this.length),this.active=0};var Ke=function(e){_e(n,e);var t=$e(n);function n(){return Fe(this,n),t.apply(this,arguments)}return n}(qe(Error)),Xe=function(){function e(){Fe(this,e),Re(this,"format","json"),Re(this,"timeout",null),Re(this,"callback",null),Re(this,"useRegularCallbackInCaseOfError",!1),Re(this,"errorCallback",void 0),Re(this,"withToken",!1),Re(this,"completeCallback",void 0),Re(this,"getParams",{}),Re(this,"getUrl","?"),Re(this,"postParams",{}),Re(this,"loadingElement",null),Re(this,"errorElement","#ajaxError"),Re(this,"headers",void 0),Re(this,"requestHandle",null),Re(this,"abortController",null),Re(this,"defaultParams",["idSite","period","date","segment"]),Re(this,"resolveWithHelper",!1),this.errorCallback=Qe}return Le(e,[{key:"addParams",value:function(e,t){var n=this,r="string"===typeof e?window.broadcast.getValuesFromUrl(e):e,i=["compareSegments","comparePeriods","compareDates"];Object.keys(r).forEach((function(e){var a=r[e];(-1===i.indexOf(e)||a)&&("get"===t.toLowerCase()?n.getParams[e]=a:"post"===t.toLowerCase()&&(n.postParams[e]=a))}))}},{key:"withTokenInUrl",value:function(){this.withToken=!0}},{key:"setUrl",value:function(e){this.addParams(broadcast.getValuesFromUrl(e),"GET")}},{key:"setBulkRequests",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.map((function(e){return"string"===typeof e?e:$.param(e)}));this.addParams({module:"API",method:"API.getBulkRequest",urls:r,format:"json"},"post")}},{key:"setTimeout",value:function(e){this.timeout=e}},{key:"setCallback",value:function(e){this.callback=e}},{key:"useCallbackInCaseOfError",value:function(){this.useRegularCallbackInCaseOfError=!0}},{key:"redirectOnSuccess",value:function(e){this.setCallback((function(){piwikHelper.redirect(e)}))}},{key:"setErrorCallback",value:function(e){this.errorCallback=e}},{key:"setCompleteCallback",value:function(e){this.completeCallback=e}},{key:"setFormat",value:function(e){this.format=e}},{key:"setLoadingElement",value:function(e){this.loadingElement=e||"#ajaxLoadingDiv"}},{key:"setErrorElement",value:function(e){e&&(this.errorElement=e)}},{key:"useGETDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)if(this.defaultParams[t]===e)return!0;return!1}},{key:"removeDefaultParameter",value:function(e){if(e&&this.defaultParams)for(var t=0;t<this.defaultParams.length;t+=1)this.defaultParams[t]===e&&this.defaultParams.splice(t,1)}},{key:"send",value:function(){var e=this;$(this.errorElement).length&&$(this.errorElement).hide(),this.loadingElement&&$(this.loadingElement).fadeIn(),this.requestHandle=this.buildAjaxCall(),window.globalAjaxQueue.push(this.requestHandle);var t=null;try{t=S.helper.getAngularDependency("$timeout")}catch(r){}this.abortController&&this.abortController.signal.addEventListener("abort",(function(){e.requestHandle&&e.requestHandle.abort()}));var n=new Promise((function(n,r){e.requestHandle.then((function(t){e.resolveWithHelper?n(e):n(t)})).fail((function(t){"abort"!==t.statusText&&(console.log("Warning: the ".concat($.param(e.getParams)," request failed!")),r(t))})).done((function(){t&&t()}))}));return n}},{key:"abort",value:function(){this.requestHandle&&"function"===typeof this.requestHandle.abort&&(this.requestHandle.abort(),this.requestHandle=null)}},{key:"buildAjaxCall",value:function(){var e=this,t=this,n=this.mixinDefaultGetParams(this.getParams),r=this.getUrl;"?"!==r[r.length-1]&&(r+="&"),n.segment&&(r="".concat(r,"segment=").concat(n.segment,"&"),delete n.segment),n.date&&(r="".concat(r,"date=").concat(decodeURIComponent(n.date.toString()),"&"),delete n.date),r+=$.param(n);var i={type:"POST",async:!0,url:r,dataType:this.format||"json",complete:this.completeCallback,headers:this.headers?this.headers:void 0,error:function(){if(window.globalAjaxQueue.active-=1,t.errorCallback){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.errorCallback.apply(this,n)}},success:function(t,n,r){if(e.loadingElement&&$(e.loadingElement).hide(),t&&"error"===t.result&&!e.useRegularCallbackInCaseOfError){var i=null,a="toast";$(e.errorElement).length&&t.message&&($(e.errorElement).show(),i=e.errorElement,a=null);var o=!document.querySelector("#login_form");if(t.message&&o){var l=window["require"]("piwik/UI"),c=new l.Notification;c.show(t.message,{placeat:i,context:"error",type:a,id:"ajaxHelper"}),c.scrollToNotification()}}else e.callback&&e.callback(t,n,r);window.globalAjaxQueue.active-=1,S.ajaxRequestFinished&&S.ajaxRequestFinished()},data:this.mixinDefaultPostParams(this.postParams),timeout:null!==this.timeout?this.timeout:void 0};return $.ajax(i)}},{key:"isRequestToApiMethod",value:function(){return this.getParams&&"API"===this.getParams.module&&this.getParams.method||this.postParams&&"API"===this.postParams.module&&this.postParams.method}},{key:"isWidgetizedRequest",value:function(){return"Widgetize"===broadcast.getValueFromUrl("module")}},{key:"getDefaultPostParams",value:function(){return this.withToken||this.isRequestToApiMethod()||S.shouldPropagateTokenAuth?{token_auth:S.token_auth,force_api_session:broadcast.isWidgetizeRequestWithoutSession()?0:1}:{}}},{key:"mixinDefaultPostParams",value:function(e){var t=this.getDefaultPostParams(),n=Object.assign(Object.assign({},t),e);return n}},{key:"mixinDefaultGetParams",value:function(e){var t=this,n=Ce.getSearchParam("segment"),r={idSite:S.idSite?S.idSite.toString():broadcast.getValueFromUrl("idSite"),period:S.period||broadcast.getValueFromUrl("period"),segment:n},i=e;return i.token_auth&&(i.token_auth=null,delete i.token_auth),Object.keys(r).forEach((function(e){t.useGETDefaultParameter(e)&&!i[e]&&!t.postParams[e]&&r[e]&&(i[e]=r[e])})),!this.useGETDefaultParameter("date")||i.date||this.postParams.date||(i.date=S.currentDateString),i}},{key:"getRequestHandle",value:function(){return this.requestHandle}}],[{key:"fetch",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new e;return n.withTokenInUrl&&r.withTokenInUrl(),r.setFormat(n.format||"json"),Array.isArray(t)?r.setBulkRequests.apply(r,Ne(t)):r.addParams(Object.assign(Object.assign({module:"API",format:n.format||"json"},t),{},{segment:t.segment?encodeURIComponent(t.segment):void 0}),"get"),n.postParams&&r.addParams(n.postParams,"post"),n.headers&&(r.headers=n.headers),"undefined"===typeof n.createErrorNotification||n.createErrorNotification||r.useCallbackInCaseOfError(),n.abortController&&(r.abortController=n.abortController),n.returnResponseObject&&(r.resolveWithHelper=!0),r.send().then((function(t){var n=t instanceof e?t.requestHandle.responseJSON:t;if("error"===n.result)throw new Ke(n.message);return t}))}},{key:"post",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.fetch(e,Object.assign(Object.assign({},n),{},{postParams:t}))}}]),e}();function Ze(){return window.globalAjaxQueue}function et(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function tt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function nt(e,t,n){return t&&tt(e.prototype,t),n&&tt(e,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
- */window.ajaxHelper=Je,window.angular.module("piwikApp.service").service("globalAjaxQueue",Ge);var Ke=window,Xe=Ke.$,Ze=function(){function e(){ze(this,e),this.setup()}return Qe(e,[{key:"setup",value:function(){var e=this;Object(a["watch"])((function(){return Ce.parsed.value.popover}),(function(){return e.onPopoverParamChanged()})),Ce.parsed.value.popover&&this.onPopoverParamChangedInitial()}},{key:"onPopoverParamChangedInitial",value:function(){var e=this;Xe((function(){setTimeout((function(){e.openOrClose()}))}))}},{key:"onPopoverParamChanged",value:function(){var e=this;Xe((function(){e.openOrClose()}))}},{key:"openOrClose",value:function(){this.close();var e=Ce.parsed.value.popover;e?this.open(e):window.broadcast.resetPopoverStack()}},{key:"close",value:function(){window.Piwik_Popover.close()}},{key:"open",value:function(e){var t=decodeURIComponent(e);t=t.replace(/\$/g,"%"),t=decodeURIComponent(t);var n=t.split(":"),r=n[0];n.shift();var i=n.join(":");"undefined"===typeof window.broadcast.popoverHandlers[r]||window.broadcast.isLoginPage()||window.broadcast.popoverHandlers[r](i)}}]),e}();new Ze;function et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function tt(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["alert",et({},"alert-".concat(e.severity),!0)])},[Object(a["renderSlot"])(e.$slots,"default")],2)}var nt=Object(a["defineComponent"])({props:{severity:{type:String,required:!0}}});nt.render=tt;var rt=nt;
+ */window.ajaxHelper=Xe,window.angular.module("piwikApp.service").service("globalAjaxQueue",Ze);var rt=window,it=rt.$,at=function(){function e(){et(this,e),this.setup()}return nt(e,[{key:"setup",value:function(){var e=this;Object(a["watch"])((function(){return Ce.parsed.value.popover}),(function(){return e.onPopoverParamChanged()})),Ce.parsed.value.popover&&this.onPopoverParamChangedInitial()}},{key:"onPopoverParamChangedInitial",value:function(){var e=this;it((function(){setTimeout((function(){e.openOrClose()}))}))}},{key:"onPopoverParamChanged",value:function(){var e=this;it((function(){e.openOrClose()}))}},{key:"openOrClose",value:function(){this.close();var e=Ce.parsed.value.popover;e?this.open(e):window.broadcast.resetPopoverStack()}},{key:"close",value:function(){window.Piwik_Popover.close()}},{key:"open",value:function(e){var t=decodeURIComponent(e);t=t.replace(/\$/g,"%"),t=decodeURIComponent(t);var n=t.split(":"),r=n[0];n.shift();var i=n.join(":");"undefined"===typeof window.broadcast.popoverHandlers[r]||window.broadcast.isLoginPage()||window.broadcast.popoverHandlers[r](i)}}]),e}();new at;function ot(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lt(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["alert",ot({},"alert-".concat(e.severity),!0)])},[Object(a["renderSlot"])(e.$slots,"default")],2)}var ct=Object(a["defineComponent"])({props:{severity:{type:String,required:!0}}});ct.render=lt;var st=ct;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function it(){var e=a["createApp"].apply(void 0,arguments);return e.config.globalProperties.$sanitize=window.vueSanitize,e.config.globalProperties.translate=C,e}function at(e,t){return ut(e)||st(e,t)||lt(e,t)||ot()}function ot(){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 lt(e,t){if(e){if("string"===typeof e)return ct(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)?ct(e,t):void 0}}function ct(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function st(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function ut(e){if(Array.isArray(e))return e}function dt(e){return dt="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},dt(e)}
+ */function ut(){var e=a["createApp"].apply(void 0,arguments);return e.config.globalProperties.$sanitize=window.vueSanitize,e.config.globalProperties.translate=C,e}function dt(e,t){return gt(e)||ht(e,t)||mt(e,t)||pt()}function pt(){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 mt(e,t){if(e){if("string"===typeof e)return ft(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)?ft(e,t):void 0}}function ft(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function gt(e){if(Array.isArray(e))return e}function vt(e){return vt="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},vt(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 pt=0;function mt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function ft(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function ht(e){return"object"===dt(e)&&null!==e&&Object.getPrototypeOf(e)===Object.prototype?Object.fromEntries(Object.entries(e).filter((function(e){return!/^\$/.test(e[0])}))):e}function gt(e){var t=e.component,n=e.require,r=e.scope,i=void 0===r?{}:r,o=e.events,l=void 0===o?{}:o,c=e.$inject,s=e.directiveName,u=e.transclude,d=e.mountPointFactory,p=e.postCreate,m=e.noScope,f=e.restrict,h=void 0===f?"A":f,g=e.priority,v=e.replace,b=pt;u&&(pt+=1);var y={},w={};function O(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];var c={restrict:h,require:n,priority:g,scope:m?void 0:w,compile:function(){return{post:function(e,n,o,c){var s=u?n.find("[ng-transclude][counter=".concat(b,"]")):null,m="<root-component";Object.entries(l).forEach((function(e){var t=at(e,1),n=t[0];m+=" @".concat(mt(n),"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(i).forEach((function(e){var t=at(e,2),n=t[1];if("&"===n.angularJsBind||"&?"===n.angularJsBind){var r=mt(n.vue);l[n.vue]||(m+=" @".concat(r,"=\"onEventHandler('").concat(n.vue,"', $event)\""))}else m+=" :".concat(mt(n.vue),'="').concat(n.vue,'"')})),m+=">",u&&(m+='<div ref="transcludeTarget"/>'),m+="</root-component>";var f=it({template:m,data:function(){var t=this,a={};return Object.entries(i).forEach((function(i){var l=at(i,2),s=l[0],u=l[1],d=ht(e[s]);"undefined"===typeof d&&"undefined"!==typeof u.default&&(d=u.default instanceof Function?u.default.apply(u,[e,n,o].concat(r)):u.default),u.transform&&(d=u.transform.apply(u,[d,t,e,n,o,c].concat(r))),a[u.vue]=d})),a},setup:function(){if(u){var e=Object(a["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,i){var a=ft(t);a=y[a]||a,e[a]&&e[a](i),l[t]&&l[t].apply(l,[i,this,e,n,o,c].concat(r))}}});f.component("root-component",t);var h=d?d.apply(void 0,[e,n,o].concat(r)):n[0],g=f.mount(h);Object.entries(i).forEach((function(t){var i=at(t,2),a=i[0],l=i[1];l.angularJsBind&&"&"!==l.angularJsBind&&"&?"!==l.angularJsBind&&e.$watch(a,(function(t,i){if(t!==i||JSON.stringify(g[l.vue])!==JSON.stringify(t)){var a=ht(t);"undefined"!==typeof l.default&&"undefined"===typeof t&&(a=l.default instanceof Function?l.default.apply(l,[e,n,o].concat(r)):l.default),l.transform&&(a=l.transform.apply(l,[a,g,e,n,o,c].concat(r))),g[l.vue]=a}}))})),u&&s&&$(g.transcludeTarget).append(s),p&&p.apply(void 0,[g,e,n,o,c].concat(r)),v&&(Array.from(n[0].attributes).forEach((function(e){i[e.nodeName]||h.firstElementChild&&h.firstElementChild.setAttribute(e.nodeName,e.nodeValue)})),n.replaceWith(window.$(h).children())),n.on("$destroy",(function(){f.unmount()}))}}}};return u&&(c.transclude=!0,c.template='<div ng-transclude counter="'.concat(b,'"/>')),c}return Object.entries(i).forEach((function(e){var t=at(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(w[n]=r.angularJsBind),y[r.vue]=n})),O.$inject=c||[],window.angular.module("piwikApp").directive(s,O),O}function vt(e){if("undefined"!==typeof e)return"true"===e||!!e&&e>0&&"0"!==e}function bt(e){if("undefined"!==typeof e)return null===e?null:parseInt(e,10)}function yt(e){return"undefined"===typeof e?e:JSON.parse(JSON.stringify(e))}function wt(e){var t=yt(e);return S.helper.getAngularDependency("$rootScope").$applyAsync(),t}
+ */var bt=0;function yt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/[A-Z]/g,(function(e){return"-".concat(e.toLowerCase())}))}function wt(e){return e.substring(0,1).toLowerCase()+e.substring(1).replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function Ot(e){return"object"===vt(e)&&null!==e&&Object.getPrototypeOf(e)===Object.prototype?Object.fromEntries(Object.entries(e).filter((function(e){return!/^\$/.test(e[0])}))):e}function jt(e){var t=e.component,n=e.require,r=e.scope,i=void 0===r?{}:r,o=e.events,l=void 0===o?{}:o,c=e.$inject,s=e.directiveName,u=e.transclude,d=e.mountPointFactory,p=e.postCreate,m=e.noScope,f=e.restrict,h=void 0===f?"A":f,g=e.priority,v=e.replace,b=bt;u&&(bt+=1);var y={},w={};function O(){for(var e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];var c={restrict:h,require:n,priority:g,scope:m?void 0:w,compile:function(){return{post:function(e,n,o,c){var s=u?n.find("[ng-transclude][counter=".concat(b,"]")):null,m="<root-component";Object.entries(l).forEach((function(e){var t=dt(e,1),n=t[0];m+=" @".concat(yt(n),"=\"onEventHandler('").concat(n,"', $event)\"")})),Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[1];if("&"===n.angularJsBind||"&?"===n.angularJsBind){var r=yt(n.vue);l[n.vue]||(m+=" @".concat(r,"=\"onEventHandler('").concat(n.vue,"', $event)\""))}else m+=" :".concat(yt(n.vue),'="').concat(n.vue,'"')})),m+=">",u&&(m+='<div ref="transcludeTarget"/>'),m+="</root-component>";var f=ut({template:m,data:function(){var t=this,a={};return Object.entries(i).forEach((function(i){var l=dt(i,2),s=l[0],u=l[1],d=Ot(e[s]);"undefined"===typeof d&&"undefined"!==typeof u.default&&(d=u.default instanceof Function?u.default.apply(u,[e,n,o].concat(r)):u.default),u.transform&&(d=u.transform.apply(u,[d,t,e,n,o,c].concat(r))),a[u.vue]=d})),a},setup:function(){if(u){var e=Object(a["ref"])(null);return{transcludeTarget:e}}},methods:{onEventHandler:function(t,i){var a=wt(t);a=y[a]||a,e[a]&&e[a](i),l[t]&&l[t].apply(l,[i,this,e,n,o,c].concat(r))}}});f.component("root-component",t);var h=d?d.apply(void 0,[e,n,o].concat(r)):n[0],g=f.mount(h);Object.entries(i).forEach((function(t){var i=dt(t,2),a=i[0],l=i[1];l.angularJsBind&&"&"!==l.angularJsBind&&"&?"!==l.angularJsBind&&e.$watch(a,(function(t,i){if(t!==i||JSON.stringify(g[l.vue])!==JSON.stringify(t)){var a=Ot(t);"undefined"!==typeof l.default&&"undefined"===typeof t&&(a=l.default instanceof Function?l.default.apply(l,[e,n,o].concat(r)):l.default),l.transform&&(a=l.transform.apply(l,[a,g,e,n,o,c].concat(r))),g[l.vue]=a}}))})),u&&s&&$(g.transcludeTarget).append(s),p&&p.apply(void 0,[g,e,n,o,c].concat(r)),v&&(Array.from(n[0].attributes).forEach((function(e){i[e.nodeName]||h.firstElementChild&&h.firstElementChild.setAttribute(e.nodeName,e.nodeValue)})),n.replaceWith(window.$(h).children())),n.on("$destroy",(function(){f.unmount()}))}}}};return u&&(c.transclude=!0,c.template='<div ng-transclude counter="'.concat(b,'"/>')),c}return Object.entries(i).forEach((function(e){var t=dt(e,2),n=t[0],r=t[1];r.vue||(r.vue=n),r.angularJsBind&&(w[n]=r.angularJsBind),y[r.vue]=n})),O.$inject=c||[],window.angular.module("piwikApp").directive(s,O),O}function kt(e){if("undefined"!==typeof e)return"true"===e||!!e&&e>0&&"0"!==e}function St(e){if("undefined"!==typeof e)return null===e?null:parseInt(e,10)}function Ct(e){return"undefined"===typeof e?e:JSON.parse(JSON.stringify(e))}function Et(e){var t=Ct(e);return S.helper.getAngularDependency("$rootScope").$applyAsync(),t}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:rt,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0});
+ */jt({component:st,scope:{severity:{vue:"severity",angularJsBind:"@piwikAlert"}},directiveName:"piwikAlert",transclude:!0});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Ot={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r,i=!!$(e).parent().closest(".dropdown-content").length;i&&(n={hover:!0},$(e).addClass("submenu"),$((null===(r=t.value)||void 0===r?void 0:r.activates)||$(e).data("target")).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container"));$(e).dropdown(n)},updated:function(e){Object(a["nextTick"])((function(){$(e).addClass("matomo-dropdown-menu")}))}};
+ */var Dt={mounted:function(e,t){var n={};$(e).addClass("matomo-dropdown-menu");var r,i=!!$(e).parent().closest(".dropdown-content").length;i&&(n={hover:!0},$(e).addClass("submenu"),$((null===(r=t.value)||void 0===r?void 0:r.activates)||$(e).data("target")).addClass("submenu-dropdown-content"),$(e).parents(".dropdown-content").addClass("submenu-container"));$(e).dropdown(n)},updated:function(e){Object(a["nextTick"])((function(){$(e).addClass("matomo-dropdown-menu")}))}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function jt(e){return{restrict:"A",link:function(t,n,r){var i={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Ot.mounted(n[0],i)}))}}}
+function Pt(e){return{restrict:"A",link:function(t,n,r){var i={instance:null,value:{activates:$("#".concat(r.activates))[0]},oldValue:null,modifiers:{},dir:{}};e((function(){Dt.mounted(n[0],i)}))}}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function kt(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function St(e,t){t.value.hasScrolled=!0}function Ct(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function Et(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}jt.$inject=["$timeout"],window.angular.module("piwikApp").directive("piwikDropdownMenu",jt);var Dt=document.documentElement,Pt={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=Et.bind(null,e,t),t.value.onMouseDown=Ct.bind(null,e,t),t.value.onClickOutsideElement=kt.bind(null,e,t),t.value.onScroll=St.bind(null,e,t),Dt.addEventListener("keyup",t.value.onEscapeHandler),Dt.addEventListener("mousedown",t.value.onMouseDown),Dt.addEventListener("mouseup",t.value.onClickOutsideElement),Dt.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){Dt.removeEventListener("keyup",t.value.onEscapeHandler),Dt.removeEventListener("mousedown",t.value.onMouseDown),Dt.removeEventListener("mouseup",t.value.onClickOutsideElement),Dt.removeEventListener("scroll",t.value.onScroll)}};
+function Vt(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||t.value&&t.value.blur()}function Nt(e,t){t.value.hasScrolled=!0}function Tt(e,t){t.value.isMouseDown=!0,t.value.hasScrolled=!1}function At(e,t,n){27===n.which&&setTimeout((function(){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.blur&&t.value.blur()}),0)}Pt.$inject=["$timeout"],window.angular.module("piwikApp").directive("piwikDropdownMenu",Pt);var It=document.documentElement,xt={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onEscapeHandler=At.bind(null,e,t),t.value.onMouseDown=Tt.bind(null,e,t),t.value.onClickOutsideElement=Vt.bind(null,e,t),t.value.onScroll=Nt.bind(null,e,t),It.addEventListener("keyup",t.value.onEscapeHandler),It.addEventListener("mousedown",t.value.onMouseDown),It.addEventListener("mouseup",t.value.onClickOutsideElement),It.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){It.removeEventListener("keyup",t.value.onEscapeHandler),It.removeEventListener("mousedown",t.value.onMouseDown),It.removeEventListener("mouseup",t.value.onClickOutsideElement),It.removeEventListener("scroll",t.value.onScroll)}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Vt(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};Pt.mounted(t[0],r),t.on("$destroy",(function(){return Pt.unmounted(t[0],r)}))}}}
+function Bt(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{blur:function(){setTimeout((function(){e.$apply(n.piwikFocusAnywhereButHere)}),0)}},oldValue:null,modifiers:{},dir:{}};xt.mounted(t[0],r),t.on("$destroy",(function(){return xt.unmounted(t[0],r)}))}}}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Nt(e,t){t.arg&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}window.angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Vt);var Tt={mounted:function(e,t){Nt(e,t)},updated:function(e,t){Nt(e,t)}};
+function Mt(e,t){t.arg&&setTimeout((function(){e.focus(),t.value.afterFocus&&t.value.afterFocus()}),5)}window.angular.module("piwikApp.directive").directive("piwikFocusAnywhereButHere",Bt);var Lt={mounted:function(e,t){Mt(e,t)},updated:function(e,t){Mt(e,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 At(){return{restrict:"A",link:function(e,t,n){e.$watch(n.piwikFocusIf,(function(n){var r={instance:null,arg:n?"1":void 0,value:{afterFocus:function(){return e.$apply()}},oldValue:null,modifiers:{},dir:{}};Tt.updated(t[0],r)}))}}}
+ */function Rt(){return{restrict:"A",link:function(e,t,n){e.$watch(n.piwikFocusIf,(function(n){var r={instance:null,arg:n?"1":void 0,value:{afterFocus:function(){return e.$apply()}},oldValue:null,modifiers:{},dir:{}};Lt.updated(t[0],r)}))}}}
/*!
* 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){var n;return e instanceof HTMLElement?e:null===(n=t.instance)||void 0===n?void 0:n.$refs[e]}window.angular.module("piwikApp.directive").directive("piwikFocusIf",At);var It={getRef:xt};
+function Ft(e,t){var n;return e instanceof HTMLElement?e:null===(n=t.instance)||void 0===n?void 0:n.$refs[e]}window.angular.module("piwikApp.directive").directive("piwikFocusIf",Rt);var _t={getRef:Ft};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Bt(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function Lt(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Mt(e){e.value.hasScrolled=!0}function Ft(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Rt(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}var _t=document.documentElement,$t={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=Bt.bind(null,e),t.value.onEscapeHandler=Rt.bind(null,e,t),t.value.onMouseDown=Ft.bind(null,t),t.value.onClickOutsideElement=Lt.bind(null,e,t),t.value.onScroll=Mt.bind(null,t),setTimeout((function(){var e=It.getRef(t.value.expander,t);e&&e.addEventListener("click",t.value.onExpand)})),_t.addEventListener("keyup",t.value.onEscapeHandler),_t.addEventListener("mousedown",t.value.onMouseDown),_t.addEventListener("mouseup",t.value.onClickOutsideElement),_t.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){var n=It.getRef(t.value.expander,t);n&&n.removeEventListener("click",t.value.onExpand),_t.removeEventListener("keyup",t.value.onEscapeHandler),_t.removeEventListener("mousedown",t.value.onMouseDown),_t.removeEventListener("mouseup",t.value.onClickOutsideElement),_t.removeEventListener("scroll",t.value.onScroll)}};
+ */function $t(e){e.classList.toggle("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function Ht(e,t,n){var r=t.value.isMouseDown&&t.value.hasScrolled;t.value.isMouseDown=!1,t.value.hasScrolled=!1,r||e.contains(n.target)||e.classList.remove("expanded")}function Ut(e){e.value.hasScrolled=!0}function qt(e){e.value.isMouseDown=!0,e.value.hasScrolled=!1}function Wt(e,t,n){27===n.which&&(t.value.isMouseDown=!1,t.value.hasScrolled=!1,e.classList.remove("expanded"))}var Jt=document.documentElement,Gt=window,zt=Gt.$,Yt={mounted:function(e,t){t.value.isMouseDown=!1,t.value.hasScrolled=!1,t.value.onExpand=$t.bind(null,e),t.value.onEscapeHandler=Wt.bind(null,e,t),t.value.onMouseDown=qt.bind(null,t),t.value.onClickOutsideElement=Ht.bind(null,e,t),t.value.onScroll=Ut.bind(null,t),setTimeout((function(){var e=_t.getRef(t.value.expander,t);e&&zt(e).on("click",t.value.onExpand)})),Jt.addEventListener("keyup",t.value.onEscapeHandler),Jt.addEventListener("mousedown",t.value.onMouseDown),Jt.addEventListener("mouseup",t.value.onClickOutsideElement),Jt.addEventListener("scroll",t.value.onScroll)},unmounted:function(e,t){var n=_t.getRef(t.value.expander,t);n&&zt(n).off("click",t.value.onExpand),Jt.removeEventListener("keyup",t.value.onEscapeHandler),Jt.removeEventListener("mousedown",t.value.onMouseDown),Jt.removeEventListener("mouseup",t.value.onClickOutsideElement),Jt.removeEventListener("scroll",t.value.onScroll)}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Ht(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};$t.mounted(t[0],n),t.on("$destroy",(function(){return $t.unmounted(t[0],n)}))}}}
+function Qt(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};Yt.mounted(t[0],n),t.on("$destroy",(function(){return Yt.unmounted(t[0],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 Ut(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function qt(e){e.classList.remove("expanded")}function Wt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function Jt(e,t){27===t.which&&e.classList.remove("expanded")}window.angular.module("piwikApp").directive("piwikExpandOnClick",Ht);var Gt=document.documentElement,zt={mounted:function(e,t){t.value.onMouseEnter=Ut.bind(null,e),t.value.onMouseLeave=qt.bind(null,e),t.value.onClickOutsideElement=Wt.bind(null,e),t.value.onEscapeHandler=Jt.bind(null,e),setTimeout((function(){var e=It.getRef(t.value.expander,t);e&&e.addEventListener("mouseenter",t.value.onMouseEnter)})),e.addEventListener("mouseleave",t.value.onMouseLeave),Gt.addEventListener("keyup",t.value.onEscapeHandler),Gt.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){var n=It.getRef(t.value.expander,t);n&&n.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}};
+function Kt(e){e.classList.add("expanded");var t=e.querySelector(".dropdown.positionInViewport");t&&S.helper.setMarginLeftToBeInViewport(t)}function Xt(e){e.classList.remove("expanded")}function Zt(e,t){e.contains(t.target)||e.classList.remove("expanded")}function en(e,t){27===t.which&&e.classList.remove("expanded")}window.angular.module("piwikApp").directive("piwikExpandOnClick",Qt);var tn=document.documentElement,nn={mounted:function(e,t){t.value.onMouseEnter=Kt.bind(null,e),t.value.onMouseLeave=Xt.bind(null,e),t.value.onClickOutsideElement=Zt.bind(null,e),t.value.onEscapeHandler=en.bind(null,e),setTimeout((function(){var e=_t.getRef(t.value.expander,t);e&&e.addEventListener("mouseenter",t.value.onMouseEnter)})),e.addEventListener("mouseleave",t.value.onMouseLeave),tn.addEventListener("keyup",t.value.onEscapeHandler),tn.addEventListener("mouseup",t.value.onClickOutsideElement)},unmounted:function(e,t){var n=_t.getRef(t.value.expander,t);n&&n.removeEventListener("mouseenter",t.value.onMouseEnter),e.removeEventListener("mouseleave",t.value.onMouseLeave),document.removeEventListener("keyup",t.value.onEscapeHandler),document.removeEventListener("mouseup",t.value.onClickOutsideElement)}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Yt(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};zt.mounted(t[0],n),t.on("$destroy",(function(){return zt.unmounted(t[0],n)}))}}}window.angular.module("piwikApp").directive("piwikExpandOnHover",Yt);
+function rn(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{expander:t.find(".title").first()[0]},oldValue:null,modifiers:{},dir:{}};nn.mounted(t[0],n),t.on("$destroy",(function(){return nn.unmounted(t[0],n)}))}}}window.angular.module("piwikApp").directive("piwikExpandOnHover",rn);
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-var Qt=window,Kt=Qt.$,Xt={mounted:function(e,t){var n=Kt(e),r=t.value.sensitiveData,i=t.value.showCharacters||6,a=t.value.clickElementSelector||n,o="";function l(){n.html(r),Kt(a).css({cursor:""}),Kt(a).tooltip("destroy")}i>0&&(o+=r.substr(0,i)),o+=r.substr(i).replace(/./g,"*"),n.html(o),Kt(a).tooltip({content:C("CoreHome_ClickToSeeFullInformation"),items:"*",track:!0}),Kt(a).one("click",l),Kt(a).css({cursor:"pointer"})}};
+var an=window,on=an.$,ln={mounted:function(e,t){var n=on(e),r=t.value.sensitiveData,i=t.value.showCharacters||6,a=t.value.clickElementSelector||n,o="";function l(){n.html(r),on(a).css({cursor:""}),on(a).tooltip("destroy")}i>0&&(o+=r.substr(0,i)),o+=r.substr(i).replace(/./g,"*"),n.html(o),on(a).tooltip({content:C("CoreHome_ClickToSeeFullInformation"),items:"*",track:!0}),on(a).one("click",l),on(a).css({cursor:"pointer"})}};
/*!
* 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(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{sensitiveData:n.piwikShowSensitiveData||(n.text?n.text():""),showCharacters:n.showCharacters?parseInt(n.showCharacters,10):void 0,clickElementSelector:n.clickElementSelector},oldValue:null,modifiers:{},dir:{}};Xt.mounted(t[0],r)}}}window.angular.module("piwikApp").directive("piwikShowSensitiveData",Zt);
+function cn(){return{restrict:"A",link:function(e,t,n){var r={instance:null,value:{sensitiveData:n.piwikShowSensitiveData||(n.text?n.text():""),showCharacters:n.showCharacters?parseInt(n.showCharacters,10):void 0,clickElementSelector:n.clickElementSelector},oldValue:null,modifiers:{},dir:{}};ln.mounted(t[0],r)}}}window.angular.module("piwikApp").directive("piwikShowSensitiveData",cn);
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-var en=window,tn=en.$,nn={mounted:function(e){var t=tn(e);!t.attr("data-target")&&t.attr("data-activates")&&t.attr("data-target",t.attr("data-activates"));var n=t.attr("data-target");n&&tn("#".concat(n)).length&&t.dropdown({inDuration:300,outDuration:225,constrainWidth:!1,belowOrigin:!0})}};
+var sn=window,un=sn.$,dn={mounted:function(e){var t=un(e);!t.attr("data-target")&&t.attr("data-activates")&&t.attr("data-target",t.attr("data-activates"));var n=t.attr("data-target");n&&un("#".concat(n)).length&&t.dropdown({inDuration:300,outDuration:225,constrainWidth:!1,belowOrigin:!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 rn(){return{restrict:"C",link:function(e,t){nn.mounted(t[0])}}}
+function pn(){return{restrict:"C",link:function(e,t){dn.mounted(t[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 an(e,t){e.value.focusedElement!==t.target&&(e.value.focusedElement=t.target,window.angular.element(t.target).select())}function on(e){var t=document.createRange();t.selectNode(e.target);var n=window.getSelection();n&&n.rangeCount>0&&n.removeAllRanges(),n&&n.addRange(t)}function ln(e){delete e.value.focusedElement}window.angular.module("piwikApp").directive("dropdownButton",rn);var cn={mounted:function(e,t){var n=e.tagName.toLowerCase();t.value.elementSupportsSelect="textarea"===n,t.value.elementSupportsSelect?(t.value.onFocusHandler=an.bind(null,t),t.value.onBlurHandler=ln.bind(null,t),e.addEventListener("focus",t.value.onFocusHandler),e.addEventListener("blur",t.value.onBlurHandler)):(t.value.onClickHandler=on,e.addEventListener("click",t.value.onClickHandler))},unmounted:function(e,t){t.value.elementSupportsSelect?(e.removeEventListener("focus",t.value.onFocusHandler),e.removeEventListener("blur",t.value.onBlurHandler)):e.removeEventListener("click",t.value.onClickHandler)}};
+function mn(e,t){e.value.focusedElement!==t.target&&(e.value.focusedElement=t.target,window.angular.element(t.target).select())}function fn(e){var t=document.createRange();t.selectNode(e.target);var n=window.getSelection();n&&n.rangeCount>0&&n.removeAllRanges(),n&&n.addRange(t)}function hn(e){delete e.value.focusedElement}window.angular.module("piwikApp").directive("dropdownButton",pn);var gn={mounted:function(e,t){var n=e.tagName.toLowerCase();t.value.elementSupportsSelect="textarea"===n,t.value.elementSupportsSelect?(t.value.onFocusHandler=mn.bind(null,t),t.value.onBlurHandler=hn.bind(null,t),e.addEventListener("focus",t.value.onFocusHandler),e.addEventListener("blur",t.value.onBlurHandler)):(t.value.onClickHandler=fn,e.addEventListener("click",t.value.onClickHandler))},unmounted:function(e,t){t.value.elementSupportsSelect?(e.removeEventListener("focus",t.value.onFocusHandler),e.removeEventListener("blur",t.value.onBlurHandler)):e.removeEventListener("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 sn(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{},oldValue:null,modifiers:{},dir:{}};cn.mounted(t[0],n),t.on("$destroy",(function(){return cn.unmounted(t[0],n)}))}}}window.angular.module("piwikApp").directive("piwikSelectOnFocus",sn);
+ */function vn(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{},oldValue:null,modifiers:{},dir:{}};gn.mounted(t[0],n),t.on("$destroy",(function(){return gn.unmounted(t[0],n)}))}}}window.angular.module("piwikApp").directive("piwikSelectOnFocus",vn);
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-var un=!1,dn={mounted:function(e,t){t.value.activator&&setTimeout((function(){if(!un){un=!0;var n=It.getRef(t.value.activator,t);if(n){window.$(n).show();var r=n.getAttribute("data-target");window.$("#".concat(r)).sidenav({closeOnClick:!0})}}e.classList.contains("collapsible")&&window.$(e).collapsible()}))}};
+var bn=!1,yn={mounted:function(e,t){t.value.activator&&setTimeout((function(){if(!bn){bn=!0;var n=_t.getRef(t.value.activator,t);if(n){window.$(n).show();var r=n.getAttribute("data-target");window.$("#".concat(r)).sidenav({closeOnClick:!0})}}e.classList.contains("collapsible")&&window.$(e).collapsible()}))}};
/*!
* 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){return{restrict:"A",priority:10,link:function(t,n,r){var i={instance:null,value:{activator:$(r.piwikSideNav)[0]},oldValue:null,modifiers:{},dir:{}};e((function(){dn.mounted(n[0],i)}))}}}pn.$inject=["$timeout"],window.angular.module("piwikApp.directive").directive("piwikSideNav",pn);var mn={ref:"root"};function fn(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",mn,[Object(a["renderSlot"])(e.$slots,"default")],512)),[[a["vShow"],e.modelValue]])}var hn=Object(a["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","validation","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;S.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});hn.render=fn;var gn=hn,vn=(gt({component:gn,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r,i){i.yes&&(n.$eval(i.yes),setTimeout((function(){n.$apply()}),0))},no:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},validation:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},close:function(e,t,n,r,i){i.close&&(n.$eval(i.close),setTimeout((function(){n.$apply()}),0))},"update:modelValue":function(e,t,n,r,i,a,o){setTimeout((function(){n.$apply(o(i.piwikDialog).assign(n,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0}),{key:0,class:"title",tabindex:"6"}),bn=["href","title"],yn={class:"iconsBar"},wn=["href","title"],On=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),jn=[On],kn=["title"],Sn=Object(a["createElementVNode"])("span",{class:"icon-info"},null,-1),Cn=[Sn],En={class:"ratingIcons"},Dn={class:"inlineHelp"},Pn=["innerHTML"],Vn=["innerHTML"],Nn=["href"];
+function wn(e){return{restrict:"A",priority:10,link:function(t,n,r){var i={instance:null,value:{activator:$(r.piwikSideNav)[0]},oldValue:null,modifiers:{},dir:{}};e((function(){yn.mounted(n[0],i)}))}}}wn.$inject=["$timeout"],window.angular.module("piwikApp.directive").directive("piwikSideNav",wn);var On={ref:"root"};function jn(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",On,[Object(a["renderSlot"])(e.$slots,"default")],512)),[[a["vShow"],e.modelValue]])}var kn=Object(a["defineComponent"])({props:{modelValue:{type:Boolean,required:!0},element:{type:HTMLElement,required:!1}},emits:["yes","no","closeEnd","close","validation","update:modelValue"],activated:function(){this.$emit("update:modelValue",!1)},watch:{modelValue:function(e,t){var n=this;if(e){var r=this.element||this.$refs.root.firstElementChild;S.helper.modalConfirm(r,{yes:function(){n.$emit("yes")},no:function(){n.$emit("no")},validation:function(){n.$emit("validation")}},{onCloseEnd:function(){n.element||n.$refs.root.appendChild(r),n.$emit("update:modelValue",!1),n.$emit("closeEnd")}})}else!1===e&&!0===t&&this.$emit("close")}}});kn.render=jn;var Sn=kn,Cn=(jt({component:Sn,scope:{show:{vue:"modelValue",default:!1},element:{default:function(e,t){return t[0]}}},events:{yes:function(e,t,n,r,i){i.yes&&(n.$eval(i.yes),setTimeout((function(){n.$apply()}),0))},no:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},validation:function(e,t,n,r,i){i.no&&(n.$eval(i.no),setTimeout((function(){n.$apply()}),0))},close:function(e,t,n,r,i){i.close&&(n.$eval(i.close),setTimeout((function(){n.$apply()}),0))},"update:modelValue":function(e,t,n,r,i,a,o){setTimeout((function(){n.$apply(o(i.piwikDialog).assign(n,e))}),0)}},$inject:["$parse"],directiveName:"piwikDialog",transclude:!0,mountPointFactory:function(e,t){var n=$('<div class="vue-placeholder"/>');return n.appendTo(t),n[0]},postCreate:function(e,t,n,r){t.$watch(r.piwikDialog,(function(t,n){n!==t&&(e.modelValue=t||!1)}))},noScope:!0}),{key:0,class:"title",tabindex:"6"}),En=["href","title"],Dn={class:"iconsBar"},Pn=["href","title"],Vn=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Nn=[Vn],Tn=["title"],An=Object(a["createElementVNode"])("span",{class:"icon-info"},null,-1),In=[An],xn={class:"ratingIcons"},Bn={class:"inlineHelp"},Mn=["innerHTML"],Ln=["innerHTML"],Rn=["href"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Tn(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("RateFeature");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",vn,[Object(a["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(a["renderSlot"])(e.$slots,"default")],8,bn)):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",yn,[e.helpUrl&&!e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},jn,8,wn)):Object(a["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(a["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},Cn,10,kn)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",En,[Object(a["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[a["vShow"],e.showIcons||e.showInlineHelp]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Dn,[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Pn),Object(a["createElementVNode"])("span",{class:"helpDate",innerHTML:e.reportGenerated},null,8,Vn),e.helpUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(a["toDisplayString"])(e.translate("General_MoreDetails")),9,Nn)):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showInlineHelp]])],544)}
+ */function Fn(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("RateFeature");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"enrichedHeadline",onMouseenter:t[1]||(t[1]=function(t){return e.showIcons=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.showIcons=!1}),ref:"root"},[e.editUrl?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cn,[Object(a["renderSlot"])(e.$slots,"default")])),e.editUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,class:"title",href:e.editUrl,title:e.translate("CoreHome_ClickToEditX",e.$sanitize(e.actualFeatureName))},[Object(a["renderSlot"])(e.$slots,"default")],8,En)):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",Dn,[e.helpUrl&&!e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,rel:"noreferrer noopener",target:"_blank",class:"helpIcon",href:e.helpUrl,title:e.translate("CoreHome_ExternalHelp")},Nn,8,Pn)):Object(a["createCommentVNode"])("",!0),e.actualInlineHelp?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,onClick:t[0]||(t[0]=function(t){return e.showInlineHelp=!e.showInlineHelp}),class:Object(a["normalizeClass"])(["helpIcon",{active:e.showInlineHelp}]),title:e.translate(e.reportGenerated?"General_HelpReport":"General_Help")},In,10,Tn)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",xn,[Object(a["createVNode"])(l,{title:e.actualFeatureName},null,8,["title"])])],512),[[a["vShow"],e.showIcons||e.showInlineHelp]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Bn,[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(e.actualInlineHelp)},null,8,Mn),""!=e.reportGenerated?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"helpDate",innerHTML:e.$sanitize(e.reportGenerated)},null,8,Ln)):Object(a["createCommentVNode"])("",!0),e.helpUrl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,rel:"noreferrer noopener",target:"_blank",class:"readMore",href:e.helpUrl},Object(a["toDisplayString"])(e.translate("General_MoreDetails")),9,Rn)):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showInlineHelp]])],544)}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function An(e,t){return Object(a["defineAsyncComponent"])((function(){return new Promise((function(n){window.$(document).ready((function(){window[e]?n(window[e][t]):n(null)}))}))}))}var xn=An("Feedback","RateFeature"),In=Object(a["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:xn},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n,r=t.querySelector(".title .inlineHelp");if(!r&&null!==(n=t.parentElement)&&void 0!==n&&n.nextElementSibling&&(r=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),r){var i,a=null===(i=r.getAttribute("data-content"))||void 0===i?void 0:i.trim();a&&a.length&&(e.actualInlineHelp="<p>".concat(a,"</p>"),setTimeout((function(){return r.remove()}),0))}}var o;e.actualFeatureName||(e.actualFeatureName=null===(o=t.querySelector(".title"))||void 0===o?void 0:o.textContent);if(S.period&&S.currentDateString){var l=p.parse(S.period,S.currentDateString);e.reportGenerated&&l.containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}}))}});In.render=Tn;var Bn=In,Ln=(gt({component:Bn,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),Mn={class:"card-content"},Fn={key:0,class:"card-title"},Rn={key:1,class:"card-title"},_n={ref:"content"};
+ */function _n(e,t){return Object(a["defineAsyncComponent"])((function(){return new Promise((function(n){window.$(document).ready((function(){window[e]?n(window[e][t]):n(null)}))}))}))}var $n=_n("Feedback","RateFeature"),Hn=Object(a["defineComponent"])({props:{helpUrl:{type:String,default:""},editUrl:{type:String,default:""},reportGenerated:String,featureName:String,inlineHelp:String},components:{RateFeature:$n},data:function(){return{showIcons:!1,showInlineHelp:!1,actualFeatureName:this.featureName,actualInlineHelp:this.inlineHelp}},watch:{inlineHelp:function(e){this.actualInlineHelp=e},featureName:function(e){this.actualFeatureName=e}},mounted:function(){var e=this,t=this.$refs.root;setTimeout((function(){if(!e.actualInlineHelp){var n,r=t.querySelector(".title .inlineHelp");if(!r&&null!==(n=t.parentElement)&&void 0!==n&&n.nextElementSibling&&(r=t.parentElement.nextElementSibling.querySelector(".reportDocumentation")),r){var i,a=null===(i=r.getAttribute("data-content"))||void 0===i?void 0:i.trim();a&&a.length&&(e.actualInlineHelp="<p>".concat(a,"</p>"),setTimeout((function(){return r.remove()}),0))}}var o;e.actualFeatureName||(e.actualFeatureName=null===(o=t.querySelector(".title"))||void 0===o?void 0:o.textContent);if(S.period&&S.currentDateString){var l=p.parse(S.period,S.currentDateString);e.reportGenerated&&l.containsToday()&&window.$(t.querySelector(".report-generated")).tooltip({track:!0,content:e.reportGenerated,items:"div",show:!1,hide:!1})}}))}});Hn.render=Fn;var Un=Hn,qn=(jt({component:Un,scope:{helpUrl:{angularJsBind:"@"},editUrl:{angularJsBind:"@"},reportGenerated:{angularJsBind:"@?"},featureName:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@?"}},directiveName:"piwikEnrichedHeadline",transclude:!0}),{class:"card",ref:"root"}),Wn={class:"card-content"},Jn={key:0,class:"card-title"},Gn={key:1,class:"card-title"},zn={ref:"content"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $n(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("EnrichedHeadline");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ln,[Object(a["createElementVNode"])("div",Mn,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",Fn,Object(a["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",Rn,[Object(a["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",_n,[Object(a["renderSlot"])(e.$slots,"default")],512)])],512)}var Hn=null,Un=window,qn=Un.$,Wn=Object(a["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Bn},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e=this,t=this.$refs.root,n=this.$refs.content;if(this.anchor&&t&&t.parentElement){var r=document.createElement("a");r.id=this.anchor,qn(t.parentElement).prepend(r)}setTimeout((function(){var t=n.querySelector(".contentHelp");t&&(e.actualHelpText=t.innerHTML,t.remove())}),0),this.actualFeature&&"true"===this.actualFeature&&(this.actualFeature=this.contentTitle),null===Hn&&(Hn=document.querySelector("#content.admin"));var i=null;if(Hn&&(i=Hn.offsetTop),i||0===i){var a=t.closest("[piwik-widget-loader]"),o=a?a.offsetTop:t.offsetTop;o-i<17&&(t.style.marginTop="0")}}});Wn.render=$n;var Jn=Wn;
+ */function Yn(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("EnrichedHeadline");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",qn,[Object(a["createElementVNode"])("div",Wn,[!e.contentTitle||e.actualFeature||e.helpUrl||e.actualHelpText?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",Jn,Object(a["toDisplayString"])(e.contentTitle),1)),e.contentTitle&&(e.actualFeature||e.helpUrl||e.actualHelpText)?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",Gn,[Object(a["createVNode"])(l,{"feature-name":e.actualFeature,"help-url":e.helpUrl,"inline-help":e.actualHelpText},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.contentTitle),1)]})),_:1},8,["feature-name","help-url","inline-help"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",zn,[Object(a["renderSlot"])(e.$slots,"default")],512)])],512)}var Qn=null,Kn=window,Xn=Kn.$,Zn=Object(a["defineComponent"])({props:{contentTitle:String,feature:String,helpUrl:String,helpText:String,anchor:String},components:{EnrichedHeadline:Un},data:function(){return{actualFeature:this.feature,actualHelpText:this.helpText}},watch:{feature:function(e){this.actualFeature=e},helpText:function(e){this.actualHelpText=e}},mounted:function(){var e=this,t=this.$refs.root,n=this.$refs.content;if(this.anchor&&t&&t.parentElement){var r=document.createElement("a");r.id=this.anchor,Xn(t.parentElement).prepend(r)}setTimeout((function(){var t=n.querySelector(".contentHelp");t&&(e.actualHelpText=t.innerHTML,t.remove())}),0),this.actualFeature&&"true"===this.actualFeature&&(this.actualFeature=this.contentTitle),null===Qn&&(Qn=document.querySelector("#content.admin"));var i=null;if(Qn&&(i=Qn.offsetTop),i||0===i){var a=t.closest("[piwik-widget-loader]"),o=a?a.offsetTop:t.offsetTop;o-i<17&&(t.style.marginTop="0")}}});Zn.render=Yn;var er=Zn;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:Jn,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function Gn(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function zn(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Yn(e,t,n){return t&&zn(e.prototype,t),n&&zn(e,n),e}function Qn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */jt({component:er,scope:{contentTitle:{angularJsBind:"@"},feature:{angularJsBind:"@"},helpUrl:{angularJsBind:"@"},helpText:{angularJsBind:"@"},anchor:{angularJsBind:"@?"}},directiveName:"piwikContentBlock",transclude:!0});function tr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function rr(e,t,n){return t&&nr(e.prototype,t),n&&nr(e,n),e}function ir(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 Kn=function(){function e(){var t=this;Gn(this,e),Qn(this,"segmentState",Object(a["reactive"])({availableSegments:[]})),S.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return Yn(e,[{key:"state",get:function(){return Object(a["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),Xn=new Kn;function Zn(e){return rr(e)||nr(e)||tr(e)||er()}function er(){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 tr(e,t){if(e){if("string"===typeof e)return ir(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)?ir(e,t):void 0}}function nr(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function rr(e){if(Array.isArray(e))return ir(e)}function ir(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ar(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function or(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function lr(e,t,n){return t&&or(e.prototype,t),n&&or(e,n),e}function cr(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var ar=function(){function e(){var t=this;tr(this,e),ir(this,"segmentState",Object(a["reactive"])({availableSegments:[]})),S.on("piwikSegmentationInited",(function(){return t.setSegmentState()}))}return rr(e,[{key:"state",get:function(){return Object(a["readonly"])(this.segmentState)}},{key:"setSegmentState",value:function(){try{var e=$(".segmentEditorPanel").data("uiControlObject");this.segmentState.availableSegments=e.impl.availableSegments||[]}catch(t){}}}]),e}(),or=new ar;function lr(e){return dr(e)||ur(e)||sr(e)||cr()}function cr(){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 sr(e,t){if(e){if("string"===typeof e)return pr(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)?pr(e,t):void 0}}function ur(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function dr(e){if(Array.isArray(e))return pr(e)}function pr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function fr(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function hr(e,t,n){return t&&fr(e.prototype,t),n&&fr(e,n),e}function gr(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 sr=8,ur=3;function dr(e){return e?Array.isArray(e)?e:[e]:[]}var pr=function(){function e(){var t=this;ar(this,e),cr(this,"privateState",Object(a["reactive"])({comparisonsDisabledFor:[]})),cr(this,"state",Object(a["readonly"])(this.privateState)),cr(this,"colors",{}),cr(this,"segmentComparisons",Object(a["computed"])((function(){return t.parseSegmentComparisons()}))),cr(this,"periodComparisons",Object(a["computed"])((function(){return t.parsePeriodComparisons()}))),cr(this,"isEnabled",Object(a["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(a["watch"])((function(){return t.getComparisons()}),(function(){return S.postEvent("piwikComparisonsChanged")}),{deep:!0})}return lr(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%sr;if(0===n)return this.colors["series".concat(r)];var i=n%ur;return this.colors["series".concat(r,"-shade").concat(i)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%sr);return t>0&&(n+="-shade".concat(t%ur)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(i){t.push({index:n,params:Object.assign(Object.assign({},i.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=Zn(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},i={},a=!1,o=!1;e.forEach((function(e){a?r[e.params.segment]=!0:a=!0})),t.forEach((function(e){o?i["".concat(e.params.period,"|").concat(e.params.date)]=!0:o=!0}));var l=[],c=[];Object.keys(i).forEach((function(e){var t=e.split("|");l.push(t[0]),c.push(t[1])}));var s={compareSegments:Object.keys(r),comparePeriods:l,compareDates:c},u=S.helper.isAngularRenderingThePage()?Ce.hashParsed.value:Ce.urlParsed.value;Ce.updateLocation(Object.assign(Object.assign(Object.assign({},u),s),n))}},{key:"getAllSeriesColors",value:function(){var e=S.ColorManager;if(!e)return[];for(var t=[],n=0;n<sr;n+=1){t.push("series".concat(n));for(var r=0;r<ur;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=Ce.parsed.value.module;window.piwik.installation?this.privateState.comparisonsDisabledFor=[]:"CoreUpdater"!==t&&"Installation"!==t?Je.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=Xn.state.availableSegments,t=Zn(dr(Ce.parsed.value.compareSegments));t.unshift(Ce.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var i;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(i=e)}));var a=i?i.name:C("General_Unknown");""===t.trim()&&(a=C("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:S.helper.htmlDecode(a),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=Zn(dr(Ce.parsed.value.comparePeriods)),t=Zn(dr(Ce.parsed.value.compareDates));e.unshift(Ce.parsed.value.period),t.unshift(Ce.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var i=void 0;try{i=p.parse(e[r],t[r]).getPrettyString()}catch(a){i=C("General_Error")}n.push({params:{date:t[r],period:e[r]},title:i,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=Ce.parsed.value.category||Ce.parsed.value.module,t=Ce.parsed.value.subcategory||Ce.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),mr=new pr,fr={key:0,ref:"root",class:"matomo-comparisons"},hr={class:"comparison-type"},gr=["title"],vr=["href"],br=["title"],yr={class:"comparison-period-label"},wr=["onClick"],Or=["title"],jr={class:"loadingPiwik",style:{display:"none"}},kr=["alt"];function Sr(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("tooltips");return e.isComparing?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fr,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.segmentComparisons,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(a["createElementVNode"])("div",hr,Object(a["toDisplayString"])(e.translate("General_Segment")),1),Object(a["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(a["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(a["toDisplayString"])(t.title),9,vr)],8,gr),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.periodComparisons,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(a["createElementVNode"])("span",{class:"comparison-dot",style:Object(a["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(a["createElementVNode"])("span",yr,Object(a["toDisplayString"])(n.title)+" ("+Object(a["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,br)})),128)),e.segmentComparisons.length>1?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(a["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,Or)],8,wr)):Object(a["createCommentVNode"])("",!0)])})),128)),Object(a["createElementVNode"])("div",jr,[Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,kr),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)),[[l,{duration:200,delay:200,content:e.transformTooltipContent}]]):Object(a["createCommentVNode"])("",!0)}
+ */var vr=8,br=3;function yr(e){return e?Array.isArray(e)?e:[e]:[]}var wr=function(){function e(){var t=this;mr(this,e),gr(this,"privateState",Object(a["reactive"])({comparisonsDisabledFor:[]})),gr(this,"state",Object(a["readonly"])(this.privateState)),gr(this,"colors",{}),gr(this,"segmentComparisons",Object(a["computed"])((function(){return t.parseSegmentComparisons()}))),gr(this,"periodComparisons",Object(a["computed"])((function(){return t.parsePeriodComparisons()}))),gr(this,"isEnabled",Object(a["computed"])((function(){return t.checkEnabledForCurrentPage()}))),this.loadComparisonsDisabledFor(),$((function(){t.colors=t.getAllSeriesColors()})),Object(a["watch"])((function(){return t.getComparisons()}),(function(){return S.postEvent("piwikComparisonsChanged")}),{deep:!0})}return hr(e,[{key:"getComparisons",value:function(){return this.getSegmentComparisons().concat(this.getPeriodComparisons())}},{key:"isComparing",value:function(){return this.isComparisonEnabled()&&(this.segmentComparisons.value.length>1||this.periodComparisons.value.length>1)}},{key:"isComparingPeriods",value:function(){return this.getPeriodComparisons().length>1}},{key:"getSegmentComparisons",value:function(){return this.isComparisonEnabled()?this.segmentComparisons.value:[]}},{key:"getPeriodComparisons",value:function(){return this.isComparisonEnabled()?this.periodComparisons.value:[]}},{key:"getSeriesColor",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.getComparisonSeriesIndex(t.index,e.index)%vr;if(0===n)return this.colors["series".concat(r)];var i=n%br;return this.colors["series".concat(r,"-shade").concat(i)]}},{key:"getSeriesColorName",value:function(e,t){var n="series".concat(e%vr);return t>0&&(n+="-shade".concat(t%br)),n}},{key:"isComparisonEnabled",value:function(){return this.isEnabled.value}},{key:"getIndividualComparisonRowIndices",value:function(e){var t=this.getSegmentComparisons().length,n=e%t,r=Math.floor(e/t);return{segmentIndex:n,periodIndex:r}}},{key:"getComparisonSeriesIndex",value:function(e,t){var n=this.getSegmentComparisons().length;return e*n+t}},{key:"getAllComparisonSeries",value:function(){var e=this,t=[],n=0;return this.getPeriodComparisons().forEach((function(r){e.getSegmentComparisons().forEach((function(i){t.push({index:n,params:Object.assign(Object.assign({},i.params),r.params),color:e.colors["series".concat(n)]}),n+=1}))})),t}},{key:"removeSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=lr(this.segmentComparisons.value);t.splice(e,1);var n={};0===e&&(n.segment=t[0].params.segment),this.updateQueryParamsFromComparisons(t,this.periodComparisons.value,n)}},{key:"addSegmentComparison",value:function(e){if(!this.isComparisonEnabled())throw new Error("Comparison disabled.");var t=this.segmentComparisons.value.concat([{params:e,index:-1,title:""}]);this.updateQueryParamsFromComparisons(t,this.periodComparisons.value)}},{key:"updateQueryParamsFromComparisons",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={},i={},a=!1,o=!1;e.forEach((function(e){a?r[e.params.segment]=!0:a=!0})),t.forEach((function(e){o?i["".concat(e.params.period,"|").concat(e.params.date)]=!0:o=!0}));var l=[],c=[];Object.keys(i).forEach((function(e){var t=e.split("|");l.push(t[0]),c.push(t[1])}));var s={compareSegments:Object.keys(r),comparePeriods:l,compareDates:c},u=S.helper.isAngularRenderingThePage()?Ce.hashParsed.value:Ce.urlParsed.value;Ce.updateLocation(Object.assign(Object.assign(Object.assign({},u),s),n))}},{key:"getAllSeriesColors",value:function(){var e=S.ColorManager;if(!e)return[];for(var t=[],n=0;n<vr;n+=1){t.push("series".concat(n));for(var r=0;r<br;r+=1)t.push("series".concat(n,"-shade").concat(r))}return e.getColors("comparison-series-color",t)}},{key:"loadComparisonsDisabledFor",value:function(){var e=this,t=Ce.parsed.value.module;window.piwik.installation?this.privateState.comparisonsDisabledFor=[]:"CoreUpdater"!==t&&"Installation"!==t&&"Overlay"!==t?Xe.fetch({module:"API",method:"API.getPagesComparisonsDisabledFor"}).then((function(t){e.privateState.comparisonsDisabledFor=t})):this.privateState.comparisonsDisabledFor=[]}},{key:"parseSegmentComparisons",value:function(){var e=or.state.availableSegments,t=lr(yr(Ce.parsed.value.compareSegments));t.unshift(Ce.parsed.value.segment||"");var n=[];return t.forEach((function(t,r){var i;e.forEach((function(e){e.definition!==t&&e.definition!==decodeURIComponent(t)&&decodeURIComponent(e.definition)!==t||(i=e)}));var a=i?i.name:C("General_Unknown");""===t.trim()&&(a=C("SegmentEditor_DefaultAllVisits")),n.push({params:{segment:t},title:S.helper.htmlDecode(a),index:r})})),n}},{key:"parsePeriodComparisons",value:function(){var e=lr(yr(Ce.parsed.value.comparePeriods)),t=lr(yr(Ce.parsed.value.compareDates));e.unshift(Ce.parsed.value.period),t.unshift(Ce.parsed.value.date);for(var n=[],r=0;r<Math.min(t.length,e.length);r+=1){var i=void 0;try{i=p.parse(e[r],t[r]).getPrettyString()}catch(a){i=C("General_Error")}n.push({params:{date:t[r],period:e[r]},title:i,index:r})}return n}},{key:"checkEnabledForCurrentPage",value:function(){var e=Ce.parsed.value.category||Ce.parsed.value.module,t=Ce.parsed.value.subcategory||Ce.parsed.value.action,n="".concat(e,".").concat(t),r=-1===this.privateState.comparisonsDisabledFor.indexOf(n)&&-1===this.privateState.comparisonsDisabledFor.indexOf("".concat(e,".*"));return document.documentElement.classList.toggle("comparisonsDisabled",!r),r}}]),e}(),Or=new wr,jr={key:0,ref:"root",class:"matomo-comparisons"},kr={class:"comparison-type"},Sr=["title"],Cr=["href"],Er=["title"],Dr={class:"comparison-period-label"},Pr=["onClick"],Vr=["title"],Nr={class:"loadingPiwik",style:{display:"none"}},Tr=["alt"];function Ar(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("tooltips");return e.isComparing?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",jr,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("General_Comparisons")),1),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.segmentComparisons,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison card",key:t.index},[Object(a["createElementVNode"])("div",kr,Object(a["toDisplayString"])(e.translate("General_Segment")),1),Object(a["createElementVNode"])("div",{class:"title",title:t.title+"<br/>"+decodeURIComponent(t.params.segment)},[Object(a["createElementVNode"])("a",{target:"_blank",href:e.getUrlToSegment(t.params.segment)},Object(a["toDisplayString"])(t.title),9,Cr)],8,Sr),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.periodComparisons,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"comparison-period",key:n.index,title:e.getComparisonTooltip(t,n)},[Object(a["createElementVNode"])("span",{class:"comparison-dot",style:Object(a["normalizeStyle"])({"background-color":e.getSeriesColor(t,n)})},null,4),Object(a["createElementVNode"])("span",Dr,Object(a["toDisplayString"])(n.title)+" ("+Object(a["toDisplayString"])(e.getComparisonPeriodType(n))+") ",1)],8,Er)})),128)),e.segmentComparisons.length>1?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:0,class:"remove-button",onClick:function(t){return e.removeSegmentComparison(n)}},[Object(a["createElementVNode"])("span",{class:"icon icon-close",title:e.translate("General_ClickToRemoveComp")},null,8,Vr)],8,Pr)):Object(a["createCommentVNode"])("",!0)])})),128)),Object(a["createElementVNode"])("div",Nr,[Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,Tr),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512)),[[l,{duration:200,delay:200,content:e.transformTooltipContent}]]):Object(a["createCommentVNode"])("",!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 Cr(e,t){window.$(e).tooltip({track:!0,content:t.value.content,show:{delay:t.value.delay||700,duration:t.value.duration||200},hide:!1})}var Er={mounted:function(e,t){setTimeout((function(){return Cr(e,t)}))},updated:function(e,t){setTimeout((function(){return Cr(e,t)}))},beforeUnmount:function(e){try{window.$(e).tooltip("destroy")}catch(t){}}},Dr=Object(a["defineComponent"])({props:{},directives:{Tooltips:Er},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(a["computed"])((function(){return mr.isComparing()})),t=Object(a["computed"])((function(){return mr.getSegmentComparisons()})),n=Object(a["computed"])((function(){return mr.getPeriodComparisons()})),r=mr.getSeriesColor.bind(mr);function i(){var e=window.$(this).attr("title");return e?window.vueSanitize(e.replace(/\n/g,"<br />")):e}return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r,transformTooltipContent:i}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),mr.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return C("CoreHome_PeriodRange");var n=C("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=Object.assign({},Ce.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(Ce.stringify(t))},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,mr.isComparing()){var t=mr.getPeriodComparisons(),n=mr.getSegmentComparisons();Je.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:Ce.getSearchParam("compareSegments"),comparePeriods:Ce.getSearchParam("comparePeriods"),compareDates:Ce.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var i=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=i}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=mr.getComparisonSeriesIndex(t.index,0),i=e.reportData.comparisons[r],a=mr.getComparisonSeriesIndex(t.index,n.index),o=e.reportData.comparisons[a],l=e.reportData.comparisons[n.index],c='<div class="comparison-card-tooltip">',s=(o.nb_visits/i.nb_visits*100).toFixed(2);return s="".concat(s,"%"),c+=C("General_ComparisonCardTooltip1",["'".concat(o.compareSegmentPretty,"'"),o.comparePeriodPretty,s,o.nb_visits.toString(),i.nb_visits.toString()]),t.index>0&&(c+="<br/><br/>",c+=C("General_ComparisonCardTooltip2",[o.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),c+="</div>",c}},mounted:function(){var e=this;S.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged()}});Dr.render=Sr;var Pr=Dr;
+ */var Ir=window,xr=Ir.$;function Br(){var e=xr(this).attr("title")||"";return window.vueSanitize(e.replace(/\n/g,"<br />"))}function Mr(e,t){var n,r,i;xr(e).tooltip({track:!0,content:(null===(n=t.value)||void 0===n?void 0:n.content)||Br,show:{delay:(null===(r=t.value)||void 0===r?void 0:r.delay)||700,duration:(null===(i=t.value)||void 0===i?void 0:i.duration)||200},hide:!1})}var Lr={mounted:function(e,t){setTimeout((function(){return Mr(e,t)}))},updated:function(e,t){setTimeout((function(){return Mr(e,t)}))},beforeUnmount:function(e){try{window.$(e).tooltip("destroy")}catch(t){}}},Rr=Object(a["defineComponent"])({props:{},directives:{Tooltips:Lr},data:function(){return{comparisonTooltips:null}},setup:function(){var e=Object(a["computed"])((function(){return Or.isComparing()})),t=Object(a["computed"])((function(){return Or.getSegmentComparisons()})),n=Object(a["computed"])((function(){return Or.getPeriodComparisons()})),r=Or.getSeriesColor.bind(Or);function i(){var e=window.$(this).attr("title");return e?window.vueSanitize(e.replace(/\n/g,"<br />")):e}return{isComparing:e,segmentComparisons:t,periodComparisons:n,getSeriesColor:r,transformTooltipContent:i}},methods:{comparisonHasSegment:function(e){return"undefined"!==typeof e.params.segment},removeSegmentComparison:function(e){window.$(this.$refs.root).tooltip("destroy"),Or.removeSegmentComparison(e)},getComparisonPeriodType:function(e){var t=e.params.period;if("range"===t)return C("CoreHome_PeriodRange");var n=C("Intl_Period".concat(t.substring(0,1).toUpperCase()).concat(t.substring(1)));return n.substring(0,1).toUpperCase()+n.substring(1)},getComparisonTooltip:function(e,t){if(this.comparisonTooltips&&Object.keys(this.comparisonTooltips).length)return(this.comparisonTooltips[t.index]||{})[e.index]},getUrlToSegment:function(e){var t=Object.assign({},Ce.hashParsed.value);return delete t.comparePeriods,delete t.compareDates,delete t.compareSegments,t.segment=e,"".concat(window.location.search,"#?").concat(Ce.stringify(t))},onComparisonsChanged:function(){var e=this;if(this.comparisonTooltips=null,Or.isComparing()){var t=Or.getPeriodComparisons(),n=Or.getSegmentComparisons();Xe.fetch({method:"API.getProcessedReport",apiModule:"VisitsSummary",apiAction:"get",compare:"1",compareSegments:Ce.getSearchParam("compareSegments"),comparePeriods:Ce.getSearchParam("comparePeriods"),compareDates:Ce.getSearchParam("compareDates"),format_metrics:"1"}).then((function(r){e.comparisonTooltips={},t.forEach((function(t){e.comparisonTooltips[t.index]={},n.forEach((function(n){var i=e.generateComparisonTooltip(r,t,n);e.comparisonTooltips[t.index][n.index]=i}))}))}))}},generateComparisonTooltip:function(e,t,n){if(!e.reportData.comparisons)return"";var r=Or.getComparisonSeriesIndex(t.index,0),i=e.reportData.comparisons[r],a=Or.getComparisonSeriesIndex(t.index,n.index),o=e.reportData.comparisons[a],l=e.reportData.comparisons[n.index],c='<div class="comparison-card-tooltip">',s=(o.nb_visits/i.nb_visits*100).toFixed(2);return s="".concat(s,"%"),c+=C("General_ComparisonCardTooltip1",["'".concat(o.compareSegmentPretty,"'"),o.comparePeriodPretty,s,o.nb_visits.toString(),i.nb_visits.toString()]),t.index>0&&(c+="<br/><br/>",c+=C("General_ComparisonCardTooltip2",[o.nb_visits_change.toString(),l.compareSegmentPretty,l.comparePeriodPretty])),c+="</div>",c}},mounted:function(){var e=this;S.on("piwikComparisonsChanged",(function(){e.onComparisonsChanged()})),this.onComparisonsChanged()}});Rr.render=Ar;var Fr=Rr;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Vr(){return mr}window.angular.module("piwikApp.service").factory("piwikComparisonsService",Vr);gt({component:Pr,directiveName:"piwikComparisons",restrict:"E"});var Nr={ref:"root",class:"menuDropdown"},Tr=["title"],Ar=["innerHTML"],xr=Object(a["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Ir={class:"items"},Br={key:0,class:"search"},Lr=["placeholder"],Mr=["title"],Fr=["title"];function Rr(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Nr,[Object(a["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Ar),xr],8,Tr),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ir,[e.showSearch&&e.showItems?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Br,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Lr),[[a["vModelText"],e.searchTerm],[l,{},e.showItems]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,Mr),[[a["vShow"],!e.searchTerm]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Fr),[[a["vShow"],e.searchTerm]])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(a["renderSlot"])(e.$slots,"default")])],512),[[a["vShow"],e.showItems]])],512)),[[c,{blur:e.lostFocus}]])}var _r=window,$r=_r.$,Hr=Object(a["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:Boolean},directives:{FocusAnywhereButHere:Pt,FocusIf:Tt},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(this.menuTitleChangeOnClick&&(this.actualMenuTitle=(e.target.textContent||"").replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,$r(this.$slots.default()[0].el).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();$r(this.$refs.root).find(".item").each((function(e,n){var r=$r(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});Hr.render=Rr;var Ur=Hr,qr=(gt({component:Ur,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t,n){setTimeout((function(){n.$apply()}),0)}}}),{ref:"root"});
+ */function _r(){return Or}window.angular.module("piwikApp.service").factory("piwikComparisonsService",_r);jt({component:Fr,directiveName:"piwikComparisons",restrict:"E"});var $r={ref:"root",class:"menuDropdown"},Hr=["title"],Ur=["innerHTML"],qr=Object(a["createElementVNode"])("span",{class:"icon-arrow-bottom"},null,-1),Wr={class:"items"},Jr={key:0,class:"search"},Gr=["placeholder"],zr=["title"],Yr=["title"];function Qr(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$r,[Object(a["createElementVNode"])("span",{class:"title",onClick:t[0]||(t[0]=function(t){return e.showItems=!e.showItems}),title:e.tooltip},[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(this.actualMenuTitle)},null,8,Ur),qr],8,Hr),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Wr,[e.showSearch&&e.showItems?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Jr,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),onKeydown:t[2]||(t[2]=function(t){return e.onSearchTermKeydown(t)}),placeholder:e.translate("General_Search")},null,40,Gr),[[a["vModelText"],e.searchTerm],[l,{},e.showItems]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{class:"search_ico",src:"plugins/Morpheus/images/search_ico.png",title:e.translate("General_Search")},null,8,zr),[[a["vShow"],!e.searchTerm]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{onClick:t[3]||(t[3]=function(t){e.searchTerm="",e.searchItems("")}),class:"reset",src:"plugins/CoreHome/images/reset_search.png",title:e.translate("General_Clear")},null,8,Yr),[[a["vShow"],e.searchTerm]])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",{onClick:t[4]||(t[4]=function(t){return e.selectItem(t)})},[Object(a["renderSlot"])(e.$slots,"default")])],512),[[a["vShow"],e.showItems]])],512)),[[c,{blur:e.lostFocus}]])}var Kr=window,Xr=Kr.$,Zr=Object(a["defineComponent"])({props:{menuTitle:String,tooltip:String,showSearch:Boolean,menuTitleChangeOnClick:Boolean},directives:{FocusAnywhereButHere:xt,FocusIf:Lt},emits:["afterSelect"],watch:{menuTitle:function(){this.actualMenuTitle=this.menuTitle}},data:function(){return{showItems:!1,searchTerm:"",actualMenuTitle:this.menuTitle}},methods:{lostFocus:function(){this.showItems=!1},selectItem:function(e){var t=e.target.classList;!t.contains("item")||t.contains("disabled")||t.contains("separator")||(this.menuTitleChangeOnClick&&(this.actualMenuTitle=(e.target.textContent||"").replace(/[\u0000-\u2666]/g,(function(e){return"&#".concat(e.charCodeAt(0),";")}))),this.showItems=!1,Xr(this.$slots.default()[0].el).find(".item").removeClass("active"),t.add("active"),this.$emit("afterSelect"))},onSearchTermKeydown:function(){var e=this;setTimeout((function(){e.searchItems(e.searchTerm)}))},searchItems:function(e){var t=e.toLowerCase();Xr(this.$refs.root).find(".item").each((function(e,n){var r=Xr(n);-1===r.text().toLowerCase().indexOf(t)?r.hide():r.show()}))}}});Zr.render=Qr;var ei=Zr,ti=(jt({component:ei,scope:{menuTitle:{angularJsBind:"@"},tooltip:{angularJsBind:"@"},showSearch:{angularJsBind:"="},menuTitleChangeOnClick:{angularJsBind:"="}},directiveName:"piwikMenudropdown",transclude:!0,events:{"after-select":function(e,t,n){setTimeout((function(){n.$apply()}),0)}}}),{ref:"root"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Wr(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",qr,null,512)}var Jr=1,Gr=window,zr=Gr.$,Yr=Object(a["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(a["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var i=r.length?r:t;i.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function i(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return o(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function o(e,t,n){var r,a=e.parent(),o=a.children("td");if(a.is(":first-child")){var l=a.children("td:not(.ui-datepicker-other-month)").first();return r=i(l,t,n),r.setDate(o.index(e)-o.index(l)+1),r}var c=a.children("td:not(.ui-datepicker-other-month)").last();return r=i(c,t,n),r.setDate(r.getDate()+o.index(e)-o.index(c)),r}function l(){var e=zr(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),i=parseInt(t.attr("data-year"),10);return[r,i]}function c(){var e=zr(n.value),t=e.find(".ui-datepicker-calendar"),a=l(),o=t.find("td"),c=o.first(),s=i(c,a[0],a[1]);o.each((function(){r(zr(this),s),s.setDate(s.getDate()+1)}))}function s(){if(!e.viewDate)return!1;var t;if("string"===typeof e.viewDate)try{t=P(e.viewDate)}catch(a){return!1}else t=e.viewDate;var r=zr(n.value),i=l();return(i[0]!==t.getMonth()||i[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=zr(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=zr(n.value),r=e.stepMonths||Jr;if(t.datepicker("option","stepMonths")===r)return!1;var i=zr(".ui-datepicker-month",t).val(),a=zr(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(a,i)),u(),!0}function p(){var t=zr(n.value),r=t.find(".ui-datepicker-month")[0];r&&(r.disabled=e.disableMonthDropdown)}function m(){if(zr(this).hasClass("ui-state-hover")){var e=zr(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function f(){p(),c()}return Object(a["watch"])((function(){return Object.assign({},e)}),(function(e,t){var n=!1;[function(e){return e.selectedDateStart},function(e){return e.selectedDateEnd},function(e){return e.highlightedDateStart},function(e){return e.highlightedDateEnd}].forEach((function(r){if(!n){var i=r(e),a=r(t);!i&&a&&(n=!0),i&&!a&&(n=!0),i&&a&&i.getTime()!==a.getTime()&&(n=!0)}})),e.viewDate!==t.viewDate&&s()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.disableMonthDropdown!==t.disableMonthDropdown&&p(),n&&c()})),Object(a["onMounted"])((function(){var r=zr(n.value),a=e.options||{},o=Object.assign(Object.assign(Object.assign({},S.getBaseDatePickerOptions()),a),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(o),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&c()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=zr(this),r=i(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){c()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",m),r.on("click",(function(e){e.preventDefault();var t=zr(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&f()})),r.on("click","td[data-month]",(function(e){var n=zr(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),i=parseInt(n.attr("data-year"),10),a=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(i,r,a)})}));var h=d();s(),p(),h||u(),c()})),{root:n}}});Yr.render=Wr;var Qr=Yr,Kr=(gt({component:Qr,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,i,a,o){o()},"cell-hover-leave":function(e,t,n,r,i,a,o){o()},"date-select":function(e,t,n,r,i,a,o){o()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),Xr={id:"calendarRangeTo"};
+ */function ni(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ti,null,512)}var ri=1,ii=window,ai=ii.$,oi=Object(a["defineComponent"])({props:{selectedDateStart:Date,selectedDateEnd:Date,highlightedDateStart:Date,highlightedDateEnd:Date,viewDate:[String,Date],stepMonths:Number,disableMonthDropdown:Boolean,options:Object},emits:["cellHover","cellHoverLeave","dateSelect"],setup:function(e,t){var n=Object(a["ref"])(null);function r(t,n){var r=t.children("a");if(e.selectedDateStart&&e.selectedDateEnd&&n>=e.selectedDateStart&&n<=e.selectedDateEnd?t.addClass("ui-datepicker-current-period"):t.removeClass("ui-datepicker-current-period"),e.highlightedDateStart&&e.highlightedDateEnd&&n>=e.highlightedDateStart&&n<=e.highlightedDateEnd){var i=r.length?r:t;i.addClass("ui-state-hover")}else t.removeClass("ui-state-hover"),r.removeClass("ui-state-hover")}function i(e,t,n){if(e.hasClass("ui-datepicker-other-month"))return o(e,t,n);var r=parseInt(e.children("a,span").text(),10);return new Date(n,t,r)}function o(e,t,n){var r,a=e.parent(),o=a.children("td");if(a.is(":first-child")){var l=a.children("td:not(.ui-datepicker-other-month)").first();return r=i(l,t,n),r.setDate(o.index(e)-o.index(l)+1),r}var c=a.children("td:not(.ui-datepicker-other-month)").last();return r=i(c,t,n),r.setDate(r.getDate()+o.index(e)-o.index(c)),r}function l(){var e=ai(n.value),t=e.find("td[data-month]"),r=parseInt(t.attr("data-month"),10),i=parseInt(t.attr("data-year"),10);return[r,i]}function c(){var e=ai(n.value),t=e.find(".ui-datepicker-calendar"),a=l(),o=t.find("td"),c=o.first(),s=i(c,a[0],a[1]);o.each((function(){r(ai(this),s),s.setDate(s.getDate()+1)}))}function s(){if(!e.viewDate)return!1;var t;if("string"===typeof e.viewDate)try{t=P(e.viewDate)}catch(a){return!1}else t=e.viewDate;var r=ai(n.value),i=l();return(i[0]!==t.getMonth()||i[1]!==t.getFullYear())&&(r.datepicker("setDate",t),!0)}function u(){var e=ai(n.value);e.find("td[data-event]").off("click"),e.find(".ui-state-active").removeClass("ui-state-active"),e.find(".ui-datepicker-current-day").removeClass("ui-datepicker-current-day"),e.find(".ui-datepicker-prev,.ui-datepicker-next").attr("href","")}function d(){var t=ai(n.value),r=e.stepMonths||ri;if(t.datepicker("option","stepMonths")===r)return!1;var i=ai(".ui-datepicker-month",t).val(),a=ai(".ui-datepicker-year",t).val();return t.datepicker("option","stepMonths",r).datepicker("setDate",new Date(a,i)),u(),!0}function p(){var t=ai(n.value),r=t.find(".ui-datepicker-month")[0];r&&(r.disabled=e.disableMonthDropdown)}function m(){if(ai(this).hasClass("ui-state-hover")){var e=ai(this).parent(),t=e.parent();e.is(":first-child")?t.find("a").first().click():t.find("a").last().click()}}function f(){p(),c()}return Object(a["watch"])((function(){return Object.assign({},e)}),(function(e,t){var n=!1;[function(e){return e.selectedDateStart},function(e){return e.selectedDateEnd},function(e){return e.highlightedDateStart},function(e){return e.highlightedDateEnd}].forEach((function(r){if(!n){var i=r(e),a=r(t);!i&&a&&(n=!0),i&&!a&&(n=!0),i&&a&&i.getTime()!==a.getTime()&&(n=!0)}})),e.viewDate!==t.viewDate&&s()&&(n=!0),e.stepMonths!==t.stepMonths&&d(),e.disableMonthDropdown!==t.disableMonthDropdown&&p(),n&&c()})),Object(a["onMounted"])((function(){var r=ai(n.value),a=e.options||{},o=Object.assign(Object.assign(Object.assign({},S.getBaseDatePickerOptions()),a),{},{onChangeMonthYear:function(){setTimeout((function(){u()}))}});r.datepicker(o),r.on("mouseover","tbody td a",(function(e){e.originalEvent&&c()})),r.on("mouseenter","tbody td",(function(){var e=l(),n=ai(this),r=i(n,e[0],e[1]);t.emit("cellHover",{date:r,$cell:n})})),r.on("mouseout","tbody td a",(function(){c()})),r.on("mouseleave","table",(function(){return t.emit("cellHoverLeave")})).on("mouseenter","thead",(function(){return t.emit("cellHoverLeave")})),r.on("click","tbody td.ui-datepicker-other-month",m),r.on("click",(function(e){e.preventDefault();var t=ai(e.target).closest("a");(t.is(".ui-datepicker-next")||t.is(".ui-datepicker-prev"))&&f()})),r.on("click","td[data-month]",(function(e){var n=ai(e.target).closest("td"),r=parseInt(n.attr("data-month"),10),i=parseInt(n.attr("data-year"),10),a=parseInt(n.children("a,span").text(),10);t.emit("dateSelect",{date:new Date(i,r,a)})}));var h=d();s(),p(),h||u(),c()})),{root:n}}});oi.render=ni;var li=oi,ci=(jt({component:li,scope:{selectedDateStart:{angularJsBind:"<"},selectedDateEnd:{angularJsBind:"<"},highlightedDateStart:{angularJsBind:"<"},highlightedDateEnd:{angularJsBind:"<"},viewDate:{angularJsBind:"<"},stepMonths:{angularJsBind:"<"},disableMonthDropdown:{angularJsBind:"<"},options:{angularJsBind:"<"},cellHover:{angularJsBind:"&"},cellHoverLeave:{angularJsBind:"&"},dateSelect:{angularJsBind:"&"}},directiveName:"piwikDatePicker",events:{"cell-hover":function(e,t,n,r,i,a,o){o()},"cell-hover-leave":function(e,t,n,r,i,a,o){o()},"date-select":function(e,t,n,r,i,a,o){o()}},$inject:["$timeout"]}),{id:"calendarRangeFrom"}),si={id:"calendarRangeTo"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Zr(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",Kr,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onKeydown:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.startDateText]])]),Object(a["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(a["createElementVNode"])("div",Xr,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onKeydown:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.endDateText]])]),Object(a["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])])}var ei="YYYY-MM-DD",ti=Object(a["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:Qr},data:function(){var e=null;try{this.startDate&&(e=P(this.startDate))}catch(n){}var t=null;try{this.endDate&&(t=P(this.endDate))}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate,startDateInvalid:!1,endDateInvalid:!1}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){var n=this;setTimeout((function(){"from"===e?n.setStartRangeDateFromStr(t.target.value):n.setEndRangeDateFromStr(t.target.value)}))},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){this.startDateInvalid=!0;var t=null;try{e&&e.length===ei.length&&(t=P(e))}catch(n){}t&&(this.fromPickerSelectedDates=[t,t],this.startDateInvalid=!1,this.rangeChanged())},setEndRangeDateFromStr:function(e){this.endDateInvalid=!0;var t=null;try{e&&e.length===ei.length&&(t=P(e))}catch(n){}t&&(this.toPickerSelectedDates=[t,t],this.endDateInvalid=!1,this.rangeChanged())},rangeChanged:function(){this.$emit("rangeChange",{start:this.fromPickerSelectedDates[0]?E(this.fromPickerSelectedDates[0]):null,end:this.toPickerSelectedDates[0]?E(this.toPickerSelectedDates[0]):null})}}});ti.render=Zr;var ni=ti;
+ */function ui(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createElementVNode"])("div",ci,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeFrom"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarFrom",name:"inputCalendarFrom",class:"browser-default","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.startDateText=t}),onKeydown:t[1]||(t[1]=function(t){return e.onRangeInputChanged("from",t)}),onKeyup:t[2]||(t[2]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.startDateText]])]),Object(a["createVNode"])(l,{id:"calendarFrom","view-date":e.startDate,"selected-date-start":e.fromPickerSelectedDates[0],"selected-date-end":e.fromPickerSelectedDates[1],"highlighted-date-start":e.fromPickerHighlightedDates[0],"highlighted-date-end":e.fromPickerHighlightedDates[1],onDateSelect:t[3]||(t[3]=function(t){return e.setStartRangeDate(t.date)}),onCellHover:t[4]||(t[4]=function(t){return e.fromPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[5]||(t[5]=function(t){return e.fromPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])]),Object(a["createElementVNode"])("div",si,[Object(a["createElementVNode"])("h6",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_DateRangeTo"))+" ",1),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",id:"inputCalendarTo",name:"inputCalendarTo",class:"browser-default","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.endDateText=t}),onKeydown:t[7]||(t[7]=function(t){return e.onRangeInputChanged("to",t)}),onKeyup:t[8]||(t[8]=function(t){return e.handleEnterPress(t)})},null,544),[[a["vModelText"],e.endDateText]])]),Object(a["createVNode"])(l,{id:"calendarTo","view-date":e.endDate,"selected-date-start":e.toPickerSelectedDates[0],"selected-date-end":e.toPickerSelectedDates[1],"highlighted-date-start":e.toPickerHighlightedDates[0],"highlighted-date-end":e.toPickerHighlightedDates[1],onDateSelect:t[9]||(t[9]=function(t){return e.setEndRangeDate(t.date)}),onCellHover:t[10]||(t[10]=function(t){return e.toPickerHighlightedDates=e.getNewHighlightedDates(t.date,t.$cell)}),onCellHoverLeave:t[11]||(t[11]=function(t){return e.toPickerHighlightedDates=[null,null]})},null,8,["view-date","selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end"])])])}var di="YYYY-MM-DD",pi=Object(a["defineComponent"])({props:{startDate:String,endDate:String},components:{DatePicker:li},data:function(){var e=null;try{this.startDate&&(e=P(this.startDate))}catch(n){}var t=null;try{this.endDate&&(t=P(this.endDate))}catch(n){}return{fromPickerSelectedDates:[e,e],toPickerSelectedDates:[t,t],fromPickerHighlightedDates:[null,null],toPickerHighlightedDates:[null,null],startDateText:this.startDate,endDateText:this.endDate,startDateInvalid:!1,endDateInvalid:!1}},emits:["rangeChange","submit"],watch:{startDate:function(){this.startDateText=this.startDate,this.setStartRangeDateFromStr(this.startDate)},endDate:function(){this.endDateText=this.endDate,this.setEndRangeDateFromStr(this.endDate)}},mounted:function(){this.rangeChanged()},methods:{setStartRangeDate:function(e){this.fromPickerSelectedDates=[e,e],this.rangeChanged()},setEndRangeDate:function(e){this.toPickerSelectedDates=[e,e],this.rangeChanged()},onRangeInputChanged:function(e,t){var n=this;setTimeout((function(){"from"===e?n.setStartRangeDateFromStr(t.target.value):n.setEndRangeDateFromStr(t.target.value)}))},getNewHighlightedDates:function(e,t){return t.hasClass("ui-datepicker-unselectable")?null:[e,e]},handleEnterPress:function(e){13===e.keyCode&&this.$emit("submit",{start:this.startDate,end:this.endDate})},setStartRangeDateFromStr:function(e){this.startDateInvalid=!0;var t=null;try{e&&e.length===di.length&&(t=P(e))}catch(n){}t&&(this.fromPickerSelectedDates=[t,t],this.startDateInvalid=!1,this.rangeChanged())},setEndRangeDateFromStr:function(e){this.endDateInvalid=!0;var t=null;try{e&&e.length===di.length&&(t=P(e))}catch(n){}t&&(this.toPickerSelectedDates=[t,t],this.endDateInvalid=!1,this.rangeChanged())},rangeChanged:function(){this.$emit("rangeChange",{start:this.fromPickerSelectedDates[0]?E(this.fromPickerSelectedDates[0]):null,end:this.toPickerSelectedDates[0]?E(this.toPickerSelectedDates[0]):null})}}});pi.render=ui;var mi=pi;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:ni,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function ri(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var ii=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay),ai=new Date(S.maxDateYear,S.maxDateMonth-1,S.maxDateDay),oi=Object(a["defineComponent"])({props:{period:{type:String,required:!0},date:[String,Date]},components:{DatePicker:Qr},emits:["select"],setup:function(e,t){var n=Object(a["ref"])(e.date),r=Object(a["ref"])([null,null]),i=Object(a["ref"])([null,null]);function o(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=ii<n[0]?n[0]:ii,n[1]=ai>n[1]?n[1]:ai,n}function l(t,n){var r=t<ii||t>ai,a=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);i.value=r||a?[null,null]:o(t)}function c(){i.value=[null,null]}function s(e){t.emit("select",{date:e})}function u(){if(!e.period||!e.date)return r.value=[null,null],void(n.value=null);r.value=o(e.date),n.value=P(e.date)}return Object(a["watch"])(e,u),u(),{selectedDates:r,highlightedDates:i,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:c,onDateSelected:s}}});oi.render=ri;var li=oi,ci=(gt({component:li,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),["value","name"]),si=["title"],ui=["textContent"],di={key:1,class:"placeholder"},pi={class:"dropdown"},mi={class:"custom_select_search"},fi=["placeholder"],hi={key:0},gi={class:"custom_select_container"},vi=["onClick"],bi=["innerHTML","href","title"],yi={class:"ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all\n siteSelect"},wi={class:"ui-menu-item"},Oi={class:"ui-corner-all",tabindex:"-1"},ji={key:1};
+ */jt({component:mi,scope:{startDate:{angularJsBind:"<"},endDate:{angularJsBind:"<"},rangeChange:{angularJsBind:"&"},submit:{angularJsBind:"&"}},directiveName:"piwikDateRangePicker",restrict:"E"});function fi(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DatePicker");return Object(a["openBlock"])(),Object(a["createBlock"])(l,{"selected-date-start":e.selectedDates[0],"selected-date-end":e.selectedDates[1],"highlighted-date-start":e.highlightedDates[0],"highlighted-date-end":e.highlightedDates[1],"view-date":e.viewDate,"step-months":"year"===e.period?12:1,"disable-month-dropdown":"year"===e.period,onCellHover:t[0]||(t[0]=function(t){return e.onHoverNormalCell(t.date,t.$cell)}),onCellHoverLeave:t[1]||(t[1]=function(t){return e.onHoverLeaveNormalCells()}),onDateSelect:t[2]||(t[2]=function(t){return e.onDateSelected(t.date)})},null,8,["selected-date-start","selected-date-end","highlighted-date-start","highlighted-date-end","view-date","step-months","disable-month-dropdown"])}var hi=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay),gi=new Date(S.maxDateYear,S.maxDateMonth-1,S.maxDateDay),vi=Object(a["defineComponent"])({props:{period:{type:String,required:!0},date:[String,Date]},components:{DatePicker:li},emits:["select"],setup:function(e,t){var n=Object(a["ref"])(e.date),r=Object(a["ref"])([null,null]),i=Object(a["ref"])([null,null]);function o(t){var n=p.get(e.period).parse(t).getDateRange();return n[0]=hi<n[0]?n[0]:hi,n[1]=gi>n[1]?n[1]:gi,n}function l(t,n){var r=t<hi||t>gi,a=n.hasClass("ui-datepicker-other-month")&&("month"===e.period||"day"===e.period);i.value=r||a?[null,null]:o(t)}function c(){i.value=[null,null]}function s(e){t.emit("select",{date:e})}function u(){if(!e.period||!e.date)return r.value=[null,null],void(n.value=null);r.value=o(e.date),n.value=P(e.date)}return Object(a["watch"])(e,u),u(),{selectedDates:r,highlightedDates:i,viewDate:n,onHoverNormalCell:l,onHoverLeaveNormalCells:c,onDateSelected:s}}});vi.render=fi;var bi=vi,yi=(jt({component:bi,scope:{period:{angularJsBind:"<"},date:{angularJsBind:"<"},select:{angularJsBind:"&"}},directiveName:"piwikPeriodDatePicker",restrict:"E"}),["value","name"]),wi=["title"],Oi=["textContent"],ji={key:1,class:"placeholder"},ki={class:"dropdown"},Si={class:"custom_select_search"},Ci=["placeholder"],Ei={key:0},Di={class:"custom_select_container"},Pi=["onClick"],Vi=["innerHTML","href","title"],Ni={class:"ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all\n siteSelect"},Ti={class:"ui-menu-item"},Ai={class:"ui-corner-all",tabindex:"-1"},Ii={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 ki(e,t,n,r,i,o){var l,c,s,u,d=Object(a["resolveComponent"])("AllSitesLink"),p=Object(a["resolveDirective"])("focus-if"),m=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{key:0,type:"hidden",value:null===(l=e.modelValue)||void 0===l?void 0:l.id,name:e.name},null,8,ci)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=function(){return e.onClickSelector&&e.onClickSelector.apply(e,arguments)}),onKeydown:t[1]||(t[1]=function(t){return e.onPressEnter(t)}),href:"javascript:void(0)",class:Object(a["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(["icon icon-arrow-bottom",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(a["createElementVNode"])("span",null,[null!==(c=e.modelValue)&&void 0!==c&&c.name||!e.placeholder?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,textContent:Object(a["toDisplayString"])((null===(s=e.modelValue)||void 0===s?void 0:s.name)||e.firstSiteName)},null,8,ui)):Object(a["createCommentVNode"])("",!0),null!==(u=e.modelValue)&&void 0!==u&&u.name||!e.placeholder?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",di,Object(a["toDisplayString"])(e.placeholder),1))])],42,si),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",pi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",mi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=function(t){e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,fi),[[a["vModelText"],e.searchTerm],[p,{},e.shouldFocusOnSearch]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=function(t){e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[a["vShow"],e.searchTerm]])],512),[[a["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",hi,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",gi,[Object(a["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=function(t){return e.showSitesList=!1})},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(n,r){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{onClick:function(t){return e.switchSite(Object.assign(Object.assign({},n),{},{id:n.idsite}),t)},key:r},[Object(a["createElementVNode"])("a",{onClick:t[6]||(t[6]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.getMatchedSiteName(n.name)),tabindex:"4",href:e.getUrlForSiteId(n.idsite),title:n.name},null,8,bi)],8,vi)),[[a["vShow"],!(!e.showSelectedSite&&e.activeSiteId===n.idsite)]])})),128))]),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",yi,[Object(a["createElementVNode"])("li",wi,[Object(a["createElementVNode"])("a",Oi,Object(a["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[a["vShow"],!e.sites.length&&e.searchTerm]])]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ji,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showSitesList]])],2)),[[m,{blur:e.onBlur}]])}var Si=["innerHTML","href"];function Ci(e,t,n,r,i,o){var l=this;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{onClick:t[1]||(t[1]=function(e){return l.onClick(e)}),class:"custom_select_all"},[Object(a["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,Si)])}var Ei=Object(a["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick:function(e){this.$emit("click",e)}}});Ei.render=Ci;var Di=Ei;function Pi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Vi(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Ni(e,t,n){return t&&Vi(e.prototype,t),n&&Vi(e,n),e}function Ti(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function xi(e,t,n,r,i,o){var l,c,s,u,d=Object(a["resolveComponent"])("AllSitesLink"),p=Object(a["resolveDirective"])("focus-if"),m=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["siteSelector piwikSelector borderedControl",{expanded:e.showSitesList,disabled:!e.hasMultipleSites}])},[e.name?(Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{key:0,type:"hidden",value:null===(l=e.modelValue)||void 0===l?void 0:l.id,name:e.name},null,8,yi)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("a",{ref:"selectorLink",onClick:t[0]||(t[0]=function(){return e.onClickSelector&&e.onClickSelector.apply(e,arguments)}),onKeydown:t[1]||(t[1]=function(t){return e.onPressEnter(t)}),href:"javascript:void(0)",class:Object(a["normalizeClass"])([{loading:e.isLoading},"title"]),tabindex:"4",title:e.selectorLinkTitle},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])(["icon icon-arrow-bottom",{iconHidden:e.isLoading,collapsed:!e.showSitesList}])},null,2),Object(a["createElementVNode"])("span",null,[null!==(c=e.modelValue)&&void 0!==c&&c.name||!e.placeholder?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,textContent:Object(a["toDisplayString"])((null===(s=e.modelValue)||void 0===s?void 0:s.name)||e.firstSiteName)},null,8,Oi)):Object(a["createCommentVNode"])("",!0),null!==(u=e.modelValue)&&void 0!==u&&u.name||!e.placeholder?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",ji,Object(a["toDisplayString"])(e.placeholder),1))])],42,wi),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",ki,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Si,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"text",onClick:t[2]||(t[2]=function(t){e.searchTerm="",e.loadInitialSites()}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),tabindex:"4",class:"websiteSearch inp browser-default",placeholder:e.translate("General_Search")},null,8,Ci),[[a["vModelText"],e.searchTerm],[p,{},e.shouldFocusOnSearch]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("img",{title:"Clear",onClick:t[4]||(t[4]=function(t){e.searchTerm="",e.loadInitialSites()}),class:"reset",src:"plugins/CoreHome/images/reset_search.png"},null,512),[[a["vShow"],e.searchTerm]])],512),[[a["vShow"],e.autocompleteMinSites<=e.sites.length||e.searchTerm]]),"top"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ei,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[5]||(t[5]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Di,[Object(a["createElementVNode"])("ul",{class:"custom_select_ul_list",onClick:t[7]||(t[7]=function(t){return e.showSitesList=!1})},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(n,r){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{onClick:function(t){return e.switchSite(Object.assign(Object.assign({},n),{},{id:n.idsite}),t)},key:r},[Object(a["createElementVNode"])("a",{onClick:t[6]||(t[6]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.getMatchedSiteName(n.name)),tabindex:"4",href:e.getUrlForSiteId(n.idsite),title:n.name},null,8,Vi)],8,Pi)),[[a["vShow"],!(!e.showSelectedSite&&e.activeSiteId===n.idsite)]])})),128))]),Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",Ni,[Object(a["createElementVNode"])("li",Ti,[Object(a["createElementVNode"])("a",Ai,Object(a["toDisplayString"])(e.translate("SitesManager_NotFound")+" "+e.searchTerm),1)])],512),[[a["vShow"],!e.sites.length&&e.searchTerm]])]),"bottom"===e.allSitesLocation&&e.showAllSitesItem?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ii,[Object(a["createVNode"])(d,{href:e.urlAllSites,"all-sites-text":e.allSitesText,onClick:t[8]||(t[8]=function(t){return e.onAllSitesClick(t)})},null,8,["href","all-sites-text"])])):Object(a["createCommentVNode"])("",!0)],512),[[a["vShow"],e.showSitesList]])],2)),[[m,{blur:e.onBlur}]])}var Bi=["innerHTML","href"];function Mi(e,t,n,r,i,o){var l=this;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{onClick:t[1]||(t[1]=function(e){return l.onClick(e)}),class:"custom_select_all"},[Object(a["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(e){return e.preventDefault()}),innerHTML:e.$sanitize(e.allSitesText),tabindex:"4",href:e.href},null,8,Bi)])}var Li=Object(a["defineComponent"])({props:{href:String,allSitesText:String},emits:["click"],methods:{onClick:function(e){this.$emit("click",e)}}});Li.render=Mi;var Ri=Li;function Fi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function $i(e,t,n){return t&&_i(e.prototype,t),n&&_i(e,n),e}function Hi(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 Ai=function(){function e(){var t=this;Pi(this,e),Ti(this,"state",Object(a["reactive"])({initialSites:[],isInitialized:!1})),Ti(this,"currentRequestAbort",null),Ti(this,"limitRequest",void 0),Ti(this,"initialSites",Object(a["computed"])((function(){return Object(a["readonly"])(t.state.initialSites)})))}return Ni(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(a["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,null!==t&&(e.state.initialSites=t),t}))}},{key:"loadSite",value:function(e){"all"===e?Ce.updateUrl(Object.assign(Object.assign({},Ce.urlParsed.value),{},{module:"MultiSites",action:"index",date:Ce.parsed.value.date,period:Ce.parsed.value.period})):Ce.updateUrl(Object.assign(Object.assign({},Ce.urlParsed.value),{},{segment:"",idSite:e}),Object.assign(Object.assign({},Ce.hashParsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequestAbort&&this.currentRequestAbort.abort(),this.limitRequest||(this.limitRequest=Je.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,a="SitesManager.getPatternMatchSites";return n&&(a="SitesManager.getSitesWithAdminAccess"),t.currentRequestAbort=new AbortController,Je.fetch({method:a,limit:i,pattern:e},{abortController:t.currentRequestAbort})})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequestAbort=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return Object.assign(Object.assign({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),xi=new Ai,Ii=300;function Bi(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ii;return function(){for(var r=this,i=arguments.length,a=new Array(i),o=0;o<i;o++)a[o]=arguments[o];t&&clearTimeout(t),t=setTimeout((function(){e.call.apply(e,[r].concat(a))}),n)}}var Li=Object(a["defineComponent"])({props:{modelValue:{type:Object,default:function(e){return e.modelValue?e.modelValue:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}},showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:C("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Di},directives:{FocusAnywhereButHere:Pt,FocusIf:Tt},watch:{searchTerm:function(){this.onSearchTermChanged()}},data:function(){return{searchTerm:"",activeSiteId:"".concat(S.idSite),showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(S.config.autocomplete_min_sites,10)}},created:function(){this.searchSite=Bi(this.searchSite)},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.modelValue&&e.modelValue.id||e.hasMultipleSites||!e.sites[0]||e.$emit("update:modelValue",{id:e.sites[0].idsite,name:e.sites[0].name})}));var t=C("CoreHome_ShortcutWebsiteSelector");S.helper.registerShortcut("w",t,(function(t){if(!t.altKey){t.preventDefault?t.preventDefault():t.returnValue=!1;var n=e.$refs.selectorLink;n&&(n.click(),n.focus())}}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?C("CoreHome_ChangeCurrentWebsite",(null===(e=this.modelValue)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return xi.initialSites.value&&xi.initialSites.value.length>1},firstSiteName:function(){var e=xi.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites:function(){var e=Ce.stringify(Object.assign(Object.assign({},Ce.urlParsed.value),{},{module:"MultiSites",action:"index",date:Ce.parsed.value.date,period:Ce.parsed.value.period}));return"?".concat(e)}},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({id:"all",name:this.$props.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.id,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.id&&xi.loadSite(e.id))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return S.helper.htmlEntities(e);var n=S.helper.htmlEntities(e.substring(0,t)),r=S.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return xi.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,xi.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Ce.stringify(Object.assign(Object.assign({},Ce.urlParsed.value),{},{segment:"",idSite:e})),n=Ce.stringify(Object.assign(Object.assign({},Ce.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});Li.render=ki;var Mi=Li;
+ */var Ui=function(){function e(){var t=this;Fi(this,e),Hi(this,"state",Object(a["reactive"])({initialSites:[],isInitialized:!1})),Hi(this,"currentRequestAbort",null),Hi(this,"limitRequest",void 0),Hi(this,"initialSites",Object(a["computed"])((function(){return Object(a["readonly"])(t.state.initialSites)})))}return $i(e,[{key:"loadInitialSites",value:function(){var e=this;return this.state.isInitialized?Promise.resolve(Object(a["readonly"])(this.state.initialSites)):this.searchSite("%").then((function(t){return e.state.isInitialized=!0,null!==t&&(e.state.initialSites=t),t}))}},{key:"loadSite",value:function(e){"all"===e?Ce.updateUrl(Object.assign(Object.assign({},Ce.urlParsed.value),{},{module:"MultiSites",action:"index",date:Ce.parsed.value.date,period:Ce.parsed.value.period})):Ce.updateUrl(Object.assign(Object.assign({},Ce.urlParsed.value),{},{segment:"",idSite:e}),Object.assign(Object.assign({},Ce.hashParsed.value),{},{segment:"",idSite:e}))}},{key:"searchSite",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e?(this.currentRequestAbort&&this.currentRequestAbort.abort(),this.limitRequest||(this.limitRequest=Xe.fetch({method:"SitesManager.getNumWebsitesToDisplayPerPage"})),this.limitRequest.then((function(r){var i=r.value,a="SitesManager.getPatternMatchSites";return n&&(a="SitesManager.getSitesWithAdminAccess"),t.currentRequestAbort=new AbortController,Xe.fetch({method:a,limit:i,pattern:e},{abortController:t.currentRequestAbort})})).then((function(e){return e?t.processWebsitesList(e):null})).finally((function(){t.currentRequestAbort=null}))):this.loadInitialSites()}},{key:"processWebsitesList",value:function(e){var t=e;return t&&t.length?(t=t.map((function(e){return Object.assign(Object.assign({},e),{},{name:e.group?"[".concat(e.group,"] ").concat(e.name):e.name})})),t.sort((function(e,t){return e.name.toLowerCase()<t.name.toLowerCase()?-1:e.name.toLowerCase()>t.name.toLowerCase()?1:0})),t):[]}}]),e}(),qi=new Ui,Wi=300;function Ji(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Wi;return function(){for(var r=this,i=arguments.length,a=new Array(i),o=0;o<i;o++)a[o]=arguments[o];t&&clearTimeout(t),t=setTimeout((function(){e.call.apply(e,[r].concat(a))}),n)}}var Gi=Object(a["defineComponent"])({props:{modelValue:{type:Object,default:function(e){return e.modelValue?e.modelValue:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}},showSelectedSite:{type:Boolean,default:!1},showAllSitesItem:{type:Boolean,default:!0},switchSiteOnSelect:{type:Boolean,default:!0},onlySitesWithAdminAccess:{type:Boolean,default:!1},name:{type:String,default:""},allSitesText:{type:String,default:C("General_MultiSitesSummary")},allSitesLocation:{type:String,default:"bottom"},placeholder:String},emits:["update:modelValue","blur"],components:{AllSitesLink:Ri},directives:{FocusAnywhereButHere:xt,FocusIf:Lt},watch:{searchTerm:function(){this.onSearchTermChanged()}},data:function(){return{searchTerm:"",activeSiteId:"".concat(S.idSite),showSitesList:!1,isLoading:!1,sites:[],autocompleteMinSites:parseInt(S.config.autocomplete_min_sites,10)}},created:function(){this.searchSite=Ji(this.searchSite)},mounted:function(){var e=this;window.initTopControls(),this.loadInitialSites().then((function(){e.modelValue&&e.modelValue.id||e.hasMultipleSites||!e.sites[0]||e.$emit("update:modelValue",{id:e.sites[0].idsite,name:e.sites[0].name})}));var t=C("CoreHome_ShortcutWebsiteSelector");S.helper.registerShortcut("w",t,(function(t){if(!t.altKey){t.preventDefault?t.preventDefault():t.returnValue=!1;var n=e.$refs.selectorLink;n&&(n.click(),n.focus())}}))},computed:{shouldFocusOnSearch:function(){return this.showSitesList&&this.autocompleteMinSites<=this.sites.length||this.searchTerm},selectorLinkTitle:function(){var e;return this.hasMultipleSites?C("CoreHome_ChangeCurrentWebsite",(null===(e=this.modelValue)||void 0===e?void 0:e.name)||this.firstSiteName):""},hasMultipleSites:function(){return qi.initialSites.value&&qi.initialSites.value.length>1},firstSiteName:function(){var e=qi.initialSites.value;return e&&e.length>0?e[0].name:""},urlAllSites:function(){var e=Ce.stringify(Object.assign(Object.assign({},Ce.urlParsed.value),{},{module:"MultiSites",action:"index",date:Ce.parsed.value.date,period:Ce.parsed.value.period}));return"?".concat(e)}},methods:{onSearchTermChanged:function(){this.searchTerm?(this.isLoading=!0,this.searchSite(this.searchTerm)):(this.isLoading=!1,this.loadInitialSites())},onAllSitesClick:function(e){this.switchSite({id:"all",name:this.$props.allSitesText},e),this.showSitesList=!1},switchSite:function(e,t){var n=-1!==navigator.userAgent.indexOf("Mac OS X")?t.metaKey:t.ctrlKey;t&&n&&t.target&&t.target.href?window.open(t.target.href,"_blank"):(this.$emit("update:modelValue",{id:e.id,name:e.name}),this.switchSiteOnSelect&&this.activeSiteId!==e.id&&qi.loadSite(e.id))},onBlur:function(){this.showSitesList=!1,this.$emit("blur")},onClickSelector:function(){this.hasMultipleSites&&(this.showSitesList=!this.showSitesList,this.isLoading||this.searchTerm||this.loadInitialSites())},onPressEnter:function(e){"Enter"===e.key&&(e.preventDefault(),this.showSitesList=!this.showSitesList,this.showSitesList&&!this.isLoading&&this.loadInitialSites())},getMatchedSiteName:function(e){var t=e.toUpperCase().indexOf(this.searchTerm.toUpperCase());if(-1===t||this.isLoading)return S.helper.htmlEntities(e);var n=S.helper.htmlEntities(e.substring(0,t)),r=S.helper.htmlEntities(e.substring(t+this.searchTerm.length));return"".concat(n,'<span class="autocompleteMatched">').concat(this.searchTerm,"</span>").concat(r)},loadInitialSites:function(){var e=this;return qi.loadInitialSites().then((function(t){e.sites=t||[]}))},searchSite:function(e){var t=this;this.isLoading=!0,qi.searchSite(e,this.onlySitesWithAdminAccess).then((function(n){e===t.searchTerm&&n&&(t.sites=n)})).finally((function(){t.isLoading=!1}))},getUrlForSiteId:function(e){var t=Ce.stringify(Object.assign(Object.assign({},Ce.urlParsed.value),{},{segment:"",idSite:e})),n=Ce.stringify(Object.assign(Object.assign({},Ce.hashParsed.value),{},{segment:"",idSite:e}));return"?".concat(t,"#?").concat(n)}}});Gi.render=xi;var zi=Gi;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:Mi,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{default:function(e,t,n){return n.siteid&&n.sitename?{id:n.siteid,name:S.helper.htmlDecode(n.sitename)}:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,a,o){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&o((function(){n.value=e,r.attr("siteid",e.id),r.trigger("change",e),a&&(a.$setViewValue(e),a.$render())}))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i){var o=i;t.$watch("value",(function(t){Object(a["nextTick"])((function(){t!==e.modelValue&&(e.modelValue=t)}))})),r.siteid&&r.sitename?e.modelValue={id:r.siteid,name:S.helper.htmlDecode(r.sitename)}:S.idSite&&(e.modelValue={id:S.idSite,name:S.helper.htmlDecode(S.siteName)}),o&&(o.$setViewValue(e.modelValue),o.$render=function(){Object(a["nextTick"])((function(){Object(a["nextTick"])((function(){window.angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue}))}))})}});
+ */jt({component:zi,require:"?ngModel",scope:{showSelectedSite:{angularJsBind:"="},showAllSitesItem:{angularJsBind:"="},switchSiteOnSelect:{angularJsBind:"="},onlySitesWithAdminAccess:{angularJsBind:"="},name:{angularJsBind:"@"},allSitesText:{angularJsBind:"@"},allSitesLocation:{angularJsBind:"@"},placeholder:{angularJsBind:"@"},modelValue:{default:function(e,t,n){return n.siteid&&n.sitename?{id:n.siteid,name:S.helper.htmlDecode(n.sitename)}:S.idSite?{id:S.idSite,name:S.helper.htmlDecode(S.siteName)}:void 0}}},$inject:["$timeout"],directiveName:"piwikSiteselector",events:{"update:modelValue":function(e,t,n,r,i,a,o){(e&&!t.modelValue||!e&&t.modelValue||e.id!==t.modelValue.id)&&o((function(){n.value=e,r.attr("siteid",e.id),r.trigger("change",e),a&&(a.$setViewValue(e),a.$render())}))},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}},postCreate:function(e,t,n,r,i){var o=i;t.$watch("value",(function(t){Object(a["nextTick"])((function(){t!==e.modelValue&&(e.modelValue=t)}))})),r.siteid&&r.sitename?e.modelValue={id:r.siteid,name:S.helper.htmlDecode(r.sitename)}:S.idSite&&(e.modelValue={id:S.idSite,name:S.helper.htmlDecode(S.siteName)}),o&&(o.$setViewValue(e.modelValue),o.$render=function(){Object(a["nextTick"])((function(){Object(a["nextTick"])((function(){window.angular.isString(o.$viewValue)?e.modelValue=JSON.parse(o.$viewValue):e.modelValue=o.$viewValue}))}))})}});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Fi(){return{get initialSites(){return xi.initialSites.value},loadSite:xi.loadSite.bind(xi),loadInitialSites:function(){return wt(xi.loadInitialSites())},searchSite:function(){return wt(xi.searchSite.apply(xi,arguments))}}}window.angular.module("piwikApp.service").factory("siteSelectorModel",Fi);var Ri={ref:"root",class:"quickAccessInside"},_i=["title"],$i={class:"dropdown"},Hi={class:"no-result"},Ui=["onClick"],qi=["onMouseenter","onClick"],Wi={class:"quickAccessMatomoSearch"},Ji=["onMouseenter","onClick"],Gi=["textContent"],zi={class:"quick-access-category helpCategory"},Yi=["href"];function Qi(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ri,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=function(t){return e.searchActive=!0})},null,544),[[a["vShow"],!(e.searchTerm||e.searchActive)]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=function(t){return e.onKeypress(t)}),onFocus:t[2]||(t[2]=function(t){return e.searchActive=!0}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),type:"text",tabindex:"2",title:e.quickAccessTitle,ref:"input"},null,40,_i),[[a["vModelText"],e.searchTerm],[l,{},e.searchActive]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",$i,[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",Hi,Object(a["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[a["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menuItems,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",{key:t.title},[Object(a["createElementVNode"])("li",{class:"quick-access-category",onClick:function(n){e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(a["toDisplayString"])(t.title),9,Ui),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.items,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:function(n){return e.searchIndex=t.menuIndex},onClick:function(n){return e.selectMenuItem(t.index)},key:t.index},[Object(a["createElementVNode"])("a",null,Object(a["toDisplayString"])(t.name.trim()),1)],42,qi)})),128))])})),128)),Object(a["createElementVNode"])("ul",Wi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(a["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[a["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"no-result"},Object(a["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[a["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(t,n){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:e.numMenuItems+n===e.searchIndex}]),onMouseenter:function(t){return e.searchIndex=e.numMenuItems+n},onClick:function(n){return e.selectSite(t.idsite)},key:t.idsite},[Object(a["createElementVNode"])("a",{textContent:Object(a["toDisplayString"])(t.name)},null,8,Gi)],42,Ji)),[[a["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",zi,Object(a["toDisplayString"])(e.translate("General_HelpResources")),1),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=function(t){return e.searchIndex="help"})},[Object(a["createElementVNode"])("a",{href:"https://matomo.org?s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(a["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,Yi)],34)])],512),[[a["vShow"],e.searchTerm&&e.searchActive]])],512)),[[c,{blur:e.onBlur}]])}function Ki(e){var t=e.getBoundingClientRect(),n=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=n.height()&&t.right<=n.width()}function Xi(e){e&&e.scrollIntoView&&e.scrollIntoView()}var Zi=Object(a["defineComponent"])({directives:{FocusAnywhereButHere:Pt,FocusIf:Tt},watch:{searchActive:function(e){var t=this.$refs.root;if(t&&t.parentElement){var n=t.parentElement.classList;n.toggle("active",e),n.toggle("expanded",e)}}},mounted:function(){var e=this,t=this.$refs.root;t&&t.parentElement&&t.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),S.helper.registerShortcut("f",C("CoreHome_ShortcutSearch"),(function(t){t.altKey||(t.preventDefault(),Xi(e.$refs.root),e.activateSearch())}))},data:function(){var e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created:function(){this.searchMenu=Bi(this.searchMenu.bind(this))},computed:{hasSitesSelector:function(){return!!document.querySelector(".top_controls [piwik-siteselector]")},quickAccessTitle:function(){var e="",t=[C("CoreHome_MenuEntries")];this.hasSegmentSelector&&t.push(C("CoreHome_Segments")),this.hasSitesSelector&&t.push(C("SitesManager_Sites"));while(t.length)e+=t.shift(),t.length>=2?e+=", ":1===t.length&&(e+=" ".concat(C("General_And")," "));return C("CoreHome_QuickAccessTitle",e)}},emits:["itemSelected","blur"],methods:{onKeypress:function(e){var t=this,n=this.searchTerm&&this.searchActive,r=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():r&&n||i&&n?this.deactivateSearch():setTimeout((function(){t.searchActive=!0,t.searchMenu(t.searchTerm)}))},highlightPreviousItem:function(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem:function(){var e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem:function(){var e=this,t=this.getCurrentlySelectedElement();t&&setTimeout((function(){t.click(),e.$emit("itemSelected",t)}),20)},deactivateSearch:function(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!Ki(e)&&Xi(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},a=[],o=function(e){var t=Object.assign({},e);r+=1,t.menuIndex=r;var n=t.category;n in i||(a.push({title:n,items:[]}),i[n]=a.length-1);var o=i[n];a[o].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,xi.searchSite(n).then((function(e){e&&(t.sites=e)})).finally((function(){t.isLoading=!1})));var l=function(e){return-1!==e.name.toLowerCase().indexOf(n)||-1!==e.category.toLowerCase().indexOf(n)};null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());var c=this.topMenuItems.filter(l),s=this.leftMenuItems.filter(l),u=this.segmentItems.filter(l);c.forEach(o),s.forEach(o),u.forEach(o),this.numMenuItems=c.length+s.length+u.length,this.menuItems=a},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){xi.loadSite(e)},selectMenuItem:function(e){var t=document.querySelector("[quick_access='".concat(e,"']"));if(t){this.deactivateSearch();var n=t.getAttribute("href");if(n&&n.length>10&&t&&t.click)try{t.click()}catch(r){window.$(t).click()}else window.$(t).click()}},onBlur:function(){this.searchActive=!1,this.$emit("blur")},activateSearch:function(){this.searchActive=!0},getTopMenuItems:function(){var e=this,t=C("CoreHome_Menu"),n=[];return document.querySelectorAll("nav .sidenav li > a").forEach((function(r){var i,a,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o||(o=null===(a=r.getAttribute("title"))||void 0===a?void 0:a.trim());o&&(n.push({name:o,index:e.menuIndexCounter+=1,category:t}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n},getLeftMenuItems:function(){var e=this,t=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach((function(n){var r,i=window.$(n).find("> .item"),a=(null===(r=i[0])||void 0===r?void 0:r.innerText.trim())||"";a&&-1!==a.lastIndexOf("\n")&&(a=a.substr(0,a.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,r){var i,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o&&(t.push({name:o,category:a,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))}))})),t},getSegmentItems:function(){var e=this;if(!this.hasSegmentSelector)return[];var t=C("CoreHome_Segments"),n=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach((function(r){var i,a,o=null===(i=r.querySelector(".segname"))||void 0===i||null===(a=i.textContent)||void 0===a?void 0:a.trim();o&&(n.push({name:o,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});Zi.render=Qi;var ea=Zi;
+function Yi(){return{get initialSites(){return qi.initialSites.value},loadSite:qi.loadSite.bind(qi),loadInitialSites:function(){return Et(qi.loadInitialSites())},searchSite:function(){return Et(qi.searchSite.apply(qi,arguments))}}}window.angular.module("piwikApp.service").factory("siteSelectorModel",Yi);var Qi={ref:"root",class:"quickAccessInside"},Ki=["title"],Xi={class:"dropdown"},Zi={class:"no-result"},ea=["onClick"],ta=["onMouseenter","onClick"],na={class:"quickAccessMatomoSearch"},ra=["onMouseenter","onClick"],ia=["textContent"],aa={class:"quick-access-category helpCategory"},oa=["href"];function la(e,t,n,r,i,o){var l=Object(a["resolveDirective"])("focus-if"),c=Object(a["resolveDirective"])("focus-anywhere-but-here");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-search",onMouseenter:t[0]||(t[0]=function(t){return e.searchActive=!0})},null,544),[[a["vShow"],!(e.searchTerm||e.searchActive)]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"s",onKeydown:t[1]||(t[1]=function(t){return e.onKeypress(t)}),onFocus:t[2]||(t[2]=function(t){return e.searchActive=!0}),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.searchTerm=t}),type:"text",tabindex:"2",title:e.quickAccessTitle,ref:"input"},null,40,Ki),[[a["vModelText"],e.searchTerm],[l,{},e.searchActive]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Xi,[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",Zi,Object(a["toDisplayString"])(e.translate("General_SearchNoResults")),1)],512),[[a["vShow"],!(e.numMenuItems>0||e.sites.length)]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menuItems,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("ul",{key:t.title},[Object(a["createElementVNode"])("li",{class:"quick-access-category",onClick:function(n){e.searchTerm=t.title,e.searchMenu(e.searchTerm)}},Object(a["toDisplayString"])(t.title),9,ea),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.items,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:t.menuIndex===e.searchIndex}]),onMouseenter:function(n){return e.searchIndex=t.menuIndex},onClick:function(n){return e.selectMenuItem(t.index)},key:t.index},[Object(a["createElementVNode"])("a",null,Object(a["toDisplayString"])(t.name.trim()),1)],42,ta)})),128))])})),128)),Object(a["createElementVNode"])("ul",na,[Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"quick-access-category websiteCategory"},Object(a["toDisplayString"])(e.translate("SitesManager_Sites")),513),[[a["vShow"],e.hasSitesSelector&&e.sites.length||e.isLoading]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("li",{class:"no-result"},Object(a["toDisplayString"])(e.translate("MultiSites_LoadingWebsites")),513),[[a["vShow"],e.hasSitesSelector&&e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sites,(function(t,n){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["result",{selected:e.numMenuItems+n===e.searchIndex}]),onMouseenter:function(t){return e.searchIndex=e.numMenuItems+n},onClick:function(n){return e.selectSite(t.idsite)},key:t.idsite},[Object(a["createElementVNode"])("a",{textContent:Object(a["toDisplayString"])(t.name)},null,8,ia)],42,ra)),[[a["vShow"],e.hasSitesSelector&&!e.isLoading]])})),128))]),Object(a["createElementVNode"])("ul",null,[Object(a["createElementVNode"])("li",aa,Object(a["toDisplayString"])(e.translate("General_HelpResources")),1),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{selected:"help"===e.searchIndex},"quick-access-help"]),onMouseenter:t[4]||(t[4]=function(t){return e.searchIndex="help"})},[Object(a["createElementVNode"])("a",{href:"https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=".concat(encodeURIComponent(e.searchTerm)),target:"_blank"},Object(a["toDisplayString"])(e.translate("CoreHome_SearchOnMatomo",e.searchTerm)),9,oa)],34)])],512),[[a["vShow"],e.searchTerm&&e.searchActive]])],512)),[[c,{blur:e.onBlur}]])}function ca(e){var t=e.getBoundingClientRect(),n=window.$(window);return t.top>=0&&t.left>=0&&t.bottom<=n.height()&&t.right<=n.width()}function sa(e){e&&e.scrollIntoView&&e.scrollIntoView()}var ua=Object(a["defineComponent"])({directives:{FocusAnywhereButHere:xt,FocusIf:Lt},watch:{searchActive:function(e){var t=this.$refs.root;if(t&&t.parentElement){var n=t.parentElement.classList;n.toggle("active",e),n.toggle("expanded",e)}}},mounted:function(){var e=this,t=this.$refs.root;t&&t.parentElement&&t.parentElement.classList.add("quick-access","piwikSelector"),"undefined"!==typeof window.initTopControls&&window.initTopControls&&window.initTopControls(),S.helper.registerShortcut("f",C("CoreHome_ShortcutSearch"),(function(t){t.altKey||(t.preventDefault(),sa(e.$refs.root),e.activateSearch())}))},data:function(){var e=!!document.querySelector(".segmentEditorPanel");return{menuItems:[],numMenuItems:0,searchActive:!1,searchTerm:"",searchIndex:0,menuIndexCounter:-1,topMenuItems:null,leftMenuItems:null,segmentItems:null,hasSegmentSelector:e,sites:[],isLoading:!1}},created:function(){this.searchMenu=Ji(this.searchMenu.bind(this))},computed:{hasSitesSelector:function(){return!!document.querySelector(".top_controls [piwik-siteselector]")},quickAccessTitle:function(){var e="",t=[C("CoreHome_MenuEntries")];this.hasSegmentSelector&&t.push(C("CoreHome_Segments")),this.hasSitesSelector&&t.push(C("SitesManager_Sites"));while(t.length)e+=t.shift(),t.length>=2?e+=", ":1===t.length&&(e+=" ".concat(C("General_And")," "));return C("CoreHome_QuickAccessTitle",e)}},emits:["itemSelected","blur"],methods:{onKeypress:function(e){var t=this,n=this.searchTerm&&this.searchActive,r=9===e.which,i=27===e.which;38===e.which?(this.highlightPreviousItem(),e.preventDefault()):40===e.which?(this.highlightNextItem(),e.preventDefault()):13===e.which?this.clickQuickAccessMenuItem():r&&n||i&&n?this.deactivateSearch():setTimeout((function(){t.searchActive=!0,t.searchMenu(t.searchTerm)}))},highlightPreviousItem:function(){this.searchIndex-1<0?this.searchIndex=0:this.searchIndex-=1,this.makeSureSelectedItemIsInViewport()},highlightNextItem:function(){var e=this.$refs.root.querySelectorAll("li.result").length;e<=this.searchIndex+1?this.searchIndex=e-1:this.searchIndex+=1,this.makeSureSelectedItemIsInViewport()},clickQuickAccessMenuItem:function(){var e=this,t=this.getCurrentlySelectedElement();t&&setTimeout((function(){t.click(),e.$emit("itemSelected",t)}),20)},deactivateSearch:function(){this.searchTerm="",this.searchActive=!1,this.$refs.input&&this.$refs.input.blur()},makeSureSelectedItemIsInViewport:function(){var e=this.getCurrentlySelectedElement();e&&!ca(e)&&sa(e)},getCurrentlySelectedElement:function(){var e=this.$refs.root.querySelectorAll("li.result");if(e&&e.length&&e.item(this.searchIndex))return e.item(this.searchIndex)},searchMenu:function(e){var t=this,n=e.toLowerCase(),r=-1,i={},a=[],o=function(e){var t=Object.assign({},e);r+=1,t.menuIndex=r;var n=t.category;n in i||(a.push({title:n,items:[]}),i[n]=a.length-1);var o=i[n];a[o].items.push(t)};this.resetSearchIndex(),this.hasSitesSelector&&(this.isLoading=!0,qi.searchSite(n).then((function(e){e&&(t.sites=e)})).finally((function(){t.isLoading=!1})));var l=function(e){return-1!==e.name.toLowerCase().indexOf(n)||-1!==e.category.toLowerCase().indexOf(n)};null===this.topMenuItems&&(this.topMenuItems=this.getTopMenuItems()),null===this.leftMenuItems&&(this.leftMenuItems=this.getLeftMenuItems()),null===this.segmentItems&&(this.segmentItems=this.getSegmentItems());var c=this.topMenuItems.filter(l),s=this.leftMenuItems.filter(l),u=this.segmentItems.filter(l);c.forEach(o),s.forEach(o),u.forEach(o),this.numMenuItems=c.length+s.length+u.length,this.menuItems=a},resetSearchIndex:function(){this.searchIndex=0,this.makeSureSelectedItemIsInViewport()},selectSite:function(e){qi.loadSite(e)},selectMenuItem:function(e){var t=document.querySelector("[quick_access='".concat(e,"']"));if(t){this.deactivateSearch();var n=t.getAttribute("href");if(n&&n.length>10&&t&&t.click)try{t.click()}catch(r){window.$(t).click()}else window.$(t).click()}},onBlur:function(){this.searchActive=!1,this.$emit("blur")},activateSearch:function(){this.searchActive=!0},getTopMenuItems:function(){var e=this,t=C("CoreHome_Menu"),n=[];return document.querySelectorAll("nav .sidenav li > a").forEach((function(r){var i,a,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o||(o=null===(a=r.getAttribute("title"))||void 0===a?void 0:a.trim());o&&(n.push({name:o,index:e.menuIndexCounter+=1,category:t}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n},getLeftMenuItems:function(){var e=this,t=[];return document.querySelectorAll("#secondNavBar .menuTab").forEach((function(n){var r,i=window.$(n).find("> .item"),a=(null===(r=i[0])||void 0===r?void 0:r.innerText.trim())||"";a&&-1!==a.lastIndexOf("\n")&&(a=a.substr(0,a.lastIndexOf("\n")).trim()),window.$(n).find("li .item").each((function(n,r){var i,o=null===(i=r.textContent)||void 0===i?void 0:i.trim();o&&(t.push({name:o,category:a,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))}))})),t},getSegmentItems:function(){var e=this;if(!this.hasSegmentSelector)return[];var t=C("CoreHome_Segments"),n=[];return document.querySelectorAll(".segmentList [data-idsegment]").forEach((function(r){var i,a,o=null===(i=r.querySelector(".segname"))||void 0===i||null===(a=i.textContent)||void 0===a?void 0:a.trim();o&&(n.push({name:o,category:t,index:e.menuIndexCounter+=1}),r.setAttribute("quick_access","".concat(e.menuIndexCounter)))})),n}}});ua.render=la;var da=ua;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:ea,directiveName:"piwikQuickAccess",events:{itemSelected:function(e,t,n,r,i,a,o){o()},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}}});function ta(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var na={class:"fieldArray form-group"},ra={key:0,class:"fieldUiControl"},ia=["onClick","title"];function aa(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",na,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.modelValue,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["fieldArrayTable multiple valign-wrapper",ta({},"fieldArrayTable".concat(n),!0)]),key:n},[e.field.uiControl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ra,[Object(a["createVNode"])(l,{"full-width":!0,"model-value":t,options:e.field.availableValues,"onUpdate:modelValue":function(t){return e.onEntryChange(t,n)},placeholder:" ",uicontrol:e.field.uiControl,title:e.field.title,name:"".concat(e.name,"-").concat(n)},null,8,["model-value","options","onUpdate:modelValue","uicontrol","title","name"])])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,ia),[[a["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function oa(e){return ua(e)||sa(e)||ca(e)||la()}function la(){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 ca(e,t){if(e){if("string"===typeof e)return da(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)?da(e,t):void 0}}function sa(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function ua(e){if(Array.isArray(e))return da(e)}function da(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var pa=An("CorePluginsAdmin","Field"),ma=Object(a["defineComponent"])({props:{modelValue:Array,name:String,field:Object},components:{Field:pa},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&""===e.slice(-1)[0]||this.$emit("update:modelValue",[].concat(oa(e||[]),[""]))},onEntryChange:function(e,t){var n=oa(this.modelValue||[]);n[t]=e,this.$emit("update:modelValue",n)},removeEntry:function(e){if(e>-1&&this.modelValue){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}}}});ma.render=aa;var fa=ma;
+ */jt({component:da,directiveName:"piwikQuickAccess",events:{itemSelected:function(e,t,n,r,i,a,o){o()},blur:function(e,t,n){setTimeout((function(){return n.$apply()}))}}});function pa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ma={class:"fieldArray form-group"},fa={key:0,class:"fieldUiControl"},ha=["onClick","title"];function ga(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ma,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.modelValue,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["fieldArrayTable multiple valign-wrapper",pa({},"fieldArrayTable".concat(n),!0)]),key:n},[e.field.uiControl?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fa,[Object(a["createVNode"])(l,{"full-width":!0,"model-value":t,options:e.field.availableValues,"onUpdate:modelValue":function(t){return e.onEntryChange(t,n)},placeholder:" ",uicontrol:e.field.uiControl,title:e.field.title,name:"".concat(e.name,"-").concat(n),"template-file":e.field.templateFile,component:e.field.component},null,8,["model-value","options","onUpdate:modelValue","uicontrol","title","name","template-file","component"])])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,ha),[[a["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function va(e){return Oa(e)||wa(e)||ya(e)||ba()}function ba(){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 ya(e,t){if(e){if("string"===typeof e)return ja(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)?ja(e,t):void 0}}function wa(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Oa(e){if(Array.isArray(e))return ja(e)}function ja(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var ka=_n("CorePluginsAdmin","Field"),Sa=Object(a["defineComponent"])({props:{modelValue:Array,name:String,field:Object},components:{Field:ka},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&""===e.slice(-1)[0]||this.$emit("update:modelValue",[].concat(va(e||[]),[""]))},onEntryChange:function(e,t){var n=va(this.modelValue||[]);n[t]=e,this.$emit("update:modelValue",n)},removeEntry:function(e){if(e>-1&&this.modelValue){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}}}});Sa.render=ga;var Ca=Sa;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:fa,require:"?ngModel",scope:{name:{angularJsBind:"="},field:{angularJsBind:"="}},directiveName:"matomoFieldArray",events:{"update:modelValue":function(e,t,n,r,i,a){e!==t.modelValue&&(r.trigger("change",e),a&&a.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var a=i;a&&(a.$setViewValue(e.modelValue),a.$render=function(){window.angular.isString(a.$viewValue)?e.modelValue=JSON.parse(a.$viewValue):e.modelValue=a.$viewValue})}});function ha(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ga={class:"multiPairField form-group"},va={key:1,class:"fieldUiControl fieldUiControl2"},ba={key:2,class:"fieldUiControl fieldUiControl3"},ya={key:3,class:"fieldUiControl fieldUiControl4"},wa=["onClick","title"];function Oa(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ga,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.modelValue,(function(t,n){var r;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper",(r={},ha(r,"multiPairFieldTable".concat(n),!0),ha(r,"has".concat(e.fieldCount,"Fields"),!0),r)]),key:n},[e.field1?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["fieldUiControl fieldUiControl1",{hasMultiFields:e.field1.type&&e.field2.type}])},[Object(a["createVNode"])(l,{"full-width":!0,modelValue:t[e.field1.key],"onUpdate:modelValue":[function(n){return t[e.field1.key]=n},function(t){return e.onEntryChange(n,e.field1.key,t)}],options:e.field1.availableValues,placeholder:" ",uicontrol:e.field1.uiControl,name:"".concat(e.name,"-p1-").concat(n),title:e.field1.title},null,8,["modelValue","onUpdate:modelValue","options","uicontrol","name","title"])],2)):Object(a["createCommentVNode"])("",!0),e.field2?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",va,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field2.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field2.key,t)},function(n){return t[e.field2.key]=n}],modelValue:t[e.field2.key],placeholder:" ",uicontrol:e.field2.uiControl,name:"".concat(e.name,"-p2-").concat(n),title:e.field2.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","name","title"])])):Object(a["createCommentVNode"])("",!0),e.field3?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ba,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field3.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field3.key,t)},function(n){return t[e.field3.key]=n}],modelValue:t[e.field3.key],placeholder:" ",uicontrol:e.field3.uiControl,title:e.field3.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title"])])):Object(a["createCommentVNode"])("",!0),e.field4?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ya,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field4.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field4.key,t)},function(n){return t[e.field4.key]=n}],modelValue:t[e.field4.key],placeholder:" ",uicontrol:e.field4.uiControl,title:e.field4.title},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,wa),[[a["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function ja(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ka(e){return Da(e)||Ea(e)||Ca(e)||Sa()}function Sa(){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 Ca(e,t){if(e){if("string"===typeof e)return Pa(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)?Pa(e,t):void 0}}function Ea(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Da(e){if(Array.isArray(e))return Pa(e)}function Pa(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Va=An("CorePluginsAdmin","Field"),Na=Object(a["defineComponent"])({props:{modelValue:Array,name:String,field1:Object,field2:Object,field3:Object,field4:Object},components:{Field:Va},computed:{fieldCount:function(){return this.field1&&this.field2&&this.field3&&this.field4?4:this.field1&&this.field2&&this.field3?3:this.field1&&this.field2?2:this.field1?1:0}},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&!this.isEmptyValue(e.slice(-1)[0])||this.$emit("update:modelValue",[].concat(ka(e||[]),[this.makeEmptyValue()]))},onEntryChange:function(e,t,n){var r=ka(this.modelValue);r[e]=Object.assign(Object.assign({},r[e]),{},ja({},t,n)),this.$emit("update:modelValue",r)},removeEntry:function(e){if(e>-1&&this.modelValue){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}},isEmptyValue:function(e){var t=this.fieldCount;if(4===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key]&&!e[this.field4.key])return!1}else if(3===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key])return!1}else if(2===t){if(!e[this.field1.key]&&!e[this.field2.key])return!1}else if(1===t&&!e[this.field1.key])return!1;return!0},makeEmptyValue:function(){var e={};return this.field1&&this.field1.key&&(e[this.field1.key]=""),this.field2&&this.field2.key&&(e[this.field2.key]=""),this.field3&&this.field3.key&&(e[this.field3.key]=""),this.field4&&this.field4.key&&(e[this.field4.key]=""),e}}});Na.render=Oa;var Ta=Na,Aa=(gt({component:Ta,require:"?ngModel",scope:{name:{angularJsBind:"="},field1:{angularJsBind:"="},field2:{angularJsBind:"="},field3:{angularJsBind:"="},field4:{angularJsBind:"="}},directiveName:"matomoMultiPairField",events:{"update:modelValue":function(e,t,n,r,i,a){e!==t.modelValue&&(r.trigger("change",e),a&&a.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var a=i;a&&(a.$setViewValue(e.modelValue),a.$render=function(){window.angular.isString(a.$viewValue)?e.modelValue=JSON.parse(a.$viewValue):e.modelValue=a.$viewValue})}}),{ref:"root",class:"periodSelector piwikSelector"}),xa=["title"],Ia=Object(a["createElementVNode"])("span",{class:"icon icon-calendar"},null,-1),Ba={id:"periodMore",class:"dropdown"},La={class:"flex"},Ma={key:0,class:"period-date"},Fa={class:"period-type"},Ra={id:"otherPeriods"},_a=["onDblclick","title"],$a=["id","checked","onChange","onDblclick"],Ha={key:0,class:"compare-checkbox"},Ua={id:"comparePeriodToDropdown"},qa={key:1,class:"compare-date-range"},Wa={id:"comparePeriodStartDate"},Ja=Object(a["createElementVNode"])("span",{class:"compare-dates-separator"},null,-1),Ga={id:"comparePeriodEndDate"},za={class:"apply-button-container"},Ya=["disabled","value"],Qa={key:2,id:"ajaxLoadingCalendar"},Ka={class:"loadingSegment"};
+ */jt({component:Ca,require:"?ngModel",scope:{name:{angularJsBind:"="},field:{angularJsBind:"="}},directiveName:"matomoFieldArray",events:{"update:modelValue":function(e,t,n,r,i,a){e!==t.modelValue&&(r.trigger("change",e),a&&a.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var a=i;a&&(a.$setViewValue(e.modelValue),a.$render=function(){window.angular.isString(a.$viewValue)?e.modelValue=JSON.parse(a.$viewValue):e.modelValue=a.$viewValue})}});function Ea(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Da={class:"multiPairField form-group"},Pa={key:1,class:"fieldUiControl fieldUiControl2"},Va={key:2,class:"fieldUiControl fieldUiControl3"},Na={key:3,class:"fieldUiControl fieldUiControl4"},Ta=["onClick","title"];function Aa(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Da,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.modelValue,(function(t,n){var r;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["multiPairFieldTable multiple valign-wrapper",(r={},Ea(r,"multiPairFieldTable".concat(n),!0),Ea(r,"has".concat(e.fieldCount,"Fields"),!0),r)]),key:n},[e.field1?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["fieldUiControl fieldUiControl1",{hasMultiFields:e.field1.type&&e.field2.type}])},[Object(a["createVNode"])(l,{"full-width":!0,modelValue:t[e.field1.key],"onUpdate:modelValue":[function(n){return t[e.field1.key]=n},function(t){return e.onEntryChange(n,e.field1.key,t)}],options:e.field1.availableValues,placeholder:" ",uicontrol:e.field1.uiControl,name:"".concat(e.name,"-p1-").concat(n),title:e.field1.title,"template-file":e.field1.templateFile,component:e.field1.component},null,8,["modelValue","onUpdate:modelValue","options","uicontrol","name","title","template-file","component"])],2)):Object(a["createCommentVNode"])("",!0),e.field2?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Pa,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field2.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field2.key,t)},function(n){return t[e.field2.key]=n}],modelValue:t[e.field2.key],placeholder:" ",uicontrol:e.field2.uiControl,name:"".concat(e.name,"-p2-").concat(n),title:e.field2.title,"template-file":e.field2.templateFile,component:e.field2.component},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","name","title","template-file","component"])])):Object(a["createCommentVNode"])("",!0),e.field3?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Va,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field3.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field3.key,t)},function(n){return t[e.field3.key]=n}],modelValue:t[e.field3.key],placeholder:" ",uicontrol:e.field3.uiControl,title:e.field3.title,"template-file":e.field3.templateFile,component:e.field3.component},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title","template-file","component"])])):Object(a["createCommentVNode"])("",!0),e.field4?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Na,[Object(a["createVNode"])(l,{"full-width":!0,options:e.field4.availableValues,"onUpdate:modelValue":[function(t){return e.onEntryChange(n,e.field4.key,t)},function(n){return t[e.field4.key]=n}],modelValue:t[e.field4.key],placeholder:" ",uicontrol:e.field4.uiControl,title:e.field4.title,"template-file":e.field4.templateFile,component:e.field4.component},null,8,["options","onUpdate:modelValue","modelValue","uicontrol","title","template-file","component"])])):Object(a["createCommentVNode"])("",!0),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{onClick:function(t){return e.removeEntry(n)},class:"icon-minus valign",title:e.translate("General_Remove")},null,8,Ta),[[a["vShow"],n+1!==e.modelValue.length]])],2)})),128))])}function Ia(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xa(e){return Ra(e)||La(e)||Ma(e)||Ba()}function Ba(){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 Ma(e,t){if(e){if("string"===typeof e)return Fa(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)?Fa(e,t):void 0}}function La(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Ra(e){if(Array.isArray(e))return Fa(e)}function Fa(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var _a=_n("CorePluginsAdmin","Field"),$a=Object(a["defineComponent"])({props:{modelValue:Array,name:String,field1:Object,field2:Object,field3:Object,field4:Object},components:{Field:_a},computed:{fieldCount:function(){return this.field1&&this.field2&&this.field3&&this.field4?4:this.field1&&this.field2&&this.field3?3:this.field1&&this.field2?2:this.field1?1:0}},emits:["update:modelValue"],watch:{modelValue:function(e){this.checkEmptyModelValue(e)}},mounted:function(){this.checkEmptyModelValue(this.modelValue)},methods:{checkEmptyModelValue:function(e){e&&e.length&&!this.isEmptyValue(e.slice(-1)[0])||this.$emit("update:modelValue",[].concat(xa(e||[]),[this.makeEmptyValue()]))},onEntryChange:function(e,t,n){var r=xa(this.modelValue);r[e]=Object.assign(Object.assign({},r[e]),{},Ia({},t,n)),this.$emit("update:modelValue",r)},removeEntry:function(e){if(e>-1&&this.modelValue){var t=this.modelValue.filter((function(t,n){return n!==e}));this.$emit("update:modelValue",t)}},isEmptyValue:function(e){var t=this.fieldCount;if(4===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key]&&!e[this.field4.key])return!1}else if(3===t){if(!e[this.field1.key]&&!e[this.field2.key]&&!e[this.field3.key])return!1}else if(2===t){if(!e[this.field1.key]&&!e[this.field2.key])return!1}else if(1===t&&!e[this.field1.key])return!1;return!0},makeEmptyValue:function(){var e={};return this.field1&&this.field1.key&&(e[this.field1.key]=""),this.field2&&this.field2.key&&(e[this.field2.key]=""),this.field3&&this.field3.key&&(e[this.field3.key]=""),this.field4&&this.field4.key&&(e[this.field4.key]=""),e}}});$a.render=Aa;var Ha=$a,Ua=(jt({component:Ha,require:"?ngModel",scope:{name:{angularJsBind:"="},field1:{angularJsBind:"="},field2:{angularJsBind:"="},field3:{angularJsBind:"="},field4:{angularJsBind:"="}},directiveName:"matomoMultiPairField",events:{"update:modelValue":function(e,t,n,r,i,a){e!==t.modelValue&&(r.trigger("change",e),a&&a.$setViewValue(e))}},postCreate:function(e,t,n,r,i){var a=i;a&&(a.$setViewValue(e.modelValue),a.$render=function(){window.angular.isString(a.$viewValue)?e.modelValue=JSON.parse(a.$viewValue):e.modelValue=a.$viewValue})}}),{ref:"root",class:"periodSelector piwikSelector"}),qa=["title"],Wa=Object(a["createElementVNode"])("span",{class:"icon icon-calendar"},null,-1),Ja={id:"periodMore",class:"dropdown"},Ga={class:"flex"},za={key:0,class:"period-date"},Ya={class:"period-type"},Qa={id:"otherPeriods"},Ka=["onDblclick","title"],Xa=["id","checked","onChange","onDblclick"],Za={key:0,class:"compare-checkbox"},eo={id:"comparePeriodToDropdown"},to={key:1,class:"compare-date-range"},no={id:"comparePeriodStartDate"},ro=Object(a["createElementVNode"])("span",{class:"compare-dates-separator"},null,-1),io={id:"comparePeriodEndDate"},ao={class:"apply-button-container"},oo=["disabled","value"],lo={key:2,id:"ajaxLoadingCalendar"},co={class:"loadingSegment"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Xa(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DateRangePicker"),c=Object(a["resolveComponent"])("PeriodDatePicker"),s=Object(a["resolveComponent"])("Field"),u=Object(a["resolveComponent"])("ActivityIndicator"),d=Object(a["resolveDirective"])("expand-on-click");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Aa,[Object(a["createElementVNode"])("a",{ref:"title",id:"date",class:"title",tabindex:"-1",title:e.translate("General_ChooseDate",e.currentlyViewingText)},[Ia,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.currentlyViewingText),1)],8,xa),Object(a["createElementVNode"])("div",Ba,[Object(a["createElementVNode"])("div",La,[Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{class:"period-range","start-date":e.startRangeDate,"end-date":e.endRangeDate,onRangeChange:t[0]||(t[0]=function(t){return e.onRangeChange(t.start,t.end)}),onSubmit:t[1]||(t[1]=function(t){return e.onApplyClicked()})},null,8,["start-date","end-date"]),[[a["vShow"],"range"===e.selectedPeriod]]),"range"!==e.selectedPeriod?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ma,[Object(a["createVNode"])(c,{id:"datepicker",period:e.selectedPeriod,date:e.periodValue===e.selectedPeriod?e.dateValue:null,onSelect:t[2]||(t[2]=function(t){return e.setPiwikPeriodAndDate(e.selectedPeriod,t.date)})},null,8,["period","date"])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Fa,[Object(a["createElementVNode"])("h6",null,Object(a["toDisplayString"])(e.translate("General_Period")),1),Object(a["createElementVNode"])("div",Ra,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.periodsFiltered,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:n},[Object(a["createElementVNode"])("label",{class:Object(a["normalizeClass"])({"selected-period-label":n===e.selectedPeriod}),onDblclick:function(t){return e.changeViewedPeriod(n)},title:n===e.periodValue?"":e.translate("General_DoubleClickToChangePeriod")},[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"radio",name:"period",id:"period_id_".concat(n),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.selectedPeriod=t}),checked:e.selectedPeriod===n,onChange:function(t){return e.selectedPeriod=n},onDblclick:function(t){return e.changeViewedPeriod(n)}},null,40,$a),[[a["vModelRadio"],e.selectedPeriod]]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.getPeriodDisplayText(n)),1)],42,_a)])})),128))])])]),e.isComparisonEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ha,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{id:"comparePeriodTo",type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.isComparing=t})},null,512),[[a["vModelCheckbox"],e.isComparing]]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("General_CompareTo")),1)]),Object(a["createElementVNode"])("div",Ua,[Object(a["createVNode"])(s,{modelValue:e.comparePeriodType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.comparePeriodType=t}),style:Object(a["normalizeStyle"])({visibility:e.isComparing?"visible":"hidden"}),name:"comparePeriodToDropdown",uicontrol:"select",options:e.comparePeriodDropdownOptions,"full-width":!0,disabled:!e.isComparing},null,8,["modelValue","style","options","disabled"])])])):Object(a["createCommentVNode"])("",!0),e.isComparing&&"custom"===e.comparePeriodType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",qa,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Wa,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{modelValue:e.compareStartDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.compareStartDate=t}),name:"comparePeriodStartDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_StartDate"),placeholder:"YYYY-MM-DD"},null,8,["modelValue","title"])])]),Ja,Object(a["createElementVNode"])("div",Ga,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{modelValue:e.compareEndDate,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.compareEndDate=t}),name:"comparePeriodEndDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_EndDate"),placeholder:"YYYY-MM-DD"},null,8,["modelValue","title"])])])])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",za,[Object(a["createElementVNode"])("input",{type:"submit",id:"calendarApply",class:"btn",onClick:t[8]||(t[8]=function(t){return e.onApplyClicked()}),disabled:!e.isApplyEnabled(),value:e.translate("General_Apply")},null,8,Ya)]),e.isLoadingNewPage?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qa,[Object(a["createVNode"])(u,{loading:!0}),Object(a["createElementVNode"])("div",Ka,Object(a["toDisplayString"])(e.translate("SegmentEditor_LoadingSegmentedDataMayTakeSomeTime")),1)])):Object(a["createCommentVNode"])("",!0)])],512)),[[d,{expander:"title"}]])}var Za={class:"loadingPiwik"},eo=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1);function to(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Za,[eo,Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.loadingMessage),1)],512)),[[a["vShow"],e.loading]])}var no=Object(a["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:C("General_LoadingData")}}});no.render=to;var ro=no;function io(e,t){return so(e)||co(e,t)||oo(e,t)||ao()}function ao(){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 oo(e,t){if(e){if("string"===typeof e)return lo(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)?lo(e,t):void 0}}function lo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function co(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function so(e){if(Array.isArray(e))return e}var uo=An("CorePluginsAdmin","Field"),po=S.helper.htmlDecode("&nbsp;"),mo=[{key:"custom",value:C("General_Custom")},{key:"previousPeriod",value:C("General_PreviousPeriod").replace(/\s+/,po)},{key:"previousYear",value:C("General_PreviousYear").replace(/\s+/,po)}],fo=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay),ho=new Date(S.maxDateYear,S.maxDateMonth-1,S.maxDateDay);function go(e){return"[object Date]"===Object.prototype.toString.call(e)&&!Number.isNaN(e.getTime())}var vo=Object(a["defineComponent"])({props:{periods:Array},components:{DateRangePicker:ni,PeriodDatePicker:li,Field:uo,ActivityIndicator:ro},directives:{ExpandOnClick:$t},data:function(){var e=Ce.parsed.value.period;return{comparePeriodDropdownOptions:mo,periodValue:e,dateValue:null,selectedPeriod:e,startRangeDate:null,endRangeDate:null,isRangeValid:null,isLoadingNewPage:!1,isComparing:null,comparePeriodType:"previousPeriod",compareStartDate:"",compareEndDate:""}},mounted:function(){var e=this;S.on("hidePeriodSelector",(function(){window.$(e.$refs.root).hide()})),S.on("piwikPageChange",(function(){window.$(e.$refs.root).show()})),this.updateSelectedValuesFromHash(),Object(a["watch"])((function(){return Ce.parsed.value}),this.updateSelectedValuesFromHash),this.isComparing=mr.isComparingPeriods(),Object(a["watch"])((function(){return mr.isComparingPeriods()}),(function(t){e.isComparing=t})),window.initTopControls(),this.handleZIndexPositionRelativeCompareDropdownIssue()},computed:{currentlyViewingText:function(){var e;if("range"===this.periodValue){if(!this.startRangeDate||!this.endRangeDate)return C("General_Error");e="".concat(this.startRangeDate,",").concat(this.endRangeDate)}else{if(!this.dateValue)return C("General_Error");e=E(this.dateValue)}try{return p.parse(this.periodValue,e).getPrettyString()}catch(t){return C("General_Error")}},isComparisonEnabled:function(){return mr.isComparisonEnabled()},periodsFiltered:function(){return(this.periods||[]).filter((function(e){return p.isRecognizedPeriod(e)}))},selectedComparisonParams:function(){if(!this.isComparing)return{};if("custom"===this.comparePeriodType)return{comparePeriods:["range"],compareDates:["".concat(this.compareStartDate,",").concat(this.compareEndDate)]};if("previousPeriod"===this.comparePeriodType)return{comparePeriods:[this.selectedPeriod],compareDates:[this.previousPeriodDateToSelectedPeriod]};if("previousYear"===this.comparePeriodType){var e="range"===this.selectedPeriod?"".concat(this.startRangeDate,",").concat(this.endRangeDate):E(this.dateValue),t=p.parse(this.selectedPeriod,e).getDateRange();return t[0].setFullYear(t[0].getFullYear()-1),t[1].setFullYear(t[1].getFullYear()-1),"range"===this.selectedPeriod?{comparePeriods:["range"],compareDates:["".concat(E(t[0]),",").concat(E(t[1]))]}:{comparePeriods:[this.selectedPeriod],compareDates:[E(t[0])]}}return console.warn("Unknown compare period type: ".concat(this.comparePeriodType)),{}},previousPeriodDateToSelectedPeriod:function(){if("range"===this.selectedPeriod){var e=P(this.startRangeDate),t=P(this.endRangeDate),n=_.getLastNRange("day",2,e).startDate,r=Math.floor((t.valueOf()-e.valueOf())/864e5),i=_.getLastNRange("day",1+r,n);return"".concat(E(i.startDate),",").concat(E(i.endDate))}var a=_.getLastNRange(this.selectedPeriod,2,this.dateValue).startDate;return E(a)},selectedDateString:function(){if("range"===this.selectedPeriod){var e=this.startRangeDate,t=this.endRangeDate,n=P(e),r=P(t);return!go(n)||!go(r)||n>r?(window.$("#alert").find("h2").text(C("General_InvalidDateRange")),S.helper.modalConfirm("#alert",{}),null):"".concat(e,",").concat(t)}return E(this.dateValue)}},methods:{handleZIndexPositionRelativeCompareDropdownIssue:function(){var e=window.$(this.$refs.root);e.on("focus","#comparePeriodToDropdown .select-dropdown",(function(){e.addClass("compare-dropdown-open")})).on("blur","#comparePeriodToDropdown .select-dropdown",(function(){e.removeClass("compare-dropdown-open")}))},changeViewedPeriod:function(e){e!==this.periodValue&&"range"!==e&&this.setPiwikPeriodAndDate(e,this.dateValue)},setPiwikPeriodAndDate:function(e,t){this.periodValue=e,this.selectedPeriod=e,this.dateValue=t;var n=E(t);this.setRangeStartEndFromPeriod(e,n),this.propagateNewUrlParams(n,this.selectedPeriod),window.initTopControls()},propagateNewUrlParams:function(e,t){var n,r=this.selectedComparisonParams;S.helper.isAngularRenderingThePage()?(this.closePeriodSelector(),n=Ce.hashParsed.value):(this.isLoadingNewPage=!0,n=Ce.parsed.value);var i=Object.assign({},n);delete i.comparePeriods,delete i.compareDates,Ce.updateLocation(Object.assign(Object.assign({},i),{},{date:e,period:t},r))},onApplyClicked:function(){if("range"===this.selectedPeriod){var e=this.selectedDateString;if(!e)return;return this.periodValue="range",void this.propagateNewUrlParams(e,"range")}this.setPiwikPeriodAndDate(this.selectedPeriod,this.dateValue)},updateSelectedValuesFromHash:function(){var e=Ce.parsed.value.date,t=Ce.parsed.value.period;this.periodValue=t,this.selectedPeriod=t,this.dateValue=null,this.startRangeDate=null,this.endRangeDate=null;try{p.parse(t,e)}catch(l){return}if("range"===t){var n=p.get(t).parse(e),r=n.getDateRange(),i=io(r,2),a=i[0],o=i[1];this.dateValue=a,this.startRangeDate=E(a),this.endRangeDate=E(o)}else this.dateValue=P(e),this.setRangeStartEndFromPeriod(t,e)},setRangeStartEndFromPeriod:function(e,t){var n=p.parse(e,t).getDateRange();this.startRangeDate=E(n[0]<fo?fo:n[0]),this.endRangeDate=E(n[1]>ho?ho:n[1])},getPeriodDisplayText:function(e){return p.get(e).getDisplayText()},onRangeChange:function(e,t){e&&t?(this.isRangeValid=!0,this.startRangeDate=e,this.endRangeDate=t):this.isRangeValid=!1},isApplyEnabled:function(){return!("range"===this.selectedPeriod&&!this.isRangeValid)&&!(this.isComparing&&"custom"===this.comparePeriodType&&!this.isCompareRangeValid())},closePeriodSelector:function(){this.$refs.root.classList.remove("expanded")},isCompareRangeValid:function(){try{P(this.compareStartDate)}catch(e){return!1}try{P(this.compareEndDate)}catch(e){return!1}return!0}}});vo.render=Xa;var bo=vo,yo=(gt({component:bo,scope:{periods:{angularJsBind:"<"}},directiveName:"piwikPeriodSelector"}),{class:"reportingMenu"}),wo=["aria-label"],Oo=["onClick"],jo={class:"hidden"},ko={role:"menu"},So=["href","onClick","title"],Co=["href","onClick"],Eo=["onClick"],Do=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Po=[Do],Vo={id:"mobile-left-menu",class:"sidenav hide-on-large-only"},No={class:"collapsible collapsible-accordion"},To={class:"collapsible-header"},Ao={class:"collapsible-body"},xo={key:0},Io=["onClick","href"],Bo={key:1},Lo=["onClick","href"];
+ */function so(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("DateRangePicker"),c=Object(a["resolveComponent"])("PeriodDatePicker"),s=Object(a["resolveComponent"])("Field"),u=Object(a["resolveComponent"])("ActivityIndicator"),d=Object(a["resolveDirective"])("expand-on-click");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ua,[Object(a["createElementVNode"])("a",{ref:"title",id:"date",class:"title",tabindex:"-1",title:e.translate("General_ChooseDate",e.currentlyViewingText)},[Wa,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.currentlyViewingText),1)],8,qa),Object(a["createElementVNode"])("div",Ja,[Object(a["createElementVNode"])("div",Ga,[Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{class:"period-range","start-date":e.startRangeDate,"end-date":e.endRangeDate,onRangeChange:t[0]||(t[0]=function(t){return e.onRangeChange(t.start,t.end)}),onSubmit:t[1]||(t[1]=function(t){return e.onApplyClicked()})},null,8,["start-date","end-date"]),[[a["vShow"],"range"===e.selectedPeriod]]),"range"!==e.selectedPeriod?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",za,[Object(a["createVNode"])(c,{id:"datepicker",period:e.selectedPeriod,date:e.periodValue===e.selectedPeriod?e.dateValue:null,onSelect:t[2]||(t[2]=function(t){return e.setPiwikPeriodAndDate(e.selectedPeriod,t.date)})},null,8,["period","date"])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",Ya,[Object(a["createElementVNode"])("h6",null,Object(a["toDisplayString"])(e.translate("General_Period")),1),Object(a["createElementVNode"])("div",Qa,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.periodsFiltered,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:n},[Object(a["createElementVNode"])("label",{class:Object(a["normalizeClass"])({"selected-period-label":n===e.selectedPeriod}),onDblclick:function(t){return e.changeViewedPeriod(n)},title:n===e.periodValue?"":e.translate("General_DoubleClickToChangePeriod")},[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"radio",name:"period",id:"period_id_".concat(n),"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.selectedPeriod=t}),checked:e.selectedPeriod===n,onChange:function(t){return e.selectedPeriod=n},onDblclick:function(t){return e.changeViewedPeriod(n)}},null,40,Xa),[[a["vModelRadio"],e.selectedPeriod]]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.getPeriodDisplayText(n)),1)],42,Ka)])})),128))])])]),e.isComparisonEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Za,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{id:"comparePeriodTo",type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.isComparing=t})},null,512),[[a["vModelCheckbox"],e.isComparing]]),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("General_CompareTo")),1)]),Object(a["createElementVNode"])("div",eo,[Object(a["createVNode"])(s,{modelValue:e.comparePeriodType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.comparePeriodType=t}),style:Object(a["normalizeStyle"])({visibility:e.isComparing?"visible":"hidden"}),name:"comparePeriodToDropdown",uicontrol:"select",options:e.comparePeriodDropdownOptions,"full-width":!0,disabled:!e.isComparing},null,8,["modelValue","style","options","disabled"])])])):Object(a["createCommentVNode"])("",!0),e.isComparing&&"custom"===e.comparePeriodType?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",to,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",no,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{modelValue:e.compareStartDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.compareStartDate=t}),name:"comparePeriodStartDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_StartDate"),placeholder:"YYYY-MM-DD"},null,8,["modelValue","title"])])]),ro,Object(a["createElementVNode"])("div",io,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{modelValue:e.compareEndDate,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.compareEndDate=t}),name:"comparePeriodEndDate",uicontrol:"text","full-width":!0,title:e.translate("CoreHome_EndDate"),placeholder:"YYYY-MM-DD"},null,8,["modelValue","title"])])])])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",ao,[Object(a["createElementVNode"])("input",{type:"submit",id:"calendarApply",class:"btn",onClick:t[8]||(t[8]=function(t){return e.onApplyClicked()}),disabled:!e.isApplyEnabled(),value:e.translate("General_Apply")},null,8,oo)]),e.isLoadingNewPage?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",lo,[Object(a["createVNode"])(u,{loading:!0}),Object(a["createElementVNode"])("div",co,Object(a["toDisplayString"])(e.translate("SegmentEditor_LoadingSegmentedDataMayTakeSomeTime")),1)])):Object(a["createCommentVNode"])("",!0)])],512)),[[d,{expander:"title"}]])}var uo={class:"loadingPiwik"},po=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1);function mo(e,t,n,r,i,o){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",uo,[po,Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.loadingMessage),1)],512)),[[a["vShow"],e.loading]])}var fo=Object(a["defineComponent"])({props:{loading:{type:Boolean,required:!0,default:!1},loadingMessage:{type:String,required:!1,default:C("General_LoadingData")}}});fo.render=mo;var ho=fo;function go(e,t){return Oo(e)||wo(e,t)||bo(e,t)||vo()}function vo(){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 bo(e,t){if(e){if("string"===typeof e)return yo(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)?yo(e,t):void 0}}function yo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function wo(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Oo(e){if(Array.isArray(e))return e}var jo=_n("CorePluginsAdmin","Field"),ko=S.helper.htmlDecode("&nbsp;"),So=[{key:"custom",value:C("General_Custom")},{key:"previousPeriod",value:C("General_PreviousPeriod").replace(/\s+/,ko)},{key:"previousYear",value:C("General_PreviousYear").replace(/\s+/,ko)}],Co=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay),Eo=new Date(S.maxDateYear,S.maxDateMonth-1,S.maxDateDay);function Do(e){return"[object Date]"===Object.prototype.toString.call(e)&&!Number.isNaN(e.getTime())}var Po=Object(a["defineComponent"])({props:{periods:Array},components:{DateRangePicker:mi,PeriodDatePicker:bi,Field:jo,ActivityIndicator:ho},directives:{ExpandOnClick:Yt},data:function(){var e=Ce.parsed.value.period;return{comparePeriodDropdownOptions:So,periodValue:e,dateValue:null,selectedPeriod:e,startRangeDate:null,endRangeDate:null,isRangeValid:null,isLoadingNewPage:!1,isComparing:null,comparePeriodType:"previousPeriod",compareStartDate:"",compareEndDate:""}},mounted:function(){var e=this;S.on("hidePeriodSelector",(function(){window.$(e.$refs.root).hide()})),S.on("piwikPageChange",(function(){window.$(e.$refs.root).show()})),this.updateSelectedValuesFromHash(),Object(a["watch"])((function(){return Ce.parsed.value}),this.updateSelectedValuesFromHash),this.isComparing=Or.isComparingPeriods(),Object(a["watch"])((function(){return Or.isComparingPeriods()}),(function(t){e.isComparing=t})),window.initTopControls(),this.handleZIndexPositionRelativeCompareDropdownIssue()},computed:{currentlyViewingText:function(){var e;if("range"===this.periodValue){if(!this.startRangeDate||!this.endRangeDate)return C("General_Error");e="".concat(this.startRangeDate,",").concat(this.endRangeDate)}else{if(!this.dateValue)return C("General_Error");e=E(this.dateValue)}try{return p.parse(this.periodValue,e).getPrettyString()}catch(t){return C("General_Error")}},isComparisonEnabled:function(){return Or.isComparisonEnabled()},periodsFiltered:function(){return(this.periods||[]).filter((function(e){return p.isRecognizedPeriod(e)}))},selectedComparisonParams:function(){if(!this.isComparing)return{};if("custom"===this.comparePeriodType)return{comparePeriods:["range"],compareDates:["".concat(this.compareStartDate,",").concat(this.compareEndDate)]};if("previousPeriod"===this.comparePeriodType)return{comparePeriods:[this.selectedPeriod],compareDates:[this.previousPeriodDateToSelectedPeriod]};if("previousYear"===this.comparePeriodType){var e="range"===this.selectedPeriod?"".concat(this.startRangeDate,",").concat(this.endRangeDate):E(this.dateValue),t=p.parse(this.selectedPeriod,e).getDateRange();return t[0].setFullYear(t[0].getFullYear()-1),t[1].setFullYear(t[1].getFullYear()-1),"range"===this.selectedPeriod?{comparePeriods:["range"],compareDates:["".concat(E(t[0]),",").concat(E(t[1]))]}:{comparePeriods:[this.selectedPeriod],compareDates:[E(t[0])]}}return console.warn("Unknown compare period type: ".concat(this.comparePeriodType)),{}},previousPeriodDateToSelectedPeriod:function(){if("range"===this.selectedPeriod){var e=P(this.startRangeDate),t=P(this.endRangeDate),n=_.getLastNRange("day",2,e).startDate,r=Math.floor((t.valueOf()-e.valueOf())/864e5),i=_.getLastNRange("day",1+r,n);return"".concat(E(i.startDate),",").concat(E(i.endDate))}var a=_.getLastNRange(this.selectedPeriod,2,this.dateValue).startDate;return E(a)},selectedDateString:function(){if("range"===this.selectedPeriod){var e=this.startRangeDate,t=this.endRangeDate,n=P(e),r=P(t);return!Do(n)||!Do(r)||n>r?(window.$("#alert").find("h2").text(C("General_InvalidDateRange")),S.helper.modalConfirm("#alert",{}),null):"".concat(e,",").concat(t)}return E(this.dateValue)}},methods:{handleZIndexPositionRelativeCompareDropdownIssue:function(){var e=window.$(this.$refs.root);e.on("focus","#comparePeriodToDropdown .select-dropdown",(function(){e.addClass("compare-dropdown-open")})).on("blur","#comparePeriodToDropdown .select-dropdown",(function(){e.removeClass("compare-dropdown-open")}))},changeViewedPeriod:function(e){e!==this.periodValue&&"range"!==e&&this.setPiwikPeriodAndDate(e,this.dateValue)},setPiwikPeriodAndDate:function(e,t){this.periodValue=e,this.selectedPeriod=e,this.dateValue=t;var n=E(t);this.setRangeStartEndFromPeriod(e,n),this.propagateNewUrlParams(n,this.selectedPeriod),window.initTopControls()},propagateNewUrlParams:function(e,t){var n,r=this.selectedComparisonParams;S.helper.isAngularRenderingThePage()?(this.closePeriodSelector(),n=Ce.hashParsed.value):(this.isLoadingNewPage=!0,n=Ce.parsed.value);var i=Object.assign({},n);delete i.comparePeriods,delete i.compareDates,Ce.updateLocation(Object.assign(Object.assign({},i),{},{date:e,period:t},r))},onApplyClicked:function(){if("range"===this.selectedPeriod){var e=this.selectedDateString;if(!e)return;return this.periodValue="range",void this.propagateNewUrlParams(e,"range")}this.setPiwikPeriodAndDate(this.selectedPeriod,this.dateValue)},updateSelectedValuesFromHash:function(){var e=Ce.parsed.value.date,t=Ce.parsed.value.period;this.periodValue=t,this.selectedPeriod=t,this.dateValue=null,this.startRangeDate=null,this.endRangeDate=null;try{p.parse(t,e)}catch(l){return}if("range"===t){var n=p.get(t).parse(e),r=n.getDateRange(),i=go(r,2),a=i[0],o=i[1];this.dateValue=a,this.startRangeDate=E(a),this.endRangeDate=E(o)}else this.dateValue=P(e),this.setRangeStartEndFromPeriod(t,e)},setRangeStartEndFromPeriod:function(e,t){var n=p.parse(e,t).getDateRange();this.startRangeDate=E(n[0]<Co?Co:n[0]),this.endRangeDate=E(n[1]>Eo?Eo:n[1])},getPeriodDisplayText:function(e){return p.get(e).getDisplayText()},onRangeChange:function(e,t){e&&t?(this.isRangeValid=!0,this.startRangeDate=e,this.endRangeDate=t):this.isRangeValid=!1},isApplyEnabled:function(){return!("range"===this.selectedPeriod&&!this.isRangeValid)&&!(this.isComparing&&"custom"===this.comparePeriodType&&!this.isCompareRangeValid())},closePeriodSelector:function(){this.$refs.root.classList.remove("expanded")},isCompareRangeValid:function(){try{P(this.compareStartDate)}catch(e){return!1}try{P(this.compareEndDate)}catch(e){return!1}return!0}}});Po.render=so;var Vo=Po,No=(jt({component:Vo,scope:{periods:{angularJsBind:"<"}},directiveName:"piwikPeriodSelector"}),{class:"reportingMenu"}),To=["aria-label"],Ao=["onClick"],Io={class:"hidden"},xo={role:"menu"},Bo=["href","onClick","title"],Mo=["href","onClick"],Lo=["onClick"],Ro=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Fo=[Ro],_o={id:"mobile-left-menu",class:"sidenav hide-on-large-only"},$o={class:"collapsible collapsible-accordion"},Ho={class:"collapsible-header"},Uo={class:"collapsible-body"},qo={key:0},Wo=["onClick","href"],Jo={key:1},Go=["onClick","href"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Mo(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("MenuDropdown"),c=Object(a["resolveDirective"])("side-nav");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",yo,[Object(a["createElementVNode"])("ul",{class:"navbar hide-on-med-and-down",role:"menu","aria-label":e.translate("CoreHome_MainNavigation")},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menu,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["menuTab",{active:t.id===e.activeCategory}]),role:"menuitem",key:t.id},[Object(a["createElementVNode"])("a",{class:"item",tabindex:"5",href:"",onClick:Object(a["withModifiers"])((function(n){return e.loadCategory(t)}),["prevent"])},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])("menu-icon ".concat(t.icon?t.icon:"icon-arrow-right"))},null,2),Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name)+" ",1),Object(a["createElementVNode"])("span",jo,Object(a["toDisplayString"])(e.translate("CoreHome_Menu")),1)],8,Oo),Object(a["createElementVNode"])("ul",ko,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{role:"menuitem",class:Object(a["normalizeClass"])({active:(n.id===e.displayedSubcategory||n.isGroup&&e.activeSubsubcategory===e.displayedSubcategory)&&t.id===e.displayedCategory}),key:n.id},[n.isGroup?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"show-search":!0,"menu-title":e.htmlEntities(n.name)},{default:Object(a["withCtx"])((function(){return[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(n.subcategories,(function(r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{class:Object(a["normalizeClass"])(["item",{active:r.id===e.activeSubsubcategory&&n.id===e.displayedSubcategory&&t.id===e.displayedCategory}]),tabindex:"5",href:"#?".concat(e.makeUrl(t,r)),onClick:function(n){return e.loadSubcategory(t,r,n)},title:r.tooltip,key:r.id},Object(a["toDisplayString"])(r.name),11,So)})),128))]})),_:2},1032,["menu-title"])):Object(a["createCommentVNode"])("",!0),n.isGroup?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,href:"#?".concat(e.makeUrl(t,n)),class:"item",onClick:function(r){return e.loadSubcategory(t,n,r)}},Object(a["toDisplayString"])(n.name),9,Co)),n.help?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:2,class:Object(a["normalizeClass"])(["item-help-icon",{active:e.helpShownCategory&&e.helpShownCategory.subcategory===n.id&&e.helpShownCategory.category===t.id&&n.help}]),tabindex:"5",href:"javascript:",onClick:function(r){return e.showHelp(t,n,r)}},Po,10,Eo)):Object(a["createCommentVNode"])("",!0)],2)})),128))])],2)})),128))],8,wo),Object(a["createElementVNode"])("ul",Vo,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menu,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:"no-padding",key:t.id},[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",No,[Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",To,[Object(a["createElementVNode"])("i",{class:Object(a["normalizeClass"])(t.icon?t.icon:"icon-arrow-bottom")},null,2),Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name),1)]),Object(a["createElementVNode"])("div",Ao,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:n.id},[n.isGroup?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",xo,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(n.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{onClick:function(r){return e.loadSubcategory(t,n)},href:"#?".concat(e.makeUrl(t,n)),key:n.id},Object(a["toDisplayString"])(n.name),9,Io)})),128))])):Object(a["createCommentVNode"])("",!0),n.isGroup?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Bo,[Object(a["createElementVNode"])("a",{onClick:function(r){return e.loadSubcategory(t,n)},href:"#?".concat(e.makeUrl(t,n))},Object(a["toDisplayString"])(n.name),9,Lo)]))])})),128))])])])],512),[[c,{activator:e.sideNavActivator}]])])})),128))])])}var Fo={key:0},Ro=["data-notification-instance-id"],_o={key:1},$o={class:"notification-body"},Ho=["innerHTML"],Uo={key:1};function qo(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createBlock"])(a["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=function(t){return e.toastClosed()})},{default:Object(a["withCtx"])((function(){return[e.deleted?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Fo,[Object(a["createVNode"])(a["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(a["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{class:Object(a["normalizeClass"])(["notification system",e.cssClasses]),style:Object(a["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=function(t){return e.closeNotification(t)})}," × ")):Object(a["createCommentVNode"])("",!0),e.title?(Object(a["openBlock"])(),Object(a["createElementBlock"])("strong",_o,Object(a["toDisplayString"])(e.title),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",$o,[e.message?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,Ho)):Object(a["createCommentVNode"])("",!0),e.message?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Uo,[Object(a["renderSlot"])(e.$slots,"default")]))])],14,Ro)]})),_:3},8,["name"])])]})),_:3},8,["name"])]))]})),_:3},8,["name"])}var Wo=window,Jo=Wo.$,Go=Object(a["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses:function(){var e={};return this.context&&(e["notification-".concat(this.context)]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose:function(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data:function(){return{deleted:!1}},mounted:function(){var e=this,t=function(){setTimeout((function(){e.deleted=!0}),e.toastLength)};"toast"===this.type&&t(),this.style&&Jo(this.$refs.root).css(this.style)},methods:{toastClosed:function(){var e=this;Object(a["nextTick"])((function(){e.$emit("closed")}))},closeNotification:function(e){var t=this;this.canClose&&e&&e.target&&(this.deleted=!0,Object(a["nextTick"])((function(){t.$emit("closed")}))),this.markNotificationAsRead()},markNotificationAsRead:function(){this.notificationId&&Je.post({module:"CoreHome",action:"markNotificationAsRead"},{notificationId:this.notificationId},{withTokenInUrl:!0})}}});Go.render=qo;var zo=Go;
+ */function zo(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("MenuDropdown"),c=Object(a["resolveDirective"])("side-nav");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",No,[Object(a["createElementVNode"])("ul",{class:"navbar hide-on-med-and-down",role:"menu","aria-label":e.translate("CoreHome_MainNavigation")},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menu,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["menuTab",{active:t.id===e.activeCategory}]),role:"menuitem",key:t.id},[Object(a["createElementVNode"])("a",{class:"item",tabindex:"5",href:"",onClick:Object(a["withModifiers"])((function(n){return e.loadCategory(t)}),["prevent"])},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])("menu-icon ".concat(t.icon?t.icon:"icon-arrow-right"))},null,2),Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name)+" ",1),Object(a["createElementVNode"])("span",Io,Object(a["toDisplayString"])(e.translate("CoreHome_Menu")),1)],8,Ao),Object(a["createElementVNode"])("ul",xo,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{role:"menuitem",class:Object(a["normalizeClass"])({active:(n.id===e.displayedSubcategory||n.isGroup&&e.activeSubsubcategory===e.displayedSubcategory)&&t.id===e.displayedCategory}),key:n.id},[n.isGroup?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"show-search":!0,"menu-title":e.htmlEntities(n.name)},{default:Object(a["withCtx"])((function(){return[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(n.subcategories,(function(r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{class:Object(a["normalizeClass"])(["item",{active:r.id===e.activeSubsubcategory&&n.id===e.displayedSubcategory&&t.id===e.displayedCategory}]),tabindex:"5",href:"#?".concat(e.makeUrl(t,r)),onClick:function(n){return e.loadSubcategory(t,r,n)},title:r.tooltip,key:r.id},Object(a["toDisplayString"])(r.name),11,Bo)})),128))]})),_:2},1032,["menu-title"])):Object(a["createCommentVNode"])("",!0),n.isGroup?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:1,href:"#?".concat(e.makeUrl(t,n)),class:"item",onClick:function(r){return e.loadSubcategory(t,n,r)}},Object(a["toDisplayString"])(n.name),9,Mo)),n.help?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{key:2,class:Object(a["normalizeClass"])(["item-help-icon",{active:e.helpShownCategory&&e.helpShownCategory.subcategory===n.id&&e.helpShownCategory.category===t.id&&n.help}]),tabindex:"5",href:"javascript:",onClick:function(r){return e.showHelp(t,n,r)}},Fo,10,Lo)):Object(a["createCommentVNode"])("",!0)],2)})),128))])],2)})),128))],8,To),Object(a["createElementVNode"])("ul",_o,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.menu,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:"no-padding",key:t.id},[Object(a["withDirectives"])(Object(a["createElementVNode"])("ul",$o,[Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",Ho,[Object(a["createElementVNode"])("i",{class:Object(a["normalizeClass"])(t.icon?t.icon:"icon-arrow-bottom")},null,2),Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name),1)]),Object(a["createElementVNode"])("div",Uo,[Object(a["createElementVNode"])("ul",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:n.id},[n.isGroup?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",qo,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(n.subcategories,(function(n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("a",{onClick:function(r){return e.loadSubcategory(t,n)},href:"#?".concat(e.makeUrl(t,n)),key:n.id},Object(a["toDisplayString"])(n.name),9,Wo)})),128))])):Object(a["createCommentVNode"])("",!0),n.isGroup?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Jo,[Object(a["createElementVNode"])("a",{onClick:function(r){return e.loadSubcategory(t,n)},href:"#?".concat(e.makeUrl(t,n))},Object(a["toDisplayString"])(n.name),9,Go)]))])})),128))])])])],512),[[c,{activator:e.sideNavActivator}]])])})),128))])])}var Yo={key:0},Qo=["data-notification-instance-id"],Ko={key:1},Xo={class:"notification-body"},Zo=["innerHTML"],el={key:1};function tl(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createBlock"])(a["Transition"],{name:"toast"===e.type?"slow-fade-out":void 0,onAfterLeave:t[1]||(t[1]=function(t){return e.toastClosed()})},{default:Object(a["withCtx"])((function(){return[e.deleted?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yo,[Object(a["createVNode"])(a["Transition"],{name:"toast"===e.type?"toast-slide-up":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(a["Transition"],{name:e.animate?"fade-in":void 0,appear:""},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{class:Object(a["normalizeClass"])(["notification system",e.cssClasses]),style:Object(a["normalizeStyle"])(e.style),ref:"root","data-notification-instance-id":e.notificationInstanceId},[e.canClose?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,type:"button",class:"close","data-dismiss":"alert",onClick:t[0]||(t[0]=function(t){return e.closeNotification(t)})}," × ")):Object(a["createCommentVNode"])("",!0),e.title?(Object(a["openBlock"])(),Object(a["createElementBlock"])("strong",Ko,Object(a["toDisplayString"])(e.title),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Xo,[e.message?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,innerHTML:e.$sanitize(e.message)},null,8,Zo)):Object(a["createCommentVNode"])("",!0),e.message?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",el,[Object(a["renderSlot"])(e.$slots,"default")]))])],14,Qo)]})),_:3},8,["name"])])]})),_:3},8,["name"])]))]})),_:3},8,["name"])}var nl=window,rl=nl.$,il=Object(a["defineComponent"])({props:{notificationId:String,notificationInstanceId:String,title:String,context:String,type:String,noclear:Boolean,toastLength:{type:Number,default:12e3},style:[String,Object],animate:Boolean,message:String,cssClass:String},computed:{cssClasses:function(){var e={};return this.context&&(e["notification-".concat(this.context)]=!0),this.cssClass&&(e[this.cssClass]=!0),e},canClose:function(){return"persistent"===this.type||!this.noclear}},emits:["closed"],data:function(){return{deleted:!1}},mounted:function(){var e=this,t=function(){setTimeout((function(){e.deleted=!0}),e.toastLength)};"toast"===this.type&&t(),this.style&&rl(this.$refs.root).css(this.style)},methods:{toastClosed:function(){var e=this;Object(a["nextTick"])((function(){e.$emit("closed")}))},closeNotification:function(e){var t=this;this.canClose&&e&&e.target&&(this.deleted=!0,Object(a["nextTick"])((function(){t.$emit("closed")}))),this.markNotificationAsRead()},markNotificationAsRead:function(){this.notificationId&&Xe.post({module:"CoreHome",action:"markNotificationAsRead"},{notificationId:this.notificationId},{withTokenInUrl:!0})}}});il.render=tl;var al=il;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:zo,scope:{notificationId:{angularJsBind:"@?"},title:{angularJsBind:"@?notificationTitle"},context:{angularJsBind:"@?"},type:{angularJsBind:"@?"},noclear:{angularJsBind:"@?",transform:vt},toastLength:{angularJsBind:"@?"}},directiveName:"piwikNotification",transclude:!0});function Yo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Qo(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Ko(e,t,n){return t&&Qo(e.prototype,t),n&&Qo(e,n),e}function Xo(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */jt({component:al,scope:{notificationId:{angularJsBind:"@?"},title:{angularJsBind:"@?notificationTitle"},context:{angularJsBind:"@?"},type:{angularJsBind:"@?"},noclear:{angularJsBind:"@?",transform:kt},toastLength:{angularJsBind:"@?"}},directiveName:"piwikNotification",transclude:!0});function ol(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ll(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function cl(e,t,n){return t&&ll(e.prototype,t),n&&ll(e,n),e}function sl(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 Zo=window,el=Zo.$,tl=function(){function e(){Yo(this,e),Xo(this,"privateState",Object(a["reactive"])({notifications:[]})),Xo(this,"nextNotificationId",0)}return Ko(e,[{key:"state",get:function(){return Object(a["readonly"])(this.privateState)}},{key:"appendNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}},{key:"prependNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}},{key:"remove",value:function(e){this.privateState.notifications=this.privateState.notifications.filter((function(t){return t.id!==e}))}},{key:"parseNotificationDivs",value:function(){var e=this,t=el('[data-role="notification"]'),n=[];t.each((function(e,r){var i=el(r),a=i.data(),o=i.html();o&&n.push(Object.assign(Object.assign({},a),{},{message:o,animate:!1})),t.remove()})),n.forEach((function(t){return e.show(t)}))}},{key:"clearTransientNotifications",value:function(){this.privateState.notifications=this.privateState.notifications.filter((function(e){return"transient"!==e.type}))}},{key:"show",value:function(e){this.checkMessage(e.message);var t=e.prepend?this.prependNotification:this.appendNotification,n="#notificationContainer";if(e.placeat)n=e.placeat;else{var r=".modal.open .modal-content",i=document.querySelector(r);i&&(i.querySelector("#modalNotificationContainer")||el(i).prepend('<div id="modalNotificationContainer"/>'),n="".concat(r," #modalNotificationContainer"),t=this.prependNotification)}var a=e.group||(n?n.toString():"");this.initializeNotificationContainer(n,a);var o=(this.nextNotificationId+=1).toString();return t.call(this,Object.assign(Object.assign({},e),{},{noclear:!!e.noclear,group:a,notificationId:e.id,notificationInstanceId:o,type:e.type||"transient"})),o}},{key:"scrollToNotification",value:function(e){setTimeout((function(){var t=document.querySelector("[data-notification-instance-id='".concat(e,"']"));t&&S.helper.lazyScrollTo(t,250)}))}},{key:"toast",value:function(e){this.checkMessage(e.message);var t=e.placeat?el(e.placeat):void 0;if(!t||!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");var n=document.createElement("div");n.style.position="absolute",n.style.top="".concat(t.offset().top,"px"),n.style.left="".concat(t.offset().left,"px"),n.style.zIndex="1000",document.body.appendChild(n);var r=it({render:function(){return Object(a["createVNode"])(zo,Object.assign(Object.assign({},e),{},{notificationId:e.id,type:"toast",onClosed:function(){r.unmount()}}))}});r.mount(n)}},{key:"initializeNotificationContainer",value:function(e,t){if(e){var n=el(e);if(!n.children(".notification-group").length){var r=window.CoreHome.NotificationGroup,i=it({template:'<NotificationGroup :group="group"></NotificationGroup>',data:function(){return{group:t}}});i.component("NotificationGroup",r),i.mount(n[0])}}}},{key:"checkMessage",value:function(e){if(!e)throw new Error("No message given, cannot display notification")}}]),e}(),nl=new tl,rl=nl;el((function(){return nl.parseNotificationDivs()})),
+ */var ul=window,dl=ul.$,pl=function(){function e(){ol(this,e),sl(this,"privateState",Object(a["reactive"])({notifications:[]})),sl(this,"nextNotificationId",0)}return cl(e,[{key:"state",get:function(){return Object(a["readonly"])(this.privateState)}},{key:"appendNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.push(e)}},{key:"prependNotification",value:function(e){this.checkMessage(e.message),e.id&&this.remove(e.id),this.privateState.notifications.unshift(e)}},{key:"remove",value:function(e){this.privateState.notifications=this.privateState.notifications.filter((function(t){return t.id!==e}))}},{key:"parseNotificationDivs",value:function(){var e=this,t=dl('[data-role="notification"]'),n=[];t.each((function(e,r){var i=dl(r),a=i.data(),o=i.html();o&&n.push(Object.assign(Object.assign({},a),{},{message:o,animate:!1})),t.remove()})),n.forEach((function(t){return e.show(t)}))}},{key:"clearTransientNotifications",value:function(){this.privateState.notifications=this.privateState.notifications.filter((function(e){return"transient"!==e.type}))}},{key:"show",value:function(e){this.checkMessage(e.message);var t=e.prepend?this.prependNotification:this.appendNotification,n="#notificationContainer";if(e.placeat)n=e.placeat;else{var r=".modal.open .modal-content",i=document.querySelector(r);i&&(i.querySelector("#modalNotificationContainer")||dl(i).prepend('<div id="modalNotificationContainer"/>'),n="".concat(r," #modalNotificationContainer"),t=this.prependNotification)}var a=e.group||(n?n.toString():"");this.initializeNotificationContainer(n,a);var o=(this.nextNotificationId+=1).toString();return t.call(this,Object.assign(Object.assign({},e),{},{noclear:!!e.noclear,group:a,notificationId:e.id,notificationInstanceId:o,type:e.type||"transient"})),o}},{key:"scrollToNotification",value:function(e){setTimeout((function(){var t=document.querySelector("[data-notification-instance-id='".concat(e,"']"));t&&S.helper.lazyScrollTo(t,250)}))}},{key:"toast",value:function(e){this.checkMessage(e.message);var t=e.placeat?dl(e.placeat):void 0;if(!t||!t.length)throw new Error("A valid selector is required for the placeat option when using Notification.toast().");var n=document.createElement("div");n.style.position="absolute",n.style.top="".concat(t.offset().top,"px"),n.style.left="".concat(t.offset().left,"px"),n.style.zIndex="1000",document.body.appendChild(n);var r=ut({render:function(){return Object(a["createVNode"])(al,Object.assign(Object.assign({},e),{},{notificationId:e.id,type:"toast",onClosed:function(){r.unmount()}}))}});r.mount(n)}},{key:"initializeNotificationContainer",value:function(e,t){if(e){var n=dl(e);if(!n.children(".notification-group").length){var r=window.CoreHome.NotificationGroup,i=ut({template:'<NotificationGroup :group="group"></NotificationGroup>',data:function(){return{group:t}}});i.component("NotificationGroup",r),i.mount(n[0])}}}},{key:"checkMessage",value:function(e){if(!e)throw new Error("No message given, cannot display notification")}}]),e}(),ml=new pl,fl=ml;dl((function(){return ml.parseNotificationDivs()})),
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.angular.module("piwikApp").factory("notifications",(function(){return rl}));var il={class:"notification-group"},al=["innerHTML"];function ol(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Notification");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",il,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.notifications,(function(t,n){return Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:t.id||"no-id-".concat(n),"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(a["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:function(n){return e.removeNotification(t.id)}},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,al)]})),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"])})),128))])}var ll=Object(a["defineComponent"])({props:{group:String},components:{Notification:zo},computed:{notifications:function(){var e=this;return rl.state.notifications.filter((function(t){return e.group?e.group===t.group:!t.group}))}},methods:{removeNotification:function(e){rl.remove(e)}}});ll.render=ol;var cl=ll;
+window.angular.module("piwikApp").factory("notifications",(function(){return fl}));var hl={class:"notification-group"},gl=["innerHTML"];function vl(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Notification");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",hl,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.notifications,(function(t,n){return Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:t.id||"no-id-".concat(n),"notification-id":t.id,title:t.title,context:t.context,type:t.type,noclear:t.noclear,"toast-length":t.toastLength,style:Object(a["normalizeStyle"])(t.style),animate:t.animate,message:t.message,"notification-instance-id":t.notificationInstanceId,"css-class":t.class,onClosed:function(n){return e.removeNotification(t.id)}},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",{innerHTML:e.$sanitize(t.message)},null,8,gl)]})),_:2},1032,["notification-id","title","context","type","noclear","toast-length","style","animate","message","notification-instance-id","css-class","onClosed"])})),128))])}var bl=Object(a["defineComponent"])({props:{group:String},components:{Notification:al},computed:{notifications:function(){var e=this;return fl.state.notifications.filter((function(t){return e.group?e.group===t.group:!t.group}))}},methods:{removeNotification:function(e){fl.remove(e)}}});bl.render=vl;var yl=bl;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function sl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ul(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function dl(e,t,n){return t&&ul(e.prototype,t),n&&ul(e,n),e}function pl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function wl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ol(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function jl(e,t,n){return t&&Ol(e.prototype,t),n&&Ol(e,n),e}function kl(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 ml=function(){function e(){var t=this;sl(this,e),pl(this,"privateState",Object(a["reactive"])({pages:[]})),pl(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),pl(this,"fetchAllPagesPromise",void 0),pl(this,"pages",Object(a["computed"])((function(){return t.state.value.pages})))}return dl(e,[{key:"findPageInCategory",value:function(e){return this.pages.value.find((function(t){return t&&t.category&&t.category.id===e&&t.subcategory&&t.subcategory.id}))}},{key:"findPage",value:function(e,t){return this.pages.value.find((function(n){return n&&n.category&&n.subcategory&&n.category.id===e&&"".concat(n.subcategory.id)===t}))}},{key:"reloadAllPages",value:function(){return delete this.fetchAllPagesPromise,this.getAllPages()}},{key:"getAllPages",value:function(){var e=this;return this.fetchAllPagesPromise||(this.fetchAllPagesPromise=Je.fetch({method:"API.getReportPagesMetadata",filter_limit:"-1"}).then((function(t){return e.privateState.pages=t,e.pages.value}))),this.fetchAllPagesPromise.then((function(){return e.pages.value}))}}]),e}(),fl=new ml;function hl(e){return yl(e)||bl(e)||vl(e)||gl()}function gl(){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 vl(e,t){if(e){if("string"===typeof e)return wl(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)?wl(e,t):void 0}}function bl(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function yl(e){if(Array.isArray(e))return wl(e)}function wl(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
+ */var Sl=function(){function e(){var t=this;wl(this,e),kl(this,"privateState",Object(a["reactive"])({pages:[]})),kl(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),kl(this,"fetchAllPagesPromise",void 0),kl(this,"pages",Object(a["computed"])((function(){return t.state.value.pages})))}return jl(e,[{key:"findPageInCategory",value:function(e){return this.pages.value.find((function(t){return t&&t.category&&t.category.id===e&&t.subcategory&&t.subcategory.id}))}},{key:"findPage",value:function(e,t){return this.pages.value.find((function(n){return n&&n.category&&n.subcategory&&n.category.id===e&&"".concat(n.subcategory.id)===t}))}},{key:"reloadAllPages",value:function(){return delete this.fetchAllPagesPromise,this.getAllPages()}},{key:"getAllPages",value:function(){var e=this;return this.fetchAllPagesPromise||(this.fetchAllPagesPromise=Xe.fetch({method:"API.getReportPagesMetadata",filter_limit:"-1"}).then((function(t){return e.privateState.pages=t,e.pages.value}))),this.fetchAllPagesPromise.then((function(){return e.pages.value}))}}]),e}(),Cl=new Sl;function El(e){return Nl(e)||Vl(e)||Pl(e)||Dl()}function Dl(){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 Pl(e,t){if(e){if("string"===typeof e)return Tl(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)?Tl(e,t):void 0}}function Vl(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Nl(e){if(Array.isArray(e))return Tl(e)}function Tl(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Ol(e){var t=hl(e||[]);return t.sort((function(e,t){return e.order<t.order?-1:e.order>t.order?1:0})),t}
+ */function Al(e){var t=El(e||[]);return t.sort((function(e,t){return e.order<t.order?-1:e.order>t.order?1:0})),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 jl(e){var t=e;return t.subcategories?t.subcategories:[]}
+ */function Il(e){var t=e;return t.subcategories?t.subcategories:[]}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function kl(e){var t=e;return t.subcategories?t.subcategories:[]}function Sl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cl(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function El(e,t,n){return t&&Cl(e.prototype,t),n&&Cl(e,n),e}function Dl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function xl(e){var t=e;return t.subcategories?t.subcategories:[]}function Bl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ml(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Ll(e,t,n){return t&&Ml(e.prototype,t),n&&Ml(e,n),e}function Rl(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
- */function Pl(e){var t=parseFloat(e);return!Number.isNaN(t)&&Number.isFinite(t)}var Vl=function(){function e(){var t=this;Sl(this,e),Dl(this,"privateState",Object(a["reactive"])({activeCategoryId:null,activeSubcategoryId:null,activeSubsubcategoryId:null})),Dl(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),Dl(this,"activeCategory",Object(a["computed"])((function(){return t.state.value.activeCategoryId||Ce.parsed.value.category}))),Dl(this,"activeSubcategory",Object(a["computed"])((function(){return t.state.value.activeSubcategoryId||Ce.parsed.value.subcategory}))),Dl(this,"activeSubsubcategory",Object(a["computed"])((function(){var e=t.state.value.activeSubsubcategoryId;if(e)return e;var n=t.findSubcategory(t.activeCategory.value,t.activeSubcategory.value);return n.subsubcategory&&n.subsubcategory.id===t.activeSubcategory.value?n.subsubcategory.id:null}))),Dl(this,"menu",Object(a["computed"])((function(){return t.buildMenuFromPages()})))}return El(e,[{key:"fetchMenuItems",value:function(){var e=this;return fl.getAllPages().then((function(){return e.menu.value}))}},{key:"reloadMenuItems",value:function(){var e=this;return fl.reloadAllPages().then((function(){return e.menu.value}))}},{key:"findSubcategory",value:function(e,t){var n=void 0,r=void 0,i=void 0;return this.menu.value.forEach((function(a){a.id===e&&(jl(a)||[]).forEach((function(e){e.id===t&&(n=a,r=e),e.isGroup&&(kl(e)||[]).forEach((function(o){o.id===t&&(n=a,r=e,i=o)}))}))})),{category:n,subcategory:r,subsubcategory:i}}},{key:"buildMenuFromPages",value:function(){var e=[],t=Ce.parsed.value.category,n=Ce.parsed.value.subcategory,r=fl.pages.value,i={};return r.forEach((function(a){var o=Object.assign({},a.category),l=o.id,c=l===t;if(!i[l]){i[l]=!0,o.subcategories=[];var s=null,u=r.filter((function(e){return e.category.id===l}));u.forEach((function(e){var t=Object.assign({},e.subcategory),r=t.id===n&&c;if(e.widgets&&e.widgets[0]&&Pl(e.subcategory.id)){s||(s=Object.assign({},t),s.name=C("CoreHome_ChooseX",[o.name]),s.isGroup=!0,s.subcategories=[],s.order=10),r&&(s.name=t.name);var i=a.subcategory.id;return t.tooltip="".concat(t.name," (id = ").concat(i,")"),void s.subcategories.push(t)}o.subcategories.push(t)})),s&&s.subcategories&&s.subcategories.length<=5?s.subcategories.forEach((function(e){return o.subcategories.push(e)})):s&&o.subcategories.push(s),o.subcategories=Ol(jl(o)),e.push(o)}})),Ol(e)}},{key:"toggleCategory",value:function(e){return this.privateState.activeSubcategoryId=null,this.privateState.activeSubsubcategoryId=null,this.privateState.activeCategoryId===e.id?(this.privateState.activeCategoryId=null,!1):(this.privateState.activeCategoryId=e.id,!0)}},{key:"enterSubcategory",value:function(e,t,n){e&&t&&(this.privateState.activeCategoryId=e.id,this.privateState.activeSubcategoryId=t.id,n&&(this.privateState.activeSubsubcategoryId=n.id))}}]),e}(),Nl=new Vl;function Tl(e){return Tl="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},Tl(e)}function Al(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function xl(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Il(e,t,n){return t&&xl(e.prototype,t),n&&xl(e,n),e}function Bl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function Fl(e){var t=parseFloat(e);return!Number.isNaN(t)&&Number.isFinite(t)}var _l=function(){function e(){var t=this;Bl(this,e),Rl(this,"privateState",Object(a["reactive"])({activeCategoryId:null,activeSubcategoryId:null,activeSubsubcategoryId:null})),Rl(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),Rl(this,"activeCategory",Object(a["computed"])((function(){return t.state.value.activeCategoryId||Ce.parsed.value.category}))),Rl(this,"activeSubcategory",Object(a["computed"])((function(){return t.state.value.activeSubcategoryId||Ce.parsed.value.subcategory}))),Rl(this,"activeSubsubcategory",Object(a["computed"])((function(){var e=t.state.value.activeSubsubcategoryId;if(e)return e;var n=t.findSubcategory(t.activeCategory.value,t.activeSubcategory.value);return n.subsubcategory&&n.subsubcategory.id===t.activeSubcategory.value?n.subsubcategory.id:null}))),Rl(this,"menu",Object(a["computed"])((function(){return t.buildMenuFromPages()})))}return Ll(e,[{key:"fetchMenuItems",value:function(){var e=this;return Cl.getAllPages().then((function(){return e.menu.value}))}},{key:"reloadMenuItems",value:function(){var e=this;return Cl.reloadAllPages().then((function(){return e.menu.value}))}},{key:"findSubcategory",value:function(e,t){var n=void 0,r=void 0,i=void 0;return this.menu.value.forEach((function(a){a.id===e&&(Il(a)||[]).forEach((function(e){e.id===t&&(n=a,r=e),e.isGroup&&(xl(e)||[]).forEach((function(o){o.id===t&&(n=a,r=e,i=o)}))}))})),{category:n,subcategory:r,subsubcategory:i}}},{key:"buildMenuFromPages",value:function(){var e=[],t=Ce.parsed.value.category,n=Ce.parsed.value.subcategory,r=Cl.pages.value,i={};return r.forEach((function(a){var o=Object.assign({},a.category),l=o.id,c=l===t;if(!i[l]){i[l]=!0,o.subcategories=[];var s=null,u=r.filter((function(e){return e.category.id===l}));u.forEach((function(e){var t=Object.assign({},e.subcategory),r=t.id===n&&c;if(e.widgets&&e.widgets[0]&&Fl(e.subcategory.id)){s||(s=Object.assign({},t),s.name=C("CoreHome_ChooseX",[o.name]),s.isGroup=!0,s.subcategories=[],s.order=10),r&&(s.name=t.name);var i=a.subcategory.id;return t.tooltip="".concat(t.name," (id = ").concat(i,")"),void s.subcategories.push(t)}o.subcategories.push(t)})),s&&s.subcategories&&s.subcategories.length<=5?s.subcategories.forEach((function(e){return o.subcategories.push(e)})):s&&o.subcategories.push(s),o.subcategories=Al(Il(o)),e.push(o)}})),Al(e)}},{key:"toggleCategory",value:function(e){return this.privateState.activeSubcategoryId=null,this.privateState.activeSubsubcategoryId=null,this.privateState.activeCategoryId===e.id?(this.privateState.activeCategoryId=null,!1):(this.privateState.activeCategoryId=e.id,!0)}},{key:"enterSubcategory",value:function(e,t,n){e&&t&&(this.privateState.activeCategoryId=e.id,this.privateState.activeSubcategoryId=t.id,n&&(this.privateState.activeSubsubcategoryId=n.id))}}]),e}(),$l=new _l;function Hl(e){return Hl="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},Hl(e)}function Ul(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ql(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Wl(e,t,n){return t&&ql(e.prototype,t),n&&ql(e,n),e}function Jl(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
- */function Ll(e){var t=e;return t.widgets?t.widgets:[]}var Ml=function(){function e(){var t=this;Al(this,e),Bl(this,"privateState",Object(a["reactive"])({isFetchedFirstTime:!1,categorizedWidgets:{}})),Bl(this,"state",Object(a["computed"])((function(){return t.privateState.isFetchedFirstTime||t.fetchAvailableWidgets(),Object(a["readonly"])(t.privateState)}))),Bl(this,"widgets",Object(a["computed"])((function(){return t.state.value.categorizedWidgets})))}return Il(e,[{key:"fetchAvailableWidgets",value:function(){var e=this;return Ce.parsed.value.idSite?(this.privateState.isFetchedFirstTime=!0,new Promise((function(t,n){try{window.widgetsHelper.getAvailableWidgets((function(n){var r=n;e.privateState.categorizedWidgets=r,t(e.widgets.value)}))}catch(r){n(r)}}))):Promise.resolve(this.widgets.value)}},{key:"reloadAvailableWidgets",value:function(){return"object"===Tl(window.widgetsHelper)&&window.widgetsHelper.availableWidgets&&delete window.widgetsHelper.availableWidgets,this.fetchAvailableWidgets()}}]),e}(),Fl=new Ml,Rl="reportingmenu-help",_l=Object(a["defineComponent"])({components:{MenuDropdown:Ur},directives:{SideNav:dn},props:{},data:function(){return{showSubcategoryHelpOnLoad:null,initialLoad:!0,helpShownCategory:null}},computed:{sideNavActivator:function(){return document.querySelector("nav .activateLeftMenu")},menu:function(){return Nl.menu.value},activeCategory:function(){return Nl.activeCategory.value},activeSubcategory:function(){return Nl.activeSubcategory.value},activeSubsubcategory:function(){return Nl.activeSubsubcategory.value},displayedCategory:function(){return Ce.parsed.value.category},displayedSubcategory:function(){return Ce.parsed.value.subcategory}},created:function(){var e=this;Nl.fetchMenuItems().then((function(t){if(!Ce.parsed.value.subcategory){var n=t[0],r=n.subcategories[0];Nl.enterSubcategory(n,r),e.propagateUrlChange(n,r)}})),Object(a["watch"])((function(){return Ce.parsed.value}),(function(e){var t=Nl.findSubcategory(e.category,e.subcategory);Nl.enterSubcategory(t.category,t.subcategory,t.subsubcategory)})),S.on("piwikPageChange",(function(){e.initialLoad||window.globalAjaxQueue.abort(),e.helpShownCategory=null,e.showSubcategoryHelpOnLoad&&(e.showHelp(e.showSubcategoryHelpOnLoad.category,e.showSubcategoryHelpOnLoad.subcategory),e.showSubcategoryHelpOnLoad=null),window.$("#loadingError").hide(),e.initialLoad=!1})),S.on("updateReportingMenu",(function(){Nl.reloadMenuItems().then((function(){var e=Ce.parsed.value.category,t=Ce.parsed.value.subcategory;if(e&&t){var n=Nl.findSubcategory(e,t);n.category&&Nl.enterSubcategory(n.category,n.subcategory,n.subsubcategory)}})),Fl.reloadAvailableWidgets()}))},methods:{propagateUrlChange:function(e,t){var n=Ce.parsed.value;n.category===e.id&&n.subcategory===t.id?this.loadSubcategory(e,t):Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{category:e.id,subcategory:t.id}))},loadCategory:function(e){rl.remove(Rl);var t=Nl.toggleCategory(e);if(t&&e.subcategories&&1===e.subcategories.length){this.helpShownCategory=null;var n=e.subcategories[0];this.propagateUrlChange(e,n)}},loadSubcategory:function(e,t,n){n&&(n.shiftKey||n.ctrlKey||n.metaKey)||(rl.remove(Rl),t&&t.id===this.activeSubcategory&&(this.helpShownCategory=null,setTimeout((function(){S.postEvent("loadPage",e.id,t.id)}))))},makeUrl:function(e,t){var n=Ce.parsed.value,r=n.idSite,i=n.period,a=n.date,o=n.segment,l=n.comparePeriods,c=n.compareDates,s=n.compareSegments;return Ce.stringify({idSite:r,period:i,date:a,segment:o,comparePeriods:l,compareDates:c,compareSegments:s,category:e.id,subcategory:t.id})},htmlEntities:function(e){return S.helper.htmlEntities(e)},showHelp:function(e,t,n){var r=Ce.parsed.value,i=r.category,a=r.subcategory;if((i!==e.id||a!==t.id)&&n)return this.showSubcategoryHelpOnLoad={category:e,subcategory:t},void Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{category:e.id,subcategory:t.id}));if(this.helpShownCategory&&e.id===this.helpShownCategory.category&&t.id===this.helpShownCategory.subcategory)return rl.remove(Rl),void(this.helpShownCategory=null);var o=C("CoreHome_ReportingCategoryHelpPrefix",e.name,t.name),l="<strong>".concat(o,"</strong><br/>");rl.show({context:"info",id:Rl,type:"help",noclear:!0,class:"help-notification",message:l+t.help,placeat:"#notificationContainer",prepend:!0}),this.helpShownCategory={category:e.id,subcategory:t.id}}}});_l.render=Mo;var $l=_l;
+ */function Gl(e){var t=e;return t.widgets?t.widgets:[]}var zl=function(){function e(){var t=this;Ul(this,e),Jl(this,"privateState",Object(a["reactive"])({isFetchedFirstTime:!1,categorizedWidgets:{}})),Jl(this,"state",Object(a["computed"])((function(){return t.privateState.isFetchedFirstTime||t.fetchAvailableWidgets(),Object(a["readonly"])(t.privateState)}))),Jl(this,"widgets",Object(a["computed"])((function(){return t.state.value.categorizedWidgets})))}return Wl(e,[{key:"fetchAvailableWidgets",value:function(){var e=this;return Ce.parsed.value.idSite?(this.privateState.isFetchedFirstTime=!0,new Promise((function(t,n){try{window.widgetsHelper.getAvailableWidgets((function(n){var r=n;e.privateState.categorizedWidgets=r,t(e.widgets.value)}))}catch(r){n(r)}}))):Promise.resolve(this.widgets.value)}},{key:"reloadAvailableWidgets",value:function(){return"object"===Hl(window.widgetsHelper)&&window.widgetsHelper.availableWidgets&&delete window.widgetsHelper.availableWidgets,this.fetchAvailableWidgets()}}]),e}(),Yl=new zl,Ql="reportingmenu-help",Kl=Object(a["defineComponent"])({components:{MenuDropdown:ei},directives:{SideNav:yn},props:{},data:function(){return{showSubcategoryHelpOnLoad:null,initialLoad:!0,helpShownCategory:null}},computed:{sideNavActivator:function(){return document.querySelector("nav .activateLeftMenu")},menu:function(){return $l.menu.value},activeCategory:function(){return $l.activeCategory.value},activeSubcategory:function(){return $l.activeSubcategory.value},activeSubsubcategory:function(){return $l.activeSubsubcategory.value},displayedCategory:function(){return Ce.parsed.value.category},displayedSubcategory:function(){return Ce.parsed.value.subcategory}},created:function(){var e=this;$l.fetchMenuItems().then((function(t){if(!Ce.parsed.value.subcategory){var n=t[0],r=n.subcategories[0];$l.enterSubcategory(n,r),e.propagateUrlChange(n,r)}})),Object(a["watch"])((function(){return Ce.parsed.value}),(function(e){var t=$l.findSubcategory(e.category,e.subcategory);$l.enterSubcategory(t.category,t.subcategory,t.subsubcategory)})),S.on("piwikPageChange",(function(){e.initialLoad||window.globalAjaxQueue.abort(),e.helpShownCategory=null,e.showSubcategoryHelpOnLoad&&(e.showHelp(e.showSubcategoryHelpOnLoad.category,e.showSubcategoryHelpOnLoad.subcategory),e.showSubcategoryHelpOnLoad=null),window.$("#loadingError").hide(),e.initialLoad=!1})),S.on("updateReportingMenu",(function(){$l.reloadMenuItems().then((function(){var e=Ce.parsed.value.category,t=Ce.parsed.value.subcategory;if(e&&t){var n=$l.findSubcategory(e,t);n.category&&$l.enterSubcategory(n.category,n.subcategory,n.subsubcategory)}})),Yl.reloadAvailableWidgets()}))},methods:{propagateUrlChange:function(e,t){var n=Ce.parsed.value;n.category===e.id&&n.subcategory===t.id?this.loadSubcategory(e,t):Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{category:e.id,subcategory:t.id}))},loadCategory:function(e){fl.remove(Ql);var t=$l.toggleCategory(e);if(t&&e.subcategories&&1===e.subcategories.length){this.helpShownCategory=null;var n=e.subcategories[0];this.propagateUrlChange(e,n)}},loadSubcategory:function(e,t,n){n&&(n.shiftKey||n.ctrlKey||n.metaKey)||(fl.remove(Ql),t&&t.id===this.activeSubcategory&&(this.helpShownCategory=null,setTimeout((function(){S.postEvent("loadPage",e.id,t.id)}))))},makeUrl:function(e,t){var n=Ce.parsed.value,r=n.idSite,i=n.period,a=n.date,o=n.segment,l=n.comparePeriods,c=n.compareDates,s=n.compareSegments;return Ce.stringify({idSite:r,period:i,date:a,segment:o,comparePeriods:l,compareDates:c,compareSegments:s,category:e.id,subcategory:t.id})},htmlEntities:function(e){return S.helper.htmlEntities(e)},showHelp:function(e,t,n){var r=Ce.parsed.value,i=r.category,a=r.subcategory;if((i!==e.id||a!==t.id)&&n)return this.showSubcategoryHelpOnLoad={category:e,subcategory:t},void Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{category:e.id,subcategory:t.id}));if(this.helpShownCategory&&e.id===this.helpShownCategory.category&&t.id===this.helpShownCategory.subcategory)return fl.remove(Ql),void(this.helpShownCategory=null);var o=C("CoreHome_ReportingCategoryHelpPrefix",e.name,t.name),l="<strong>".concat(o,"</strong><br/>");fl.show({context:"info",id:Ql,type:"help",noclear:!0,class:"help-notification",message:l+t.help,placeat:"#notificationContainer",prepend:!0}),this.helpShownCategory={category:e.id,subcategory:t.id}}}});Kl.render=zo;var Xl=Kl;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:$l,directiveName:"piwikReportingMenu"});
+ */jt({component:Xl,directiveName:"piwikReportingMenu"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Hl(e){return e.forEach((function(e){e.id===Nl.activeCategory.value&&(e.active=!0,(e.subcategories||[]).forEach((function(e){e.id===Nl.activeSubcategory.value&&(e.active=!0,(e.subcategories||[]).forEach((function(e){e.id===Nl.activeSubsubcategory.value&&(e.active=!0)})))})))})),e}function Ul(){return{get menu(){return Nl.menu.value},findSubcategory:Nl.findSubcategory.bind(Nl),reloadMenuItems:function(){return Nl.reloadMenuItems().then((function(e){return Hl(wt(e))}))},fetchMenuItems:function(){return Nl.fetchMenuItems().then((function(e){return Hl(wt(e))}))}}}
+function Zl(e){return e.forEach((function(e){e.id===$l.activeCategory.value&&(e.active=!0,(e.subcategories||[]).forEach((function(e){e.id===$l.activeSubcategory.value&&(e.active=!0,(e.subcategories||[]).forEach((function(e){e.id===$l.activeSubsubcategory.value&&(e.active=!0)})))})))})),e}function ec(){return{get menu(){return $l.menu.value},findSubcategory:$l.findSubcategory.bind($l),reloadMenuItems:function(){return $l.reloadMenuItems().then((function(e){return Zl(Et(e))}))},fetchMenuItems:function(){return $l.fetchMenuItems().then((function(e){return Zl(Et(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 ql(){return{get pages(){return fl.pages.value},findPageInCategory:function(){return yt(fl.findPageInCategory.apply(fl,arguments))},findPage:function(){return yt(fl.findPage.apply(fl,arguments))},reloadAllPages:function(){return fl.reloadAllPages().then((function(e){return wt(e)}))},getAllPages:function(){return fl.getAllPages().then((function(e){return wt(e)}))}}}function Wl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jl(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Gl(e,t,n){return t&&Jl(e.prototype,t),n&&Jl(e,n),e}function zl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function tc(){return{get pages(){return Cl.pages.value},findPageInCategory:function(){return Ct(Cl.findPageInCategory.apply(Cl,arguments))},findPage:function(){return Ct(Cl.findPage.apply(Cl,arguments))},reloadAllPages:function(){return Cl.reloadAllPages().then((function(e){return Et(e)}))},getAllPages:function(){return Cl.getAllPages().then((function(e){return Et(e)}))}}}function nc(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rc(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function ic(e,t,n){return t&&rc(e.prototype,t),n&&rc(e,n),e}function ac(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
- */window.angular.module("piwikApp.service").factory("reportingMenuModel",Ul),window.angular.module("piwikApp.service").factory("reportingPagesModel",ql);var Yl=function(){function e(){var t=this;Wl(this,e),zl(this,"privateState",Object(a["reactive"])({reports:[]})),zl(this,"state",Object(a["readonly"])(this.privateState)),zl(this,"reports",Object(a["computed"])((function(){return t.state.reports}))),zl(this,"reportsPromise",void 0)}return Gl(e,[{key:"findReport",value:function(e,t){return this.reports.value.find((function(n){return n.module===e&&n.action===t}))}},{key:"fetchReportMetadata",value:function(){var e=this;return this.reportsPromise||(this.reportsPromise=Je.fetch({method:"API.getReportMetadata",filter_limit:"-1",idSite:S.idSite||Ce.parsed.value.idSite}).then((function(t){return e.privateState.reports=t,t}))),this.reportsPromise.then((function(){return e.reports.value}))}}]),e}(),Ql=new Yl;
+ */window.angular.module("piwikApp.service").factory("reportingMenuModel",ec),window.angular.module("piwikApp.service").factory("reportingPagesModel",tc);var oc=function(){function e(){var t=this;nc(this,e),ac(this,"privateState",Object(a["reactive"])({reports:[]})),ac(this,"state",Object(a["readonly"])(this.privateState)),ac(this,"reports",Object(a["computed"])((function(){return t.state.reports}))),ac(this,"reportsPromise",void 0)}return ic(e,[{key:"findReport",value:function(e,t){return this.reports.value.find((function(n){return n.module===e&&n.action===t}))}},{key:"fetchReportMetadata",value:function(){var e=this;return this.reportsPromise||(this.reportsPromise=Xe.fetch({method:"API.getReportMetadata",filter_limit:"-1",idSite:S.idSite||Ce.parsed.value.idSite}).then((function(t){return e.privateState.reports=t,t}))),this.reportsPromise.then((function(){return e.reports.value}))}}]),e}(),lc=new oc;
/*!
* Matomo - free/libre analytics platform
*
* @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 Ql.reports.value},findReport:Ql.findReport.bind(Ql),fetchReportMetadata:function(){return Ql.fetchReportMetadata().then((function(e){return wt(e)}))}}}));var Kl={key:0},Xl={class:"notification system notification-error"},Zl={key:0,rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},ec={class:"theWidgetContent",ref:"widgetContent"};function tc(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",Kl,Object(a["toDisplayString"])(e.widgetName),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Xl,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",Zl,Object(a["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),1)):Object(a["createCommentVNode"])("",!0)])],512),[[a["vShow"],e.loadingFailed]]),Object(a["createElementVNode"])("div",ec,null,512)])}var nc=Object(a["defineComponent"])({props:{widgetParams:Object,widgetName:String},components:{ActivityIndicator:ro},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]))})),mr.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,Je.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}),rl.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))}))}}});nc.render=tc;var rc=nc;
+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;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */gt({component:rc,scope:{piwikWidgetLoader:{vue:"widgetParams",angularJsBind:"="},widgetName:{angularJsBind:"@"}},directiveName:"piwikWidgetLoader"});function ic(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Widget");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.actualContainer,(function(e,t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t},[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{widget:e,"prevent-recursion":!0},null,8,["widget"])])])})),128))])}function ac(e){return cc(e)||lc(e)||dc(e)||oc()}function oc(){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 lc(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function cc(e){if(Array.isArray(e))return pc(e)}function sc(e,t){return fc(e)||mc(e,t)||dc(e,t)||uc()}function uc(){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 dc(e,t){if(e){if("string"===typeof e)return pc(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)?pc(e,t):void 0}}function pc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function mc(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function fc(e){if(Array.isArray(e))return e}var hc=An("CoreHome","Widget"),gc=Object(a["defineComponent"])({props:{container:{type:Array,required:!0}},components:{Widget:hc},computed:{actualContainer:function(){var e,t,n,r=this.container;if(null===r||void 0===r||null===(e=r[0])||void 0===e||!e.parameters)return r;var i=sc(r,1),a=i[0],o="1"===(null===(t=a.parameters)||void 0===t?void 0:t.widget)||1===(null===(n=a.parameters)||void 0===n?void 0:n.widget),l=o&&"graphEvolution"===a.viewDataTable,c=l?Object.assign(Object.assign({},a),{},{parameters:Object.assign(Object.assign({},a.parameters),{},{showtitle:"0"})}):a;return[c].concat(ac(r.slice(1)))}}});gc.render=ic;var vc=gc,bc=(gt({component:vc,scope:{container:{angularJsBind:"=piwikWidgetContainer"}},directiveName:"piwikWidgetContainer"}),{class:"reportsByDimensionView"}),yc={class:"entityList"},wc={class:"listCircle"},Oc=["onClick"],jc={class:"dimension"},kc={class:"reportContainer"},Sc=Object(a["createElementVNode"])("div",{class:"clear"},null,-1);
+ */jt({component:fc,scope:{piwikWidgetLoader:{vue:"widgetParams",angularJsBind:"="},widgetName:{angularJsBind:"@"}},directiveName:"piwikWidgetLoader"});function hc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Widget");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.actualContainer,(function(e,t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t},[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{widget:e,"prevent-recursion":!0},null,8,["widget"])])])})),128))])}function gc(e){return yc(e)||bc(e)||jc(e)||vc()}function vc(){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 bc(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function yc(e){if(Array.isArray(e))return kc(e)}function wc(e,t){return Cc(e)||Sc(e,t)||jc(e,t)||Oc()}function Oc(){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 jc(e,t){if(e){if("string"===typeof e)return kc(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)?kc(e,t):void 0}}function kc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Sc(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Cc(e){if(Array.isArray(e))return e}var Ec=_n("CoreHome","Widget"),Dc=Object(a["defineComponent"])({props:{container:{type:Array,required:!0}},components:{Widget:Ec},computed:{actualContainer:function(){var e,t,n,r=this.container;if(null===r||void 0===r||null===(e=r[0])||void 0===e||!e.parameters)return r;var i=wc(r,1),a=i[0],o="1"===(null===(t=a.parameters)||void 0===t?void 0:t.widget)||1===(null===(n=a.parameters)||void 0===n?void 0:n.widget),l=o&&"graphEvolution"===a.viewDataTable,c=l?Object.assign(Object.assign({},a),{},{parameters:Object.assign(Object.assign({},a.parameters),{},{showtitle:"0"})}):a;return[c].concat(gc(r.slice(1)))}}});Dc.render=hc;var Pc=Dc,Vc=(jt({component:Pc,scope:{container:{angularJsBind:"=piwikWidgetContainer"}},directiveName:"piwikWidgetContainer"}),{class:"reportsByDimensionView"}),Nc={class:"entityList"},Tc={class:"listCircle"},Ac=["onClick"],Ic={class:"dimension"},xc={class:"reportContainer"},Bc=Object(a["createElementVNode"])("div",{class:"clear"},null,-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 Cc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("WidgetLoader");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",bc,[Object(a["createElementVNode"])("div",yc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.widgetsByCategory,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"dimensionCategory",key:t.name},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name)+" ",1),Object(a["createElementVNode"])("ul",wc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.widgets,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["reportDimension",{activeDimension:e.selectedWidget.uniqueId===t.uniqueId}]),key:t.uniqueId,onClick:function(n){return e.selectWidget(t)}},[Object(a["createElementVNode"])("span",jc,Object(a["toDisplayString"])(t.name),1)],10,Oc)})),128))])])})),128))]),Object(a["createElementVNode"])("div",kc,[e.selectedWidget.parameters?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"widget-params":e.selectedWidget.parameters,class:"dimensionReport"},null,8,["widget-params"])):Object(a["createCommentVNode"])("",!0)]),Sc])}function Ec(e,t){return Tc(e)||Nc(e,t)||Pc(e,t)||Dc()}function Dc(){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 Pc(e,t){if(e){if("string"===typeof e)return Vc(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)?Vc(e,t):void 0}}function Vc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Nc(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Tc(e){if(Array.isArray(e))return e}var Ac=Object(a["defineComponent"])({props:{widgets:Array},components:{WidgetLoader:rc},data:function(){return{selectedWidget:null}},created:function(){var e=Ec(this.widgetsSorted,1);this.selectedWidget=e[0]},computed:{widgetsSorted:function(){return Ol(this.widgets)},widgetsByCategory:function(){var e={};return this.widgetsSorted.forEach((function(t){var n,r=null===(n=t.subcategory)||void 0===n?void 0:n.name;r&&(e[r]||(e[r]={name:r,order:t.order,widgets:[]}),e[r].widgets.push(t))})),Ol(Object.values(e))}},methods:{selectWidget:function(e){this.selectedWidget=Object.assign({},e)}}});Ac.render=Cc;var xc=Ac,Ic=(gt({component:xc,scope:{widgets:{angularJsBind:"=piwikWidgetByDimensionContainer",transform:function(e){return e.widgets}}},directiveName:"piwikWidgetByDimensionContainer"}),["id"]),Bc={key:1},Lc={key:2};
+ */function Mc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("WidgetLoader");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Vc,[Object(a["createElementVNode"])("div",Nc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.widgetsByCategory,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"dimensionCategory",key:t.name},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(t.name)+" ",1),Object(a["createElementVNode"])("ul",Tc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.widgets,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{class:Object(a["normalizeClass"])(["reportDimension",{activeDimension:e.selectedWidget.uniqueId===t.uniqueId}]),key:t.uniqueId,onClick:function(n){return e.selectWidget(t)}},[Object(a["createElementVNode"])("span",Ic,Object(a["toDisplayString"])(t.name),1)],10,Ac)})),128))])])})),128))]),Object(a["createElementVNode"])("div",xc,[e.selectedWidget.parameters?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"widget-params":e.selectedWidget.parameters,class:"dimensionReport"},null,8,["widget-params"])):Object(a["createCommentVNode"])("",!0)]),Bc])}function Lc(e,t){return Hc(e)||$c(e,t)||Fc(e,t)||Rc()}function Rc(){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 Fc(e,t){if(e){if("string"===typeof e)return _c(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)?_c(e,t):void 0}}function _c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $c(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Hc(e){if(Array.isArray(e))return e}var Uc=Object(a["defineComponent"])({props:{widgets:Array},components:{WidgetLoader:fc},data:function(){return{selectedWidget:null}},created:function(){var e=Lc(this.widgetsSorted,1);this.selectedWidget=e[0]},computed:{widgetsSorted:function(){return Al(this.widgets)},widgetsByCategory:function(){var e={};return this.widgetsSorted.forEach((function(t){var n,r=null===(n=t.subcategory)||void 0===n?void 0:n.name;r&&(e[r]||(e[r]={name:r,order:t.order,widgets:[]}),e[r].widgets.push(t))})),Al(Object.values(e))}},methods:{selectWidget:function(e){this.selectedWidget=Object.assign({},e)}}});Uc.render=Mc;var qc=Uc,Wc=(jt({component:qc,scope:{widgets:{angularJsBind:"=piwikWidgetByDimensionContainer",transform:function(e){return e.widgets}}},directiveName:"piwikWidgetByDimensionContainer"}),["id"]),Jc={key:1},Gc={key:2};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Mc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("WidgetLoader"),c=Object(a["resolveComponent"])("WidgetContainer"),s=Object(a["resolveComponent"])("WidgetByDimensionContainer"),u=Object(a["resolveDirective"])("tooltips");return e.actualWidget?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["matomo-widget",{isFirstWidgetInPage:e.actualWidget.isFirstInPage}]),id:e.actualWidget.uniqueId},[!e.actualWidget.isContainer&&e.actualWidget.parameters?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"widget-params":e.actualWidget.parameters,"widget-name":e.actualWidget.name},null,8,["widget-params","widget-name"])):Object(a["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"!==e.actualWidget.layout&&!this.preventRecursion?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Bc,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(c,{container:e.actualWidget.widgets},null,8,["container"])])])):Object(a["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"===e.actualWidget.layout?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Lc,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{widgets:e.actualWidget.widgets},null,8,["widgets"])])])):Object(a["createCommentVNode"])("",!0)],10,Ic)),[[a["vShow"],e.showWidget],[u,{content:e.tooltipContent}]]):Object(a["createCommentVNode"])("",!0)}function Fc(e,t){var n=void 0;return Object.values(e||{}).some((function(e){return n=e.find((function(e){var n;return e&&e.isContainer&&(null===(n=e.parameters)||void 0===n?void 0:n.containerId)===t})),n})),n}var Rc=Object(a["defineComponent"])({props:{widget:Object,widgetized:Boolean,containerid:String,preventRecursion:Boolean},components:{WidgetLoader:rc,WidgetContainer:vc,WidgetByDimensionContainer:xc},directives:{Tooltips:Er},data:function(){return{showWidget:!1}},setup:function(){function e(){var e=window.$(this);if(""===e.attr("piwik-field")||e.hasClass("matomo-form-field"))return"";var t=window.$(this).attr("title")||"";return window.vueSanitize(t.replace(/\n/g,"<br />"))}return{tooltipContent:e}},created:function(){var e=this,t=this.actualWidget;if(t&&t.middlewareParameters){var n=t.middlewareParameters;Je.fetch(n).then((function(t){e.showWidget=!!t}))}else this.showWidget=!0},computed:{allWidgets:function(){return Fl.widgets.value},actualWidget:function(){var e=this,t=this.widget;if(t){var n=Object.assign({},t);if(t&&t.isReport&&!t.documentation){var r=Ql.findReport(t.module,t.action);r&&r.documentation&&(n.documentation=r.documentation)}return t}if(this.containerid){var i=Fc(this.allWidgets,this.containerid);if(i){var a=Object.assign({},i);if(this.widgetized){a.isFirstInPage=!0,a.parameters=Object.assign(Object.assign({},a.parameters),{},{widget:"1"});var o=Ll(a);o&&(a.widgets=o.map((function(t){return Object.assign(Object.assign({},t),{},{parameters:Object.assign(Object.assign({},t.parameters),{},{widget:"1",containerId:e.containerid})})})))}return a}}return null}}});Rc.render=Mc;var _c=Rc,$c=(gt({component:_c,scope:{widget:{angularJsBind:"=?piwikWidget"},widgetized:{angularJsBind:"=?"},containerid:{angularJsBind:"@"}},directiveName:"piwikWidget"}),{class:"reporting-page"}),Hc={key:1,class:"col s12 l6 leftWidgetColumn"},Uc={key:2,class:"col s12 l6 rightWidgetColumn"};
+ */function zc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("WidgetLoader"),c=Object(a["resolveComponent"])("WidgetContainer"),s=Object(a["resolveComponent"])("WidgetByDimensionContainer"),u=Object(a["resolveDirective"])("tooltips");return e.actualWidget?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:0,class:Object(a["normalizeClass"])(["matomo-widget",{isFirstWidgetInPage:e.actualWidget.isFirstInPage}]),id:e.actualWidget.uniqueId},[!e.actualWidget.isContainer&&e.actualWidget.parameters?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,"widget-params":e.actualWidget.parameters,"widget-name":e.actualWidget.name},null,8,["widget-params","widget-name"])):Object(a["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"!==e.actualWidget.layout&&!this.preventRecursion?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Jc,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(c,{container:e.actualWidget.widgets},null,8,["container"])])])):Object(a["createCommentVNode"])("",!0),e.actualWidget.isContainer&&"ByDimension"===e.actualWidget.layout?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Gc,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(s,{widgets:e.actualWidget.widgets},null,8,["widgets"])])])):Object(a["createCommentVNode"])("",!0)],10,Wc)),[[a["vShow"],e.showWidget],[u,{content:e.tooltipContent}]]):Object(a["createCommentVNode"])("",!0)}function Yc(e,t){var n=void 0;return Object.values(e||{}).some((function(e){return n=e.find((function(e){var n;return e&&e.isContainer&&(null===(n=e.parameters)||void 0===n?void 0:n.containerId)===t})),n})),n}var Qc=Object(a["defineComponent"])({props:{widget:Object,widgetized:Boolean,containerid:String,preventRecursion:Boolean},components:{WidgetLoader:fc,WidgetContainer:Pc,WidgetByDimensionContainer:qc},directives:{Tooltips:Lr},data:function(){return{showWidget:!1}},setup:function(){function e(){var e=window.$(this);if(""===e.attr("piwik-field")||e.hasClass("matomo-form-field"))return"";var t=window.$(this).attr("title")||"";return window.vueSanitize(t.replace(/\n/g,"<br />"))}return{tooltipContent:e}},created:function(){var e=this,t=this.actualWidget;if(t&&t.middlewareParameters){var n=t.middlewareParameters;Xe.fetch(n).then((function(t){e.showWidget=!!t}))}else this.showWidget=!0},computed:{allWidgets:function(){return Yl.widgets.value},actualWidget:function(){var e=this,t=this.widget;if(t){var n=Object.assign({},t);if(t&&t.isReport&&!t.documentation){var r=lc.findReport(t.module,t.action);r&&r.documentation&&(n.documentation=r.documentation)}return t}if(this.containerid){var i=Yc(this.allWidgets,this.containerid);if(i){var a=Object.assign({},i);if(this.widgetized){a.isFirstInPage=!0,a.parameters=Object.assign(Object.assign({},a.parameters),{},{widget:"1"});var o=Gl(a);o&&(a.widgets=o.map((function(t){return Object.assign(Object.assign({},t),{},{parameters:Object.assign(Object.assign({},t.parameters),{},{widget:"1",containerId:e.containerid})})})))}return a}}return null}}});Qc.render=zc;var Kc=Qc,Xc=(jt({component:Kc,scope:{widget:{angularJsBind:"=?piwikWidget"},widgetized:{angularJsBind:"=?"},containerid:{angularJsBind:"@"}},directiveName:"piwikWidget"}),{class:"reporting-page"}),Zc={key:1,class:"col s12 l6 leftWidgetColumn"},es={key:2,class:"col s12 l6 rightWidgetColumn"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function qc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Widget");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",$c,[Object(a["createVNode"])(l,{loading:e.loading},null,8,["loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("CoreHome_NoSuchPage")),513),[[a["vShow"],e.hasNoPage]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.widgets,(function(e){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"row",key:e.uniqueId},[e.group?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(c,{key:0,class:"col s12 fullWidgetColumn",widget:e},null,8,["widget"])),e.group?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Hc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.left,(function(e){return Object(a["openBlock"])(),Object(a["createBlock"])(c,{widget:e,key:e.uniqueId},null,8,["widget"])})),128))])):Object(a["createCommentVNode"])("",!0),e.group?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Uc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.right,(function(e){return Object(a["openBlock"])(),Object(a["createBlock"])(c,{widget:e,key:e.uniqueId},null,8,["widget"])})),128))])):Object(a["createCommentVNode"])("",!0)])})),128))])}function Wc(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Jc(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Gc(e,t,n){return t&&Jc(e.prototype,t),n&&Jc(e,n),e}function zc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Yc(e){return Zc(e)||Xc(e)||Kc(e)||Qc()}function Qc(){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 Kc(e,t){if(e){if("string"===typeof e)return es(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)?es(e,t):void 0}}function Xc(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Zc(e){if(Array.isArray(e))return es(e)}function es(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
+ */function ts(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Widget");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Xc,[Object(a["createVNode"])(l,{loading:e.loading},null,8,["loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("CoreHome_NoSuchPage")),513),[[a["vShow"],e.hasNoPage]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.widgets,(function(e){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:"row",key:e.uniqueId},[e.group?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createBlock"])(c,{key:0,class:"col s12 fullWidgetColumn",widget:e},null,8,["widget"])),e.group?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Zc,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.left,(function(e){return Object(a["openBlock"])(),Object(a["createBlock"])(c,{widget:e,key:e.uniqueId},null,8,["widget"])})),128))])):Object(a["createCommentVNode"])("",!0),e.group?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",es,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.right,(function(e){return Object(a["openBlock"])(),Object(a["createBlock"])(c,{widget:e,key:e.uniqueId},null,8,["widget"])})),128))])):Object(a["createCommentVNode"])("",!0)])})),128))])}function ns(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function rs(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function is(e,t,n){return t&&rs(e.prototype,t),n&&rs(e,n),e}function as(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function os(e){return us(e)||ss(e)||cs(e)||ls()}function ls(){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 cs(e,t){if(e){if("string"===typeof e)return ds(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)?ds(e,t):void 0}}function ss(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function us(e){if(Array.isArray(e))return ds(e)}function ds(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ts(e){return!!(e.isContainer&&e.layout&&"ByDimension"===e.layout||"bydimension"===e.viewDataTable)||(!!e.isWide||e.viewDataTable&&("tableAllColumns"===e.viewDataTable||"sparklines"===e.viewDataTable||"graphEvolution"===e.viewDataTable))}function ns(e){if(e&&e[0]){var t=Yc(e),n=e[0];return n.group?t[0]=Object.assign(Object.assign({},t[0]),{},{left:ns(n.left||[]),right:ns(n.right||[])}):t[0]=Object.assign(Object.assign({},t[0]),{},{isFirstInPage:!0}),t}return e}var rs=function(){function e(){var t=this;Wc(this,e),zc(this,"privateState",Object(a["reactive"])({})),zc(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),zc(this,"page",Object(a["computed"])((function(){return t.state.value.page}))),zc(this,"widgets",Object(a["computed"])((function(){var e=t.page.value;if(!e)return[];var n=[],r={},i=function(e){return e.isReport&&r["".concat(e.module,".").concat(e.action)]},a=function(e){if(!e.isReport)return[];var t=Ql.findReport(e.module,e.action);return t&&t.relatedReports?t.relatedReports:[]};if((e.widgets||[]).forEach((function(e){i(e)||(a(e).forEach((function(e){r["".concat(e.module,".").concat(e.action)]=!0})),n.push(e))})),n=Ol(n),1===n.length)return ns(n);for(var o=[],l=0;l<n.length;l+=1){var c=n[l];if(ts(c)||n[l+1]&&ts(n[l+1]))o.push(Object.assign(Object.assign({},c),{},{widgets:Ol(Ll(c))}));else{var s=0,u=[c],d=[];while(n[l+1]&&!ts(n[l+1]))l+=1,s+=1,s%2===0?u.push(n[l]):d.push(n[l]);o.push({group:!0,left:u,right:d})}}var p=ns(o);return p})))}return Gc(e,[{key:"fetchPage",value:function(e,t){var n=this;return this.resetPage(),Promise.all([fl.getAllPages(),Ql.fetchReportMetadata()]).then((function(){return n.privateState.page=fl.findPage(e,t),n.page.value}))}},{key:"resetPage",value:function(){this.privateState.page=void 0}}]),e}(),is=new rs,as=window,os=as.$;function ls(){var e="category=General_Visitors&subcategory=Live_VisitorLog",t=window.broadcast.buildReportingUrl(e);rl.show({id:"onlyRawData",animate:!1,context:"info",message:C("CoreHome_PeriodHasOnlyRawData",'<a href="'.concat(t,'">'),"</a>"),type:"transient"})}function cs(){rl.remove("onlyRawData")}var ss=Object(a["defineComponent"])({components:{ActivityIndicator:ro,Widget:_c},data:function(){return{loading:!1,hasRawData:!1,hasNoVisits:!1,dateLastChecked:null,hasNoPage:!1}},created:function(){var e=this;is.resetPage(),this.loading=!0,this.renderInitialPage(),Object(a["watch"])((function(){return Ce.parsed.value}),(function(t,n){t.category===n.category&&t.subcategory===n.subcategory&&t.period===n.period&&t.date===n.date&&t.segment===n.segment&&JSON.stringify(t.compareDates)===JSON.stringify(n.compareDates)&&JSON.stringify(t.comparePeriods)===JSON.stringify(n.comparePeriods)&&JSON.stringify(t.compareSegments)===JSON.stringify(n.compareSegments)&&JSON.stringify(t.columns||"")===JSON.stringify(n.columns||"")||(t.date===n.date&&t.period===n.period||(cs(),e.dateLastChecked=null,e.hasRawData=!1,e.hasNoVisits=!1),e.renderPage(t.category,t.subcategory))})),S.on("loadPage",(function(t,n){e.renderPage(t,n)}))},computed:{widgets:function(){return is.widgets.value}},methods:{renderPage:function(e,t){var n=this;if(!e||!t)return is.resetPage(),void(this.loading=!1);var r=Ce.parsed.value,i=r.period,a=r.date;try{p.parse(i,a)}catch(c){return rl.show({id:"invalidDate",animate:!1,context:"error",message:C("CoreHome_DateInvalid"),type:"transient"}),is.resetPage(),void(this.loading=!1)}if(rl.remove("invalidDate"),S.postEvent("piwikPageChange",{}),rl.clearTransientNotifications(),p.parse(i,a).containsToday()&&this.showOnlyRawDataMessageIfRequired(),"Dashboard_Dashboard"===e&&os.isNumeric(t)&&os("[piwik-dashboard]").length){this.loading=!0;var o=os("[piwik-dashboard]"),l=window.angular.element(o).scope();l.fetchDashboard(parseInt(t,10)).then((function(){n.loading=!1}),(function(){n.loading=!1}))}else is.fetchPage(e,t).then((function(){var t=!is.page.value;if(t){var r=fl.findPageInCategory(e);if(r&&r.subcategory)return void Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{subcategory:r.subcategory.id}))}n.hasNoPage=t,n.loading=!1}))},renderInitialPage:function(){var e=Ce.parsed.value;this.renderPage(e.category,e.subcategory)},showOnlyRawDataMessageIfRequired:function(){var e=this;this.hasRawData&&this.hasNoVisits&&ls();var t=Ce.parsed.value,n=t.segment;if(n)cs();else{var r=["Live_VisitorLog","General_RealTime","UserCountryMap_RealTimeMap","MediaAnalytics_TypeAudienceLog","MediaAnalytics_TypeRealTime","FormAnalytics_TypeRealTime","Goals_AddNewGoal"],i=["HeatmapSessionRecording_Heatmaps","HeatmapSessionRecording_SessionRecordings","Marketplace_Marketplace"],a=t.subcategory,o=t.category;if(-1===r.indexOf(a)&&-1===i.indexOf(o)&&-1===a.toLowerCase().indexOf("manage")){var l=6e4;this.dateLastChecked&&(new Date).valueOf()-this.dateLastChecked.valueOf()<l||Je.fetch({method:"VisitsSummary.getVisits"}).then((function(t){return e.dateLastChecked=new Date,t.value>0?(e.hasNoVisits=!1,void cs()):(e.hasNoVisits=!0,e.hasRawData?void ls():Je.fetch({method:"Live.getLastVisitsDetails",filter_limit:1,doNotFetchActions:1}))})).then((function(t){if(!t||0===t.length)return e.hasRawData=!1,void cs();e.hasRawData=!0,ls()}))}else cs()}}}});ss.render=qc;var us=ss,ds=(gt({component:us,directiveName:"piwikReportingPage"}),{class:"report-export-popover row",id:"reportExport"}),ps={class:"col l6"},ms={name:"format"},fs={name:"option_flat"},hs={name:"option_expanded"},gs={name:"option_format_metrics"},vs={class:"col l6"},bs={name:"filter_type"},ys={class:"filter_limit"},ws={name:"filter_limit_all"},Os={key:0,name:"filter_limit"},js={key:1,name:"filter_limit"},ks={class:"col l12"},Ss=["value"],Cs=Object(a["createTextVNode"])("\n "),Es=[Cs],Ds=["innerHTML"],Ps={class:"col l12"},Vs=["href","title"];
+ */function ps(e){return!!(e.isContainer&&e.layout&&"ByDimension"===e.layout||"bydimension"===e.viewDataTable)||(!!e.isWide||e.viewDataTable&&("tableAllColumns"===e.viewDataTable||"sparklines"===e.viewDataTable||"graphEvolution"===e.viewDataTable))}function ms(e){if(e&&e[0]){var t=os(e),n=e[0];return n.group?t[0]=Object.assign(Object.assign({},t[0]),{},{left:ms(n.left||[]),right:ms(n.right||[])}):t[0]=Object.assign(Object.assign({},t[0]),{},{isFirstInPage:!0}),t}return e}var fs=function(){function e(){var t=this;ns(this,e),as(this,"privateState",Object(a["reactive"])({})),as(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),as(this,"page",Object(a["computed"])((function(){return t.state.value.page}))),as(this,"widgets",Object(a["computed"])((function(){var e=t.page.value;if(!e)return[];var n=[],r={},i=function(e){return e.isReport&&r["".concat(e.module,".").concat(e.action)]},a=function(e){if(!e.isReport)return[];var t=lc.findReport(e.module,e.action);return t&&t.relatedReports?t.relatedReports:[]};if((e.widgets||[]).forEach((function(e){i(e)||(a(e).forEach((function(e){r["".concat(e.module,".").concat(e.action)]=!0})),n.push(e))})),n=Al(n),1===n.length)return ms(n);for(var o=[],l=0;l<n.length;l+=1){var c=n[l];if(ps(c)||n[l+1]&&ps(n[l+1]))o.push(Object.assign(Object.assign({},c),{},{widgets:Al(Gl(c))}));else{var s=0,u=[c],d=[];while(n[l+1]&&!ps(n[l+1]))l+=1,s+=1,s%2===0?u.push(n[l]):d.push(n[l]);o.push({group:!0,left:u,right:d})}}var p=ms(o);return p})))}return is(e,[{key:"fetchPage",value:function(e,t){var n=this;return this.resetPage(),Promise.all([Cl.getAllPages(),lc.fetchReportMetadata()]).then((function(){return n.privateState.page=Cl.findPage(e,t),n.page.value}))}},{key:"resetPage",value:function(){this.privateState.page=void 0}}]),e}(),hs=new fs;function gs(){var e="category=General_Visitors&subcategory=Live_VisitorLog",t=window.broadcast.buildReportingUrl(e);fl.show({id:"onlyRawData",animate:!1,context:"info",message:C("CoreHome_PeriodHasOnlyRawData",'<a href="'.concat(t,'">'),"</a>"),type:"transient"})}function vs(){fl.remove("onlyRawData")}var bs=Object(a["defineComponent"])({components:{ActivityIndicator:ho,Widget:Kc},data:function(){return{loading:!1,hasRawData:!1,hasNoVisits:!1,dateLastChecked:null,hasNoPage:!1}},created:function(){var e=this;hs.resetPage(),this.loading=!0,this.renderInitialPage(),Object(a["watch"])((function(){return Ce.parsed.value}),(function(t,n){t.category===n.category&&t.subcategory===n.subcategory&&t.period===n.period&&t.date===n.date&&t.segment===n.segment&&JSON.stringify(t.compareDates)===JSON.stringify(n.compareDates)&&JSON.stringify(t.comparePeriods)===JSON.stringify(n.comparePeriods)&&JSON.stringify(t.compareSegments)===JSON.stringify(n.compareSegments)&&JSON.stringify(t.columns||"")===JSON.stringify(n.columns||"")||(t.date===n.date&&t.period===n.period||(vs(),e.dateLastChecked=null,e.hasRawData=!1,e.hasNoVisits=!1),e.renderPage(t.category,t.subcategory))})),S.on("loadPage",(function(t,n){e.renderPage(t,n)}))},computed:{widgets:function(){return hs.widgets.value}},methods:{renderPage:function(e,t){var n=this;if(!e||!t)return hs.resetPage(),void(this.loading=!1);var r=Ce.parsed.value,i=r.period,a=r.date;try{p.parse(i,a)}catch(l){return fl.show({id:"invalidDate",animate:!1,context:"error",message:C("CoreHome_DateInvalid"),type:"transient"}),hs.resetPage(),void(this.loading=!1)}fl.remove("invalidDate"),S.postEvent("piwikPageChange",{}),fl.clearTransientNotifications(),p.parse(i,a).containsToday()&&this.showOnlyRawDataMessageIfRequired();var o={category:e,subcategory:t};if(S.postEvent("ReportingPage.loadPage",o),o.promise)return this.loading=!0,void Promise.resolve(o.promise).finally((function(){n.loading=!1}));hs.fetchPage(e,t).then((function(){var t=!hs.page.value;if(t){var r=Cl.findPageInCategory(e);if(r&&r.subcategory)return void Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{subcategory:r.subcategory.id}))}n.hasNoPage=t,n.loading=!1}))},renderInitialPage:function(){var e=Ce.parsed.value;this.renderPage(e.category,e.subcategory)},showOnlyRawDataMessageIfRequired:function(){var e=this;this.hasRawData&&this.hasNoVisits&&gs();var t=Ce.parsed.value,n=t.segment;if(n)vs();else{var r=["Live_VisitorLog","General_RealTime","UserCountryMap_RealTimeMap","MediaAnalytics_TypeAudienceLog","MediaAnalytics_TypeRealTime","FormAnalytics_TypeRealTime","Goals_AddNewGoal"],i=["HeatmapSessionRecording_Heatmaps","HeatmapSessionRecording_SessionRecordings","Marketplace_Marketplace"],a=t.subcategory,o=t.category;if(-1===r.indexOf(a)&&-1===i.indexOf(o)&&-1===a.toLowerCase().indexOf("manage")){var l=6e4;this.dateLastChecked&&(new Date).valueOf()-this.dateLastChecked.valueOf()<l||Xe.fetch({method:"VisitsSummary.getVisits"}).then((function(t){return e.dateLastChecked=new Date,t.value>0?(e.hasNoVisits=!1,void vs()):(e.hasNoVisits=!0,e.hasRawData?void gs():Xe.fetch({method:"Live.getLastVisitsDetails",filter_limit:1,doNotFetchActions:1}))})).then((function(t){if(!t||0===t.length)return e.hasRawData=!1,void vs();e.hasRawData=!0,gs()}))}else vs()}}}});bs.render=ts;var ys=bs,ws=(jt({component:ys,directiveName:"piwikReportingPage"}),{class:"report-export-popover row",id:"reportExport"}),Os={class:"col l6"},js={name:"format"},ks={name:"option_flat"},Ss={name:"option_expanded"},Cs={name:"option_format_metrics"},Es={class:"col l6"},Ds={name:"filter_type"},Ps={class:"filter_limit"},Vs={name:"filter_limit_all"},Ns={key:0,name:"filter_limit"},Ts={key:1,name:"filter_limit"},As={class:"col l12"},Is=["value"],xs=Object(a["createTextVNode"])("\n "),Bs=[xs],Ms=["innerHTML"],Ls={class:"col l12"},Rs=["href","title"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Ns(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field"),c=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ds,[Object(a["createElementVNode"])("div",ps,[Object(a["createElementVNode"])("div",ms,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"format",title:e.translate("CoreHome_ExportFormat"),modelValue:e.reportFormat,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.reportFormat=t}),"full-width":!0,options:e.availableReportFormats[e.reportType]},null,8,["title","modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",fs,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_flat",title:e.translate("CoreHome_FlattenReport"),modelValue:e.optionFlat,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.optionFlat=t})},null,8,["title","modelValue"]),[[a["vShow"],e.hasSubtables]])])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",hs,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_expanded",title:e.translate("CoreHome_ExpandSubtables"),modelValue:e.optionExpanded,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.optionExpanded=t})},null,8,["title","modelValue"]),[[a["vShow"],e.hasSubtables&&!e.optionFlat]])])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",gs,[Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_format_metrics",title:e.translate("CoreHome_FormatMetrics"),modelValue:e.optionFormatMetrics,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.optionFormatMetrics=t})},null,8,["title","modelValue"])])])]),Object(a["createElementVNode"])("div",vs,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",bs,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"filter_type",title:e.translate("CoreHome_ReportType"),modelValue:e.reportType,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.reportType=t}),"full-width":!0,options:e.availableReportTypes},null,8,["title","modelValue","options"])])]),Object(a["createElementVNode"])("div",ys,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",ws,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"filter_limit_all",title:e.translate("CoreHome_RowLimit"),modelValue:e.reportLimitAll,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.reportLimitAll=t}),"full-width":!0,options:e.limitAllOptions},null,8,["title","modelValue","options"])],512),[[a["vShow"],!e.maxFilterLimit||e.maxFilterLimit<=0]]),"no"===e.reportLimitAll&&e.maxFilterLimit<=0?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Os,[Object(a["createVNode"])(l,{uicontrol:"number",name:"filter_limit",min:1,modelValue:e.reportLimit,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.reportLimit=t}),"full-width":!0},null,8,["modelValue"])])):Object(a["createCommentVNode"])("",!0),"no"===e.reportLimitAll&&e.maxFilterLimit>0?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",js,[Object(a["createVNode"])(l,{uicontrol:"number",name:"filter_limit",min:1,max:e.maxFilterLimit,modelValue:e.reportLimit,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.reportLimit=t}),value:e.reportLimit,"full-width":!0,title:e.filterLimitTooltip},null,8,["max","modelValue","value","title"])])):Object(a["createCommentVNode"])("",!0)])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",ks,[Object(a["withDirectives"])(Object(a["createElementVNode"])("textarea",{readonly:"",class:"exportFullUrl",value:e.exportLinkWithoutToken},Es,8,Ss),[[c,{}]]),Object(a["createElementVNode"])("div",{class:"tooltip",innerHTML:e.$sanitize(e.translate("CoreHome_ExportTooltipWithLink","<a target=_blank href='?module=UsersManager&action=userSecurity'>","</a>","ENTER_YOUR_TOKEN_AUTH_HERE"))},null,8,Ds)],512),[[a["vShow"],e.showUrl]]),Object(a["createElementVNode"])("div",Ps,[Object(a["createElementVNode"])("a",{class:"btn",href:e.exportLink,target:"_new",title:e.translate("CoreHome_ExportTooltip")},Object(a["toDisplayString"])(e.translate("General_Export")),9,Vs),Object(a["createElementVNode"])("a",{href:"javascript:",onClick:t[8]||(t[8]=function(t){return e.showUrl=!e.showUrl}),class:"toggle-export-url"},[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("CoreHome_ShowExportUrl")),513),[[a["vShow"],!e.showUrl]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("CoreHome_HideExportUrl")),513),[[a["vShow"],e.showUrl]])])])])}function Ts(e,t){return Ls(e)||Bs(e,t)||xs(e,t)||As()}function As(){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 xs(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 Is(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Bs(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Ls(e){if(Array.isArray(e))return e}var Ms=An("CorePluginsAdmin","Field"),Fs=Object(a["defineComponent"])({components:{Field:Ms},directives:{SelectOnFocus:cn},props:{hasSubtables:Boolean,availableReportTypes:Object,availableReportFormats:{type:Object,required:!0},maxFilterLimit:Number,limitAllOptions:Object,dataTable:{type:Object,required:!0},requestParams:[Object,String],apiMethod:{type:String,required:!0},initialReportType:{type:String,default:"default"},initialReportLimit:{type:[String,Number],default:100},initialReportLimitAll:{type:String,default:"yes"},initialOptionFlat:{type:Boolean,default:!1},initialOptionExpanded:{type:Boolean,default:!0},initialOptionFormatMetrics:{type:Boolean,default:!1},initialReportFormat:{type:String,default:"XML"}},data:function(){return{showUrl:!1,reportFormat:this.initialReportFormat,optionFlat:this.initialOptionFlat,optionExpanded:this.initialOptionExpanded,optionFormatMetrics:this.initialOptionFormatMetrics,reportType:this.initialReportType,reportLimitAll:this.initialReportLimitAll,reportLimit:"string"===typeof this.initialReportLimit?parseInt(this.initialReportLimit,10):this.initialReportLimit}},watch:{reportType:function(e){this.availableReportFormats[e][this.reportFormat]||(this.reportFormat="XML")},reportLimit:function(e,t){this.maxFilterLimit&&this.maxFilterLimit>0&&e>this.maxFilterLimit&&(this.reportLimit=t)}},computed:{filterLimitTooltip:function(){var e=C("CoreHome_RowLimit"),t=this.maxFilterLimit?C("General_ComputedMetricMax",this.maxFilterLimit.toString()):"";return"".concat(e," (").concat(t,")")},exportLink:function(){return this.getExportLink(!0)},exportLinkWithoutToken:function(){return this.getExportLink(!1)}},methods:{getExportLink:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.reportFormat,n=this.apiMethod,r=this.reportType,i=this.dataTable;if(t){var a={},o="yes"===this.reportLimitAll?-1:this.reportLimit;this.requestParams&&"string"===typeof this.requestParams&&(a=JSON.parse(this.requestParams));var l=i.param,c=l.segment,s=l.label,u=l.idGoal,d=l.idDimension,p=l.idSite,m=i.param,f=m.date,h=m.period;"RSS"===t&&(f="last10"),"undefined"!==typeof i.param.dateUsedInGraph&&(f=i.param.dateUsedInGraph);var g=S.config.datatable_export_range_as_day.toLowerCase();-1!==g.indexOf(t.toLowerCase())&&"range"===i.param.period&&(h="day"),"range"===i.param.period&&"graphEvolution"===i.param.viewDataTable&&(h="day");var v={module:"API",format:t,idSite:p,period:h,date:f};if("processed"===r){v.method="API.getProcessedReport";var b=n.split("."),y=Ts(b,2);v.apiModule=y[0],v.apiAction=y[1]}else v.method=n;if(i.param.compareDates&&i.param.compareDates.length&&(v.compareDates=i.param.compareDates,v.compare="1"),i.param.comparePeriods&&i.param.comparePeriods.length&&(v.comparePeriods=i.param.comparePeriods,v.compare="1"),i.param.compareSegments&&i.param.compareSegments.length&&(v.compareSegments=i.param.compareSegments,v.compare="1"),"undefined"!==typeof i.param.filter_pattern&&(v.filter_pattern=i.param.filter_pattern),"undefined"!==typeof i.param.filter_pattern_recursive&&(v.filter_pattern_recursive=i.param.filter_pattern_recursive),window.$.isPlainObject(a)&&Object.entries(a).forEach((function(e){var t=Ts(e,2),n=t[0],r=t[1],i=r;!0===i?i=1:!1===i&&(i=0),v[n]=i})),this.optionFlat&&(v.flat=1,"undefined"!==typeof i.param.include_aggregate_rows&&"1"===i.param.include_aggregate_rows&&(v.include_aggregate_rows=1)),!this.optionFlat&&this.optionExpanded&&(v.expanded=1),this.optionFormatMetrics&&(v.format_metrics=1),i.param.pivotBy&&(v.pivotBy=i.param.pivotBy,v.pivotByColumnLimit=20,i.props.pivot_by_column&&(v.pivotByColumn=i.props.pivot_by_column)),"CSV"!==t&&"TSV"!==t&&"RSS"!==t||(v.translateColumnNames=1,v.language=S.language),"undefined"!==typeof c&&(v.segment=decodeURIComponent(c)),"undefined"!==typeof u&&"-1"!==u&&(v.idGoal=u),"undefined"!==typeof d&&"-1"!==d&&(v.idDimension=d),s){var w=s.split(",");if(w.length>1)v.label=w;else{var O=Ts(w,1);v.label=O[0]}}v.token_auth="ENTER_YOUR_TOKEN_AUTH_HERE",!0===e&&(v.token_auth=S.token_auth,v.force_api_session=1),v.filter_limit=o;var j=window.location.href.split("?")[0];return"".concat(j,"?").concat(Ce.stringify(v))}}}});Fs.render=Ns;var Rs=Fs,_s=window,$s=_s.$,Hs={mounted:function(e,t){e.addEventListener("click",(function(){var n=Ce.hashParsed.value.popover,r=$s(e).closest("[data-report]").data("uiControlObject"),i=window.Piwik_Popover.showLoading("Export"),a=t.value.reportFormats,o=r.param.filter_limit;t.value.maxFilterLimit>0&&(o=Math.min(o,t.value.maxFilterLimit));var l=!0===r.param.flat||1===r.param.flat||"1"===r.param.flat,c={initialReportType:"default",initialReportLimit:o>0?o:100,initialReportLimitAll:-1===o?"yes":"no",initialOptionFlat:l,initialOptionExpanded:!0,initialOptionFormatMetrics:!1,hasSubtables:l||r.numberOfSubtables>0,availableReportFormats:{default:a,processed:{XML:a.XML,JSON:a.JSON}},availableReportTypes:{default:C("CoreHome_StandardReport"),processed:C("CoreHome_ReportWithMetadata")},limitAllOptions:{yes:C("General_All"),no:C("CoreHome_CustomLimit")},maxFilterLimit:t.value.maxFilterLimit,dataTable:r,requestParams:t.value.requestParams,apiMethod:t.value.apiMethod},s=it({template:'\n <popover v-bind="bind"/>',data:function(){return{bind:c}}});s.component("popover",Rs);var u=document.createElement("div");s.mount(u);var d=t.value.reportTitle;window.Piwik_Popover.setTitle("".concat(C("General_Export")," ").concat(S.helper.htmlEntities(d))),window.Piwik_Popover.setContent(u),window.Piwik_Popover.onClose((function(){s.unmount(),""!==n&&setTimeout((function(){Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{popover:n})),t.value.onClose&&t.value.onClose()}),100)})),setTimeout((function(){i.dialog(),$s(".exportFullUrl, .btn",i).tooltip({track:!0,show:!1,hide:!1})}),100)}))}};
+ */function Fs(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("Field"),c=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ws,[Object(a["createElementVNode"])("div",Os,[Object(a["createElementVNode"])("div",js,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"format",title:e.translate("CoreHome_ExportFormat"),modelValue:e.reportFormat,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.reportFormat=t}),"full-width":!0,options:e.availableReportFormats[e.reportType]},null,8,["title","modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",ks,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_flat",title:e.translate("CoreHome_FlattenReport"),modelValue:e.optionFlat,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.optionFlat=t})},null,8,["title","modelValue"]),[[a["vShow"],e.hasSubtables]])])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Ss,[Object(a["withDirectives"])(Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_expanded",title:e.translate("CoreHome_ExpandSubtables"),modelValue:e.optionExpanded,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.optionExpanded=t})},null,8,["title","modelValue"]),[[a["vShow"],e.hasSubtables&&!e.optionFlat]])])]),Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Cs,[Object(a["createVNode"])(l,{uicontrol:"checkbox",name:"option_format_metrics",title:e.translate("CoreHome_FormatMetrics"),modelValue:e.optionFormatMetrics,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.optionFormatMetrics=t})},null,8,["title","modelValue"])])])]),Object(a["createElementVNode"])("div",Es,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("div",Ds,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"filter_type",title:e.translate("CoreHome_ReportType"),modelValue:e.reportType,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.reportType=t}),"full-width":!0,options:e.availableReportTypes},null,8,["title","modelValue","options"])])]),Object(a["createElementVNode"])("div",Ps,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Vs,[Object(a["createVNode"])(l,{uicontrol:"radio",name:"filter_limit_all",title:e.translate("CoreHome_RowLimit"),modelValue:e.reportLimitAll,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.reportLimitAll=t}),"full-width":!0,options:e.limitAllOptions},null,8,["title","modelValue","options"])],512),[[a["vShow"],!e.maxFilterLimit||e.maxFilterLimit<=0]]),"no"===e.reportLimitAll&&e.maxFilterLimit<=0?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ns,[Object(a["createVNode"])(l,{uicontrol:"number",name:"filter_limit",min:1,modelValue:e.reportLimit,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.reportLimit=t}),"full-width":!0},null,8,["modelValue"])])):Object(a["createCommentVNode"])("",!0),"no"===e.reportLimitAll&&e.maxFilterLimit>0?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ts,[Object(a["createVNode"])(l,{uicontrol:"number",name:"filter_limit",min:1,max:e.maxFilterLimit,modelValue:e.reportLimit,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.reportLimit=t}),value:e.reportLimit,"full-width":!0,title:e.filterLimitTooltip},null,8,["max","modelValue","value","title"])])):Object(a["createCommentVNode"])("",!0)])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",As,[Object(a["withDirectives"])(Object(a["createElementVNode"])("textarea",{readonly:"",class:"exportFullUrl",value:e.exportLinkWithoutToken},Bs,8,Is),[[c,{}]]),Object(a["createElementVNode"])("div",{class:"tooltip",innerHTML:e.$sanitize(e.translate("CoreHome_ExportTooltipWithLink","<a target=_blank href='?module=UsersManager&action=userSecurity'>","</a>","ENTER_YOUR_TOKEN_AUTH_HERE"))},null,8,Ms)],512),[[a["vShow"],e.showUrl]]),Object(a["createElementVNode"])("div",Ls,[Object(a["createElementVNode"])("a",{class:"btn",href:e.exportLink,target:"_new",title:e.translate("CoreHome_ExportTooltip")},Object(a["toDisplayString"])(e.translate("General_Export")),9,Rs),Object(a["createElementVNode"])("a",{href:"javascript:",onClick:t[8]||(t[8]=function(t){return e.showUrl=!e.showUrl}),class:"toggle-export-url"},[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("CoreHome_ShowExportUrl")),513),[[a["vShow"],!e.showUrl]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("CoreHome_HideExportUrl")),513),[[a["vShow"],e.showUrl]])])])])}function _s(e,t){return Ws(e)||qs(e,t)||Hs(e,t)||$s()}function $s(){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 Hs(e,t){if(e){if("string"===typeof e)return Us(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)?Us(e,t):void 0}}function Us(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function qs(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a=[],o=!0,l=!1;try{for(n=n.call(e);!(o=(r=n.next()).done);o=!0)if(a.push(r.value),t&&a.length===t)break}catch(c){l=!0,i=c}finally{try{o||null==n["return"]||n["return"]()}finally{if(l)throw i}}return a}}function Ws(e){if(Array.isArray(e))return e}var Js=_n("CorePluginsAdmin","Field"),Gs=Object(a["defineComponent"])({components:{Field:Js},directives:{SelectOnFocus:gn},props:{hasSubtables:Boolean,availableReportTypes:Object,availableReportFormats:{type:Object,required:!0},maxFilterLimit:Number,limitAllOptions:Object,dataTable:{type:Object,required:!0},requestParams:[Object,String],apiMethod:{type:String,required:!0},initialReportType:{type:String,default:"default"},initialReportLimit:{type:[String,Number],default:100},initialReportLimitAll:{type:String,default:"yes"},initialOptionFlat:{type:Boolean,default:!1},initialOptionExpanded:{type:Boolean,default:!0},initialOptionFormatMetrics:{type:Boolean,default:!1},initialReportFormat:{type:String,default:"XML"}},data:function(){return{showUrl:!1,reportFormat:this.initialReportFormat,optionFlat:this.initialOptionFlat,optionExpanded:this.initialOptionExpanded,optionFormatMetrics:this.initialOptionFormatMetrics,reportType:this.initialReportType,reportLimitAll:this.initialReportLimitAll,reportLimit:"string"===typeof this.initialReportLimit?parseInt(this.initialReportLimit,10):this.initialReportLimit}},watch:{reportType:function(e){this.availableReportFormats[e][this.reportFormat]||(this.reportFormat="XML")},reportLimit:function(e,t){this.maxFilterLimit&&this.maxFilterLimit>0&&e>this.maxFilterLimit&&(this.reportLimit=t)}},computed:{filterLimitTooltip:function(){var e=C("CoreHome_RowLimit"),t=this.maxFilterLimit?C("General_ComputedMetricMax",this.maxFilterLimit.toString()):"";return"".concat(e," (").concat(t,")")},exportLink:function(){return this.getExportLink(!0)},exportLinkWithoutToken:function(){return this.getExportLink(!1)}},methods:{getExportLink:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.reportFormat,n=this.apiMethod,r=this.reportType,i=this.dataTable;if(t){var a={},o="yes"===this.reportLimitAll?-1:this.reportLimit;this.requestParams&&"string"===typeof this.requestParams&&(a=JSON.parse(this.requestParams));var l=i.param,c=l.segment,s=l.label,u=l.idGoal,d=l.idDimension,p=l.idSite,m=i.param,f=m.date,h=m.period;"RSS"===t&&(f="last10"),"undefined"!==typeof i.param.dateUsedInGraph&&(f=i.param.dateUsedInGraph);var g=S.config.datatable_export_range_as_day.toLowerCase();-1!==g.indexOf(t.toLowerCase())&&"range"===i.param.period&&(h="day"),"range"===i.param.period&&"graphEvolution"===i.param.viewDataTable&&(h="day");var v={module:"API",format:t,idSite:p,period:h,date:f};if("processed"===r){v.method="API.getProcessedReport";var b=n.split("."),y=_s(b,2);v.apiModule=y[0],v.apiAction=y[1]}else v.method=n;if(i.param.compareDates&&i.param.compareDates.length&&(v.compareDates=i.param.compareDates,v.compare="1"),i.param.comparePeriods&&i.param.comparePeriods.length&&(v.comparePeriods=i.param.comparePeriods,v.compare="1"),i.param.compareSegments&&i.param.compareSegments.length&&(v.compareSegments=i.param.compareSegments,v.compare="1"),"undefined"!==typeof i.param.filter_pattern&&(v.filter_pattern=i.param.filter_pattern),"undefined"!==typeof i.param.filter_pattern_recursive&&(v.filter_pattern_recursive=i.param.filter_pattern_recursive),window.$.isPlainObject(a)&&Object.entries(a).forEach((function(e){var t=_s(e,2),n=t[0],r=t[1],i=r;!0===i?i=1:!1===i&&(i=0),v[n]=i})),this.optionFlat&&(v.flat=1,"undefined"!==typeof i.param.include_aggregate_rows&&"1"===i.param.include_aggregate_rows&&(v.include_aggregate_rows=1)),!this.optionFlat&&this.optionExpanded&&(v.expanded=1),this.optionFormatMetrics&&(v.format_metrics=1),i.param.pivotBy&&(v.pivotBy=i.param.pivotBy,v.pivotByColumnLimit=20,i.props.pivot_by_column&&(v.pivotByColumn=i.props.pivot_by_column)),"CSV"!==t&&"TSV"!==t&&"RSS"!==t||(v.translateColumnNames=1,v.language=S.language),"undefined"!==typeof c&&(v.segment=decodeURIComponent(c)),"undefined"!==typeof u&&"-1"!==u&&(v.idGoal=u),"undefined"!==typeof d&&"-1"!==d&&(v.idDimension=d),s){var w=s.split(",");if(w.length>1)v.label=w;else{var O=_s(w,1);v.label=O[0]}}v.token_auth="ENTER_YOUR_TOKEN_AUTH_HERE",!0===e&&(v.token_auth=S.token_auth,v.force_api_session=1),v.filter_limit=o;var j=window.location.href.split("?")[0];return"".concat(j,"?").concat(Ce.stringify(v))}}}});Gs.render=Fs;var zs=Gs,Ys=window,Qs=Ys.$,Ks={mounted:function(e,t){e.addEventListener("click",(function(){var n=Ce.hashParsed.value.popover,r=Qs(e).closest("[data-report]").data("uiControlObject"),i=window.Piwik_Popover.showLoading("Export"),a=t.value.reportFormats,o=r.param.filter_limit;t.value.maxFilterLimit>0&&(o=Math.min(o,t.value.maxFilterLimit));var l=!0===r.param.flat||1===r.param.flat||"1"===r.param.flat,c={initialReportType:"default",initialReportLimit:o>0?o:100,initialReportLimitAll:-1===o?"yes":"no",initialOptionFlat:l,initialOptionExpanded:!0,initialOptionFormatMetrics:!1,hasSubtables:l||r.numberOfSubtables>0,availableReportFormats:{default:a,processed:{XML:a.XML,JSON:a.JSON}},availableReportTypes:{default:C("CoreHome_StandardReport"),processed:C("CoreHome_ReportWithMetadata")},limitAllOptions:{yes:C("General_All"),no:C("CoreHome_CustomLimit")},maxFilterLimit:t.value.maxFilterLimit,dataTable:r,requestParams:t.value.requestParams,apiMethod:t.value.apiMethod},s=ut({template:'\n <popover v-bind="bind"/>',data:function(){return{bind:c}}});s.component("popover",zs);var u=document.createElement("div");s.mount(u);var d=t.value.reportTitle;window.Piwik_Popover.setTitle("".concat(C("General_Export")," ").concat(S.helper.htmlEntities(d))),window.Piwik_Popover.setContent(u),window.Piwik_Popover.onClose((function(){s.unmount(),""!==n&&setTimeout((function(){Ce.updateHash(Object.assign(Object.assign({},Ce.hashParsed.value),{},{popover:n})),t.value.onClose&&t.value.onClose()}),100)})),setTimeout((function(){i.dialog(),Qs(".exportFullUrl, .btn",i).tooltip({track:!0,show:!1,hide:!1})}),100)}))}};
/*!
* Matomo - free/libre analytics platform
*
@@ -510,13 +510,13 @@ 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 Us(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:{}};Hs.mounted(n[0],r)}}}Us.$inject=["$timeout"],window.angular.module("piwikApp").directive("piwikReportExport",Us);var qs=["src"];function Ws(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("img",{src:e.sparklineUrl},null,8,qs)}var Js=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 Je,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)}}});Js.render=Ws;var Gs=Js,zs=(gt({component:Gs,scope:{seriesIndices:{angularJsBind:"<"},params:{angularJsBind:"<"}},directiveName:"piwikSparkline",restrict:"E"}),{class:"progressbar"}),Ys={class:"progress"},Qs=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),Ks=["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"},null,-1),ou=["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 Xs(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",zs,[Object(a["createElementVNode"])("div",Ys,[Object(a["createElementVNode"])("div",{class:"determinate",style:Object(a["normalizeStyle"])([{width:"0"},{width:"".concat(e.actualProgress,"%")}])},null,4)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,[Qs,Object(a["createElementVNode"])("span",{class:"label",innerHTML:e.$sanitize(e.label)},null,8,Ks)],512),[[a["vShow"],!!e.label]])])}var Zs=Object(a["defineComponent"])({props:{progress:{type:Number,required:!0},label:String},computed:{actualProgress:function(){return this.progress>100?100:this.progress<0?0:this.progress}}});Zs.render=Xs;var eu=Zs,tu=(gt({component:eu,scope:{progress:{angularJsBind:"="},label:{angularJsBind:"="}},directiveName:"piwikProgressbar"}),{mounted:function(e){e.classList.add("piwik-content-intro")},updated:function(e){Object(a["nextTick"])((function(){e.classList.add("piwik-content-intro")}))}});
+ */function lu(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ru,[Object(a["createElementVNode"])("div",iu,[Object(a["createElementVNode"])("div",{class:"determinate",style:Object(a["normalizeStyle"])([{width:"0"},{width:"".concat(e.actualProgress,"%")}])},null,4)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",null,[au,Object(a["createElementVNode"])("span",{class:"label",innerHTML:e.$sanitize(e.label)},null,8,ou)],512),[[a["vShow"],!!e.label]])])}var cu=Object(a["defineComponent"])({props:{progress:{type:Number,required:!0},label:String},computed:{actualProgress:function(){return this.progress>100?100:this.progress<0?0:this.progress}}});cu.render=lu;var su=cu,uu=(jt({component:su,scope:{progress:{angularJsBind:"="},label:{angularJsBind:"="}},directiveName:"piwikProgressbar"}),{mounted:function(e){e.classList.add("piwik-content-intro")},updated:function(e){Object(a["nextTick"])((function(){e.classList.add("piwik-content-intro")}))}});
/*!
* Matomo - free/libre analytics platform
*
@@ -529,37 +529,37 @@ function Us(e){return{restrict:"A",scope:{reportTitle:"@",requestParams:"@",repo
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function nu(){return{restrict:"A",link:function(e,t){tu.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikContentIntro",nu);
+function du(){return{restrict:"A",link:function(e,t){uu.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikContentIntro",du);
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var ru={mounted:function(e){e.classList.add("card","card-table","entityTable")},updated:function(e){Object(a["nextTick"])((function(){e.classList.add("card","card-table","entityTable")}))}};
+ */var pu={mounted:function(e){e.classList.add("card","card-table","entityTable")},updated:function(e){Object(a["nextTick"])((function(){e.classList.add("card","card-table","entityTable")}))}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function iu(){return{restrict:"A",link:function(e,t){ru.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikContentTable",iu);var au={ref:"root"};function ou(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",au,[Object(a["renderSlot"])(e.$slots,"default",{formData:e.formData,submitApiMethod:e.submitApiMethod,sendJsonPayload:e.sendJsonPayload,noErrorNotification:e.noErrorNotification,noSuccessNotification:e.noSuccessNotification,submitForm:e.submitForm,isSubmitting:e.isSubmitting,successfulPostResponse:e.successfulPostResponse,errorPostResponse:e.errorPostResponse})],512)}var lu=window,cu=lu.$,su=Object(a["defineComponent"])({props:{formData:{type:Object,required:!0},submitApiMethod:{type:String,required:!0},sendJsonPayload:Boolean,noErrorNotification:Boolean,noSuccessNotification:Boolean},data:function(){return{isSubmitting:!1,successfulPostResponse:null,errorPostResponse:null}},emits:["update:modelValue"],mounted:function(){var e=this;cu(this.$refs.root).on("click","input[type=submit]",(function(){e.submitForm()}))},methods:{submitForm:function(){var e=this;this.successfulPostResponse=null,this.errorPostResponse=null;var t=this.formData;this.sendJsonPayload&&(t={data:JSON.stringify(this.formData)}),this.isSubmitting=!0,Je.post({module:"API",method:this.submitApiMethod},t,{createErrorNotification:!this.noErrorNotification}).then((function(t){if(e.successfulPostResponse=t,!e.noSuccessNotification){var n=rl.show({message:C("General_YourChangesHaveBeenSaved"),context:"success",type:"toast",id:"ajaxHelper"});rl.scrollToNotification(n)}})).catch((function(t){e.errorPostResponse=t.message})).finally((function(){e.isSubmitting=!1}))}}});su.render=ou;var uu=su,du=window,pu=du.$;
+ */function mu(){return{restrict:"A",link:function(e,t){pu.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikContentTable",mu);var fu={ref:"root"};function hu(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",fu,[Object(a["renderSlot"])(e.$slots,"default",{formData:e.formData,submitApiMethod:e.submitApiMethod,sendJsonPayload:e.sendJsonPayload,noErrorNotification:e.noErrorNotification,noSuccessNotification:e.noSuccessNotification,submitForm:e.submitForm,isSubmitting:e.isSubmitting,successfulPostResponse:e.successfulPostResponse,errorPostResponse:e.errorPostResponse})],512)}var gu=window,vu=gu.$,bu=Object(a["defineComponent"])({props:{formData:{type:Object,required:!0},submitApiMethod:{type:String,required:!0},sendJsonPayload:Boolean,noErrorNotification:Boolean,noSuccessNotification:Boolean},data:function(){return{isSubmitting:!1,successfulPostResponse:null,errorPostResponse:null}},emits:["update:modelValue"],mounted:function(){var e=this;vu(this.$refs.root).on("click","input[type=submit]",(function(){e.submitForm()}))},methods:{submitForm:function(){var e=this;this.successfulPostResponse=null,this.errorPostResponse=null;var t=this.formData;this.sendJsonPayload&&(t={data:JSON.stringify(this.formData)}),this.isSubmitting=!0,Xe.post({module:"API",method:this.submitApiMethod},t,{createErrorNotification:!this.noErrorNotification}).then((function(t){if(e.successfulPostResponse=t,!e.noSuccessNotification){var n=fl.show({message:C("General_YourChangesHaveBeenSaved"),context:"success",type:"toast",id:"ajaxHelper"});fl.scrollToNotification(n)}})).catch((function(t){e.errorPostResponse=t.message})).finally((function(){e.isSubmitting=!1}))}}});bu.render=hu;var yu=bu,wu=window,Ou=wu.$;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function mu(e){return{restrict:"A",scope:{submitApiMethod:"=",sendJsonPayload:"=",noErrorNotification:"=",noSuccessNotification:"=",useCustomDataBinding:"="},require:"?ngModel",transclude:!0,compile:function(t,n){return n.noErrorNotification=!!n.noErrorNotification,function(t,n,r,i,o){if(!t.submitApiMethod)throw new Error("submitApiMethod is required");if(t.ajaxForm={},t.ajaxForm.submitApiMethod=t.submitApiMethod,t.ajaxForm.sendJsonPayload=t.sendJsonPayload,t.ajaxForm.noErrorNotification=t.noErrorNotification,t.ajaxForm.noSuccessNotification=t.noSuccessNotification,t.ajaxForm.data={},i){var l=e(r.ngModel);t.ajaxForm.data=l(t.$parent)}var c={mounted:function(e,n){t.ajaxForm.submitForm=n.value.submitForm}},s='\n <AjaxForm\n :form-data="data"\n :submit-api-method="submitApiMethod"\n :send-json-payload="sendJsonPayload"\n :no-error-notification="noErrorNotification"\n :no-success-notification="noSuccessNotification"\n >\n <template v-slot:default="ajaxFormVue">\n <div\n ref="transcludeTarget"\n v-special-bind-directive="{ submitForm: ajaxFormVue.submitForm }"\n />\n </template>\n </AjaxForm>',u=it({template:s,data:function(){return t.ajaxForm},setup:function(){var e=Object(a["ref"])(null);return{transcludeTarget:e}}});u.component("AjaxForm",uu),u.directive("SpecialBindDirective",c);var d=u.mount(n[0]);function p(e,n){var r,i=pu(e).attr("name");r="checkbox"===pu(e).attr("type")?pu(e).is(":checked"):pu(e).val(),t.ajaxForm.data[i]=r,n||setTimeout((function(){t.$apply()}),0)}n.on("$destroy",(function(){u.unmount()})),t.useCustomDataBinding||n.on("change","input,select",(function(e){p(e.target)})),o(t,(function(e,t){if(!t.useCustomDataBinding){var n=e.find("input,select").not("[type=submit]");n.each((function(){p(this,!0)}))}pu(d.transcludeTarget).append(e)}))}}}}function fu(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function hu(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function gu(e,t,n){return t&&hu(e.prototype,t),n&&hu(e,n),e}function vu(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */function ju(e){return{restrict:"A",scope:{submitApiMethod:"=",sendJsonPayload:"=",noErrorNotification:"=",noSuccessNotification:"=",useCustomDataBinding:"="},require:"?ngModel",transclude:!0,compile:function(t,n){return n.noErrorNotification=!!n.noErrorNotification,function(t,n,r,i,o){if(!t.submitApiMethod)throw new Error("submitApiMethod is required");if(t.ajaxForm={},t.ajaxForm.submitApiMethod=t.submitApiMethod,t.ajaxForm.sendJsonPayload=t.sendJsonPayload,t.ajaxForm.noErrorNotification=t.noErrorNotification,t.ajaxForm.noSuccessNotification=t.noSuccessNotification,t.ajaxForm.data={},i){var l=e(r.ngModel);t.ajaxForm.data=l(t.$parent)}var c={mounted:function(e,n){t.ajaxForm.submitForm=n.value.submitForm}},s='\n <AjaxForm\n :form-data="data"\n :submit-api-method="submitApiMethod"\n :send-json-payload="sendJsonPayload"\n :no-error-notification="noErrorNotification"\n :no-success-notification="noSuccessNotification"\n >\n <template v-slot:default="ajaxFormVue">\n <div\n ref="transcludeTarget"\n v-special-bind-directive="{ submitForm: ajaxFormVue.submitForm }"\n />\n </template>\n </AjaxForm>',u=ut({template:s,data:function(){return t.ajaxForm},setup:function(){var e=Object(a["ref"])(null);return{transcludeTarget:e}}});u.component("AjaxForm",yu),u.directive("SpecialBindDirective",c);var d=u.mount(n[0]);function p(e,n){var r,i=Ou(e).attr("name");r="checkbox"===Ou(e).attr("type")?Ou(e).is(":checked"):Ou(e).val(),t.ajaxForm.data[i]=r,n||setTimeout((function(){t.$apply()}),0)}n.on("$destroy",(function(){u.unmount()})),t.useCustomDataBinding||n.on("change","input,select",(function(e){p(e.target)})),o(t,(function(e,t){if(!t.useCustomDataBinding){var n=e.find("input,select").not("[type=submit]");n.each((function(){p(this,!0)}))}Ou(d.transcludeTarget).append(e)}))}}}}function ku(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Su(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Cu(e,t,n){return t&&Su(e.prototype,t),n&&Su(e,n),e}function Eu(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
- */mu.$inject=["$parse"],window.angular.module("piwikApp").directive("piwikAjaxForm",mu);var bu=function(){function e(t){fu(this,e),vu(this,"type",void 0),vu(this,"instance",void 0),this.type=t}return gu(e,[{key:"get",value:function(e,t,n){if(!this.instance){var r=this.type;this.instance=new r}return Reflect.get(this.instance,t,n)}}]),e}();function yu(e){return new Proxy({},new bu(e))}
+ */ju.$inject=["$parse"],window.angular.module("piwikApp").directive("piwikAjaxForm",ju);var Du=function(){function e(t){ku(this,e),Eu(this,"type",void 0),Eu(this,"instance",void 0),this.type=t}return Cu(e,[{key:"get",value:function(e,t,n){if(!this.instance){var r=this.type;this.instance=new r}return Reflect.get(this.instance,t,n)}}]),e}();function Pu(e){return new Proxy({},new Du(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 wu=gt({component:ro,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});function Ou(e,t,n){var r=new Date;n||(n=432e4),r.setTime(r.getTime()+n),document.cookie="".concat(e,"=").concat(t,"; expires=").concat(r.toUTCString(),"; path=/")}function ju(e){var t="; ".concat(document.cookie),n=t.split("; ".concat(e,"="));if(2==n.length){var r=n.pop().split(";").shift();if("undefined"!==typeof r)return r}return null}function ku(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}
+ */var Vu=jt({component:ho,scope:{loading:{vue:"loading",angularJsBind:"<"},loadingMessage:{vue:"loadingMessage",angularJsBind:"<",default:function(){return C("General_LoadingData")}}},$inject:[],directiveName:"piwikActivityIndicator"});function Nu(e,t,n){var r=new Date;n||(n=432e4),r.setTime(r.getTime()+n),document.cookie="".concat(e,"=").concat(t,"; expires=").concat(r.toUTCString(),"; path=/")}function Tu(e){var t="; ".concat(document.cookie),n=t.split("; ".concat(e,"="));if(2==n.length){var r=n.pop().split(";").shift();if("undefined"!==typeof r)return r}return null}function Au(e){var t=new Date;t.setTime(t.getTime()+-864e5),document.cookie="".concat(e,"=; expires=").concat(t.toUTCString(),"; path=/")}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
index 725d53574e..2a3ee021dc 100644
--- a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
+++ b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts
@@ -12,7 +12,7 @@ import jqXHR = JQuery.jqXHR;
import MatomoUrl from '../MatomoUrl/MatomoUrl';
import Matomo from '../Matomo/Matomo';
-interface AjaxOptions {
+export interface AjaxOptions {
withTokenInUrl?: boolean;
postParams?: QueryParameters;
headers?: Record<string, string>;
@@ -178,7 +178,7 @@ export default class AjaxHelper<T = any> { // eslint-disable-line
// helper method entry point
static fetch<R = any>( // eslint-disable-line
- params: QueryParameters,
+ params: QueryParameters|QueryParameters[],
options: AjaxOptions = {},
): Promise<R> {
const helper = new AjaxHelper<R>();
@@ -186,11 +186,23 @@ export default class AjaxHelper<T = any> { // eslint-disable-line
helper.withTokenInUrl();
}
helper.setFormat(options.format || 'json');
- helper.addParams({
- module: 'API',
- format: options.format || 'json',
- ...params,
- }, 'get');
+ if (Array.isArray(params)) {
+ helper.setBulkRequests(...(params as QueryParameters[]));
+ } else {
+ helper.addParams({
+ module: 'API',
+ format: options.format || 'json',
+ ...params,
+ // ajax helper does not encode the segment parameter assuming it is already encoded. this is
+ // probably for pre-angularjs code, so we don't want to do this now, but just treat segment
+ // as a normal query parameter input (so it will have double encoded values in input params
+ // object, then naturally triple encoded in the URL after a $.param call), however we need
+ // to support any existing uses of the old code, so instead we do a manual encode here. new
+ // code that uses .fetch() will not need to pre-encode the parameter, while old code
+ // can pre-encode it.
+ segment: params.segment ? encodeURIComponent(params.segment as string) : undefined,
+ }, 'get');
+ }
if (options.postParams) {
helper.addParams(options.postParams, 'post');
}
diff --git a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
index d6ba47e865..f6734c3e56 100644
--- a/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
+++ b/plugins/CoreHome/vue/src/Comparisons/Comparisons.store.ts
@@ -301,6 +301,7 @@ export default class ComparisonsStore {
if (matomoModule === 'CoreUpdater'
|| matomoModule === 'Installation'
+ || matomoModule === 'Overlay'
) {
this.privateState.comparisonsDisabledFor = [];
return;
diff --git a/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue b/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue
index 70c394a29a..c83ee915fa 100644
--- a/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue
+++ b/plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue
@@ -57,7 +57,8 @@
>
<div v-html="$sanitize(actualInlineHelp)"/>
<span class="helpDate"
- v-html="reportGenerated"></span>
+ v-if="reportGenerated!=''"
+ v-html="$sanitize(reportGenerated)"></span>
<a
v-if="helpUrl"
rel="noreferrer noopener"
diff --git a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts
index 4f8f02ddd8..76e22ca075 100644
--- a/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts
+++ b/plugins/CoreHome/vue/src/ExpandOnClick/ExpandOnClick.ts
@@ -10,11 +10,14 @@ import Matomo from '../Matomo/Matomo';
import DirectiveUtilities from '../directiveUtilities';
interface ExpandOnClickArgs {
+ // input (specified by user)
expander: string | HTMLElement,
+ // state
isMouseDown?: boolean;
hasScrolled?: boolean;
+ // event handlers
onExpand?: () => void;
onClickOutsideElement?: (event: MouseEvent) => void;
onScroll?: () => void;
@@ -71,6 +74,7 @@ function onEscapeHandler(
}
const doc = document.documentElement;
+const { $ } = window;
/**
* Usage (in a component):
@@ -93,7 +97,7 @@ export default {
setTimeout(() => {
const expander = DirectiveUtilities.getRef(binding.value.expander, binding);
if (expander) {
- expander.addEventListener('click', binding.value.onExpand!);
+ $(expander).on('click', binding.value.onExpand!);
}
});
doc.addEventListener('keyup', binding.value.onEscapeHandler);
@@ -104,7 +108,7 @@ export default {
unmounted(el: HTMLElement, binding: DirectiveBinding<ExpandOnClickArgs>): void {
const expander = DirectiveUtilities.getRef(binding.value.expander, binding);
if (expander) {
- expander.removeEventListener('click', binding.value.onExpand!);
+ $(expander).off('click', binding.value.onExpand!);
}
doc.removeEventListener('keyup', binding.value.onEscapeHandler!);
doc.removeEventListener('mousedown', binding.value.onMouseDown!);
diff --git a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.ts b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.ts
index f6786eab4b..73afcd820d 100644
--- a/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.ts
+++ b/plugins/CoreHome/vue/src/ExpandOnHover/ExpandOnHover.ts
@@ -10,8 +10,10 @@ import Matomo from '../Matomo/Matomo';
import DirectiveUtilities from '../directiveUtilities';
interface ExpandOnHoverArgs {
+ // input (provided by user)
expander: string | HTMLElement,
+ // event handlers
onMouseEnter?: () => void;
onMouseLeave?: () => void;
onClickOutsideElement?: (event: MouseEvent) => void;
diff --git a/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue b/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue
index 9a35f2f5d2..3721ddf976 100644
--- a/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue
+++ b/plugins/CoreHome/vue/src/FieldArray/FieldArray.vue
@@ -25,6 +25,8 @@
:uicontrol="field.uiControl"
:title="field.title"
:name="`${name}-${index}`"
+ :template-file="field.templateFile"
+ :component="field.component"
>
</Field>
</div>
diff --git a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
index a2ae2ce388..df31210a81 100644
--- a/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
+++ b/plugins/CoreHome/vue/src/FocusAnywhereButHere/FocusAnywhereButHere.ts
@@ -8,8 +8,10 @@
import { DirectiveBinding } from 'vue';
interface FocusAnywhereButHereArgs {
+ // input (provided by user)
blur: () => void,
+ // state/event handlers
isMouseDown?: boolean;
hasScrolled?: boolean;
onEscapeHandler?: (event: KeyboardEvent) => void;
diff --git a/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
index 6a13e46ff0..3a79d51e40 100644
--- a/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
+++ b/plugins/CoreHome/vue/src/FocusIf/FocusIf.ts
@@ -8,6 +8,7 @@
import { DirectiveBinding } from 'vue';
interface FocusIfArgs {
+ // input (provided by user)
afterFocus?: () => void;
}
diff --git a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
index e346e8179a..e8f1cb0ed3 100644
--- a/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
+++ b/plugins/CoreHome/vue/src/MatomoUrl/MatomoUrl.ts
@@ -33,11 +33,11 @@ class MatomoUrl {
readonly hashQuery = ref('');
readonly urlParsed = computed(() => readonly(
- broadcast.getValuesFromUrl(`?${this.urlQuery.value}`, true) as ParsedQueryParameters,
+ this.parse(this.urlQuery.value) as ParsedQueryParameters,
));
readonly hashParsed = computed(() => readonly(
- broadcast.getValuesFromUrl(`?${this.hashQuery.value}`, true) as ParsedQueryParameters,
+ this.parse(this.hashQuery.value) as ParsedQueryParameters,
));
readonly parsed = computed(() => readonly({
@@ -95,11 +95,11 @@ class MatomoUrl {
) {
const paramsObj = typeof params !== 'string'
? params as QueryParameters
- : broadcast.getValuesFromUrl(`?${params}`, true);
+ : this.parse(params as string);
const urlParamsObj = typeof params !== 'string'
? urlParams as QueryParameters
- : broadcast.getValuesFromUrl(`?${urlParams}`, true);
+ : this.parse(urlParams as string);
return {
// these params must always be present in the hash
@@ -139,6 +139,10 @@ class MatomoUrl {
return window.broadcast.getValueFromUrl(paramName, window.location.search);
}
+ parse(query: string): QueryParameters {
+ return broadcast.getValuesFromUrl(`?${query}`, true);
+ }
+
stringify(search: QueryParameters): string {
const searchWithoutEmpty = Object.fromEntries(
Object.entries(search).filter(([, value]) => value !== '' && value !== null && value !== undefined),
diff --git a/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue
index 6717b6eef6..87a812d57e 100644
--- a/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue
+++ b/plugins/CoreHome/vue/src/MultiPairField/MultiPairField.vue
@@ -26,6 +26,8 @@
:uicontrol="field1.uiControl"
:name="`${name}-p1-${index}`"
:title="field1.title"
+ :template-file="field1.templateFile"
+ :component="field1.component"
>
</Field>
</div>
@@ -42,6 +44,8 @@
:uicontrol="field2.uiControl"
:name="`${name}-p2-${index}`"
:title="field2.title"
+ :template-file="field2.templateFile"
+ :component="field2.component"
>
</Field>
</div>
@@ -57,6 +61,8 @@
:placeholder="' '"
:uicontrol="field3.uiControl"
:title="field3.title"
+ :template-file="field3.templateFile"
+ :component="field3.component"
>
</Field>
</div>
@@ -72,6 +78,8 @@
:placeholder="' '"
:uicontrol="field4.uiControl"
:title="field4.title"
+ :template-file="field4.templateFile"
+ :component="field4.component"
>
</Field>
</div>
diff --git a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
index ef20a451f6..159876a4ec 100644
--- a/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
+++ b/plugins/CoreHome/vue/src/QuickAccess/QuickAccess.vue
@@ -84,7 +84,7 @@
@mouseenter="searchIndex = 'help'"
>
<a
- :href="`https://matomo.org?s=${encodeURIComponent(searchTerm)}`"
+ :href="`https://matomo.org?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=QuickSearch&s=${encodeURIComponent(searchTerm)}`"
target="_blank"
>
{{ translate('CoreHome_SearchOnMatomo', searchTerm) }}
diff --git a/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts b/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts
index 24016e11ba..869117dfc6 100644
--- a/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts
+++ b/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.store.ts
@@ -14,12 +14,12 @@ import {
import ReportingPagesStoreInstance, { Page } from '../ReportingPages/ReportingPages.store';
import ReportMetadataStoreInstance from '../ReportMetadata/ReportMetadata.store';
import { sortOrderables } from '../Orderable';
+import { getWidgetChildren } from '../Widget/Widgets.store';
import {
- getWidgetChildren,
GroupedWidgets,
Widget,
WidgetContainer,
-} from '../Widget/Widgets.store';
+} from '../Widget/types';
interface ReportingMenuStoreState {
page?: DeepReadonly<Page>;
diff --git a/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue b/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue
index 61392f9dd8..5f9dec0367 100644
--- a/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue
+++ b/plugins/CoreHome/vue/src/ReportingPage/ReportingPage.vue
@@ -57,8 +57,6 @@ import Matomo from '../Matomo/Matomo';
import ReportingPagesStoreInstance from '../ReportingPages/ReportingPages.store';
import AjaxHelper from '../AjaxHelper/AjaxHelper';
-const { $ } = window;
-
function showOnlyRawDataNotification() {
const params = 'category=General_Visitors&subcategory=Live_VisitorLog';
const url = window.broadcast.buildReportingUrl(params);
@@ -83,6 +81,12 @@ interface ReportingPageState {
hasNoPage: boolean;
}
+interface LoadPageArgs {
+ category: string;
+ subcategory: string;
+ promise?: Promise<void>;
+}
+
export default defineComponent({
components: {
ActivityIndicator,
@@ -175,24 +179,13 @@ export default defineComponent({
this.showOnlyRawDataMessageIfRequired();
}
- if (category === 'Dashboard_Dashboard'
- && $.isNumeric(subcategory)
- && $('[piwik-dashboard]').length
- ) {
- // TODO: should be changed eventually
- // hack to make loading of dashboards faster since all the information is already there
- // in the piwik-dashboard widget, we can let the piwik-dashboard widget render the page.
- // We need to find a proper solution for this. A workaround for now could be an event or
- // something to let other components render a specific page.
+ const params: LoadPageArgs = { category, subcategory };
+ Matomo.postEvent('ReportingPage.loadPage', params);
+ if (params.promise) {
this.loading = true;
- const element = $('[piwik-dashboard]');
- const scope = window.angular.element(element).scope() as any; // eslint-disable-line
- scope.fetchDashboard(parseInt(subcategory, 10)).then(() => {
- this.loading = false;
- }, () => {
+ Promise.resolve(params.promise).finally(() => {
this.loading = false;
});
-
return;
}
diff --git a/plugins/CoreHome/vue/src/ReportingPages/ReportingPages.store.ts b/plugins/CoreHome/vue/src/ReportingPages/ReportingPages.store.ts
index 3f91b08ed8..e59986d6f6 100644
--- a/plugins/CoreHome/vue/src/ReportingPages/ReportingPages.store.ts
+++ b/plugins/CoreHome/vue/src/ReportingPages/ReportingPages.store.ts
@@ -10,7 +10,7 @@ import {
computed, readonly, DeepReadonly,
} from 'vue';
import AjaxHelper from '../AjaxHelper/AjaxHelper';
-import { Widget } from '../Widget/Widgets.store';
+import { Widget } from '../Widget/types';
interface CategoryRef {
id: string;
diff --git a/plugins/CoreHome/vue/src/SelectOnFocus/SelectOnFocus.ts b/plugins/CoreHome/vue/src/SelectOnFocus/SelectOnFocus.ts
index 112ab3df2b..a1a588336b 100644
--- a/plugins/CoreHome/vue/src/SelectOnFocus/SelectOnFocus.ts
+++ b/plugins/CoreHome/vue/src/SelectOnFocus/SelectOnFocus.ts
@@ -8,9 +8,11 @@
import { DirectiveBinding } from 'vue';
interface SelectOnFocusArgs {
+ // state
focusedElement?: HTMLElement;
elementSupportsSelect?: boolean;
+ // event handlers
onFocusHandler?: (event: Event) => void;
onClickHandler?: (event: MouseEvent) => void;
onBlurHandler?: (event: Event) => void;
diff --git a/plugins/CoreHome/vue/src/Tooltips/Tooltips.ts b/plugins/CoreHome/vue/src/Tooltips/Tooltips.ts
index 7415ebedc8..b5cb0010a9 100644
--- a/plugins/CoreHome/vue/src/Tooltips/Tooltips.ts
+++ b/plugins/CoreHome/vue/src/Tooltips/Tooltips.ts
@@ -8,16 +8,23 @@
import { DirectiveBinding } from 'vue';
interface TooltipsArgs {
- content: () => void;
+ content?: () => void;
delay?: number;
duration?: number;
}
+const { $ } = window;
+
+function defaultContentTransform(this: HTMLElement) {
+ const title = $(this).attr('title') || '';
+ return window.vueSanitize(title.replace(/\n/g, '<br />'));
+}
+
function setupTooltips(el: HTMLElement, binding: DirectiveBinding<TooltipsArgs>) {
- window.$(el).tooltip({
+ $(el).tooltip({
track: true,
- content: binding.value.content,
- show: { delay: binding.value.delay || 700, duration: binding.value.duration || 200 },
+ content: binding.value?.content || defaultContentTransform,
+ show: { delay: binding.value?.delay || 700, duration: binding.value?.duration || 200 },
hide: false,
});
}
diff --git a/plugins/CoreHome/vue/src/Widget/Widget.vue b/plugins/CoreHome/vue/src/Widget/Widget.vue
index 67f5838760..720970109e 100644
--- a/plugins/CoreHome/vue/src/Widget/Widget.vue
+++ b/plugins/CoreHome/vue/src/Widget/Widget.vue
@@ -39,11 +39,11 @@ import { DeepReadonly, defineComponent } from 'vue';
import WidgetLoader from '../WidgetLoader/WidgetLoader.vue';
import WidgetContainer from '../WidgetContainer/WidgetContainer.vue';
import WidgetByDimensionContainer from '../WidgetByDimensionContainer/WidgetByDimensionContainer.vue';
-import WidgetsStoreInstance, {
- getWidgetChildren,
+import WidgetsStoreInstance, { getWidgetChildren } from './Widgets.store';
+import {
Widget as WidgetData,
WidgetContainer as WidgetDataContainer,
-} from './Widgets.store';
+} from './types';
import AjaxHelper from '../AjaxHelper/AjaxHelper';
import ReportMetadataStoreInstance from '../ReportMetadata/ReportMetadata.store';
import Tooltips from '../Tooltips/Tooltips';
diff --git a/plugins/CoreHome/vue/src/Widget/Widgets.store.ts b/plugins/CoreHome/vue/src/Widget/Widgets.store.ts
index 30823bb0cb..0ef76bee1c 100644
--- a/plugins/CoreHome/vue/src/Widget/Widgets.store.ts
+++ b/plugins/CoreHome/vue/src/Widget/Widgets.store.ts
@@ -11,37 +11,8 @@ import {
computed,
DeepReadonly,
} from 'vue';
-import { Subcategory } from '../ReportingMenu/Subcategory';
import MatomoUrl from '../MatomoUrl/MatomoUrl';
-import { Orderable } from '../Orderable';
-
-export interface Widget extends Orderable {
- uniqueId?: string;
- module?: string;
- action?: string;
- viewDataTable?: string;
- parameters?: Record<string, unknown>;
- subcategory?: Subcategory;
- isContainer?: boolean;
- isReport?: boolean;
- middlewareParameters?: Record<string, unknown>;
- documentation?: string;
- layout?: string;
- isWide?: boolean;
- isFirstInPage?: boolean;
-}
-
-// get around DeepReadonly<> not being able to handle recursive types by moving the
-// recursive properties to subtypes that are only referenced when needed
-export interface WidgetContainer extends Widget {
- widgets?: Widget[];
-}
-
-export interface GroupedWidgets {
- group: boolean;
- left?: Widget[];
- right?: Widget[];
-}
+import { Widget, WidgetContainer } from './types';
interface WidgetsStoreState {
isFetchedFirstTime: boolean;
diff --git a/plugins/CoreHome/vue/src/Widget/types.ts b/plugins/CoreHome/vue/src/Widget/types.ts
new file mode 100644
index 0000000000..598fe567b9
--- /dev/null
+++ b/plugins/CoreHome/vue/src/Widget/types.ts
@@ -0,0 +1,37 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { Orderable } from '../Orderable';
+import { Subcategory } from '../ReportingMenu/Subcategory';
+
+export interface Widget extends Orderable {
+ uniqueId?: string;
+ module?: string;
+ action?: string;
+ viewDataTable?: string;
+ parameters?: Record<string, unknown>;
+ subcategory?: Subcategory;
+ isContainer?: boolean;
+ isReport?: boolean;
+ middlewareParameters?: Record<string, unknown>;
+ documentation?: string;
+ layout?: string;
+ isWide?: boolean;
+ isFirstInPage?: boolean;
+}
+
+// get around DeepReadonly<> not being able to handle recursive types by moving the
+// recursive properties to subtypes that are only referenced when needed
+export interface WidgetContainer extends Widget {
+ widgets?: Widget[];
+}
+
+export interface GroupedWidgets {
+ group: boolean;
+ left?: Widget[];
+ right?: Widget[];
+}
diff --git a/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts b/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts
index bf2a7e4b3a..7f3f2bfb65 100644
--- a/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts
+++ b/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.adapter.ts
@@ -7,7 +7,7 @@
import createAngularJsAdapter from '../createAngularJsAdapter';
import WidgetByDimensionContainer from './WidgetByDimensionContainer.vue';
-import { Widget } from '../Widget/Widgets.store';
+import { Widget } from '../Widget/types';
export default createAngularJsAdapter({
component: WidgetByDimensionContainer,
diff --git a/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue b/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue
index 0e1a0d081a..60e87a342b 100644
--- a/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue
+++ b/plugins/CoreHome/vue/src/WidgetByDimensionContainer/WidgetByDimensionContainer.vue
@@ -40,11 +40,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import WidgetLoader from '../WidgetLoader/WidgetLoader.vue';
-import { Widget } from '../Widget/Widgets.store';
+import { Widget } from '../Widget/types';
import { sortOrderables } from '../Orderable';
-// TODO: is there a widget category ID or widget ID
-
interface WidgetByDimensionContainerState {
selectedWidget: Widget|null;
}
diff --git a/plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue b/plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue
index f581e0208a..5f294cbc0b 100644
--- a/plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue
+++ b/plugins/CoreHome/vue/src/WidgetContainer/WidgetContainer.vue
@@ -23,7 +23,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import useExternalPluginComponent from '../useExternalPluginComponent';
-import { Widget as WidgetData } from '../Widget/Widgets.store';
+import { Widget as WidgetData } from '../Widget/types';
// since we're recursing, don't import the plugin directly
const Widget = useExternalPluginComponent('CoreHome', 'Widget');
diff --git a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
index 4aaedd4d6c..70e2743ab8 100644
--- a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
+++ b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
@@ -219,6 +219,7 @@ export default defineComponent({
const scope = $rootScope.$new();
this.currentScope = scope;
+ Matomo.helper.compileVueEntryComponents($content);
Matomo.helper.compileAngularComponents($content, { scope });
NotificationsStore.parseNotificationDivs();
diff --git a/plugins/CoreHome/vue/src/index.ts b/plugins/CoreHome/vue/src/index.ts
index 1cf58e4d72..50f71a799b 100644
--- a/plugins/CoreHome/vue/src/index.ts
+++ b/plugins/CoreHome/vue/src/index.ts
@@ -73,7 +73,7 @@ export { default as activityIndicatorAdapter } from './ActivityIndicator/Activit
export { default as ActivityIndicator } from './ActivityIndicator/ActivityIndicator.vue';
export { default as translate } from './translate';
export { default as Alert } from './Alert/Alert.vue';
-export { default as AjaxHelper } from './AjaxHelper/AjaxHelper';
+export { default as AjaxHelper, AjaxOptions } from './AjaxHelper/AjaxHelper';
export { setCookie, getCookie, deleteCookie } from './CookieHelper/CookieHelper';
export { default as MatomoUrl } from './MatomoUrl/MatomoUrl';
export { default as Matomo } from './Matomo/Matomo';
@@ -81,6 +81,7 @@ export * from './Periods';
export { default as DropdownMenu } from './DropdownMenu/DropdownMenu';
export { default as FocusAnywhereButHere } from './FocusAnywhereButHere/FocusAnywhereButHere';
export { default as FocusIf } from './FocusIf/FocusIf';
+export { default as Tooltips } from './Tooltips/Tooltips';
export { default as MatomoDialog } from './MatomoDialog/MatomoDialog.vue';
export { default as ExpandOnClick } from './ExpandOnClick/ExpandOnClick';
export { default as ExpandOnHover } from './ExpandOnHover/ExpandOnHover';
@@ -105,6 +106,7 @@ export { default as FieldArray } from './FieldArray/FieldArray.vue';
export { default as MultiPairField } from './MultiPairField/MultiPairField.vue';
export { default as PeriodSelector } from './PeriodSelector/PeriodSelector.vue';
export { default as ReportingMenu } from './ReportingMenu/ReportingMenu.vue';
+export { default as ReportingMenuStore } from './ReportingMenu/ReportingMenu.store';
export { default as ReportingPagesStore } from './ReportingPages/ReportingPages.store';
export { default as ReportMetadataStore } from './ReportMetadata/ReportMetadata.store';
export { default as WidgetsStore } from './Widget/Widgets.store';
@@ -112,6 +114,11 @@ export { default as WidgetLoader } from './WidgetLoader/WidgetLoader.vue';
export { default as WidgetContainer } from './WidgetContainer/WidgetContainer.vue';
export { default as WidgetByDimensionContainer } from './WidgetByDimensionContainer/WidgetByDimensionContainer.vue';
export { default as Widget } from './Widget/Widget.vue';
+export {
+ Widget as WidgetType,
+ WidgetContainer as WidgetContainerType,
+ GroupedWidgets as GroupedWidgetsType,
+} from './Widget/types';
export { default as ReportingPage } from './ReportingPage/ReportingPage.vue';
export { default as ReportExport } from './ReportExport/ReportExport';
export { default as Sparkline } from './Sparkline/Sparkline.vue';
diff --git a/plugins/CorePluginsAdmin/API.php b/plugins/CorePluginsAdmin/API.php
index dede5afc0a..203b88b818 100644
--- a/plugins/CorePluginsAdmin/API.php
+++ b/plugins/CorePluginsAdmin/API.php
@@ -12,7 +12,6 @@ use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
use Exception;
use Piwik\Plugins\Login\PasswordVerifier;
-use Piwik\Version;
use Piwik\Container\StaticContainer;
use Piwik\Plugins\CoreAdminHome\Emails\SettingsChangedEmail;
use Piwik\Plugins\CoreAdminHome\Emails\SecurityNotificationEmail;
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index a6b7ae104e..4104e68376 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -13,7 +13,6 @@ use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\ErrorHandler;
use Piwik\Exception\MissingFilePermissionException;
use Piwik\Filechecks;
use Piwik\Filesystem;
@@ -26,7 +25,6 @@ use Piwik\Plugins\Login\PasswordVerifier;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\Marketplace\Controller as MarketplaceController;
use Piwik\Plugins\Marketplace\Plugins;
-use Piwik\Settings\Storage\Backend\PluginSettingsTable;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/CorePluginsAdmin/Menu.php b/plugins/CorePluginsAdmin/Menu.php
index be90fca29f..cce08378e4 100644
--- a/plugins/CorePluginsAdmin/Menu.php
+++ b/plugins/CorePluginsAdmin/Menu.php
@@ -12,7 +12,6 @@ use Piwik\Container\StaticContainer;
use Piwik\Menu\MenuAdmin;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Plugins\CorePluginsAdmin\Model\TagManagerTeaser;
use Piwik\Plugins\Marketplace\Marketplace;
use Piwik\Plugins\Marketplace\Plugins;
diff --git a/plugins/CorePluginsAdmin/lang/ca.json b/plugins/CorePluginsAdmin/lang/ca.json
index 11381c6e77..988728d2a1 100644
--- a/plugins/CorePluginsAdmin/lang/ca.json
+++ b/plugins/CorePluginsAdmin/lang/ca.json
@@ -1,19 +1,90 @@
{
"CorePluginsAdmin": {
- "Activate": "Activa",
- "Activated": "Actiu",
+ "ActionUninstall": "Desinstal·lar",
+ "Activate": "Activar",
+ "ActivateTagManagerNow": "Activeu ara el Gestor d'etiquetes",
+ "Activated": "Activat",
"Active": "Actiu",
"Activity": "Activitat",
- "AuthorHomepage": "Pàgina de l'autor",
- "Deactivate": "Desactiva",
+ "AlwaysActivatedPluginsList": "Els connectors següents sempre estan activats i no es poden desactivar: %s",
+ "AreThereAnyRisks": "Hi ha cap risc?",
+ "AreThereAnyRisksDetails1": "Quan activeu el Gestor d'etiquetes, els usuaris amb accés d'administrador podran crear etiquetes HTML personalitzades, activadors i variables que poden executar JavaScript al vostre lloc web. Aquestes plantilles personalitzades es podrien utilitzar malament per robar, per exemple, informació confidencial dels visitants del vostre lloc web (coneguda com a %1$sXSS%2$s).",
+ "AreThereAnyRisksDetails2": "Podeu desactivar aquestes plantilles personalitzades a \"Administració =&gt; Configuració general\" un cop hàgiu activat el Gestor d'etiquetes. Alternativament, també podeu restringir l'ús d'aquestes plantilles només a usuaris específics o superusuaris.",
+ "AuthorHomepage": "Pàgina d'inici de l'autor",
+ "ChangeLookByManageThemes": "Podeu canviar l'aspecte de Matomo a %1$sGestió dels temes%2$s.",
+ "ChangeSettingsPossible": "Podeu canviar %1$sla configuració%2$s per a aquest connector.",
+ "Changelog": "Registre de canvis",
+ "CommunityContributedPlugin": "Aquest és un connector aportat per la comunitat, ofert de franc.",
+ "ConsiderDonating": "Penseu en donar",
+ "ConsiderDonatingCreatorOf": "Considereu fer una donació al creador de %s",
+ "CorePluginTooltip": "Els complements nuclears no tenen versió ja que es distribueixen amb Matomo.",
+ "Deactivate": "Desactivar",
+ "DoMoreContactPiwikAdmins": "Per instal·lar un connector nou o un tema nou, poseu-vos en contacte amb els vostres administradors de Matomo.",
+ "FileExceedsUploadLimit": "El fitxer seleccionat supera el límit de càrrega del vostre servidor.",
+ "History": "Història",
"Inactive": "Inactiu",
- "LicenseHomepage": "Pàgina de la llicència",
- "PluginsExtendPiwik": "Els connectors augmenten la funcionalitat del Matomo.",
- "OncePluginIsInstalledYouMayActivateHere": "Un cop hi ha un connector instal·lat, podeu activar-lo i desactivar-lo aquí.",
- "PluginHomepage": "Pàgina web",
+ "InfoPluginUpdateIsRecommended": "Actualitzeu ara els vostres connectors per aprofitar les últimes millores.",
+ "InfoThemeIsUsedByOtherUsersAsWell": "Nota: els altres %1$s usuaris registrats en aquest Matomo també estan utilitzant el tema %2$s.",
+ "InfoThemeUpdateIsRecommended": "Actualitza els teus temes per gaudir de la darrera versió.",
+ "InstallNewPlugins": "Instal·leu nous connectors",
+ "InstallNewThemes": "Instal·leu nous temes",
+ "InstalledPlugins": "Connectors instal·lats",
+ "InstalledThemes": "Temes instal·lats",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Podeu instal·lar connectors automàticament des del Marketplace o %1$scarregar un connector%2$s en format .zip.",
+ "LicenseHomepage": "Pàgina d'inici de la llicència",
+ "LikeThisPlugin": "Us agrada aquest connector?",
+ "MenuPlatform": "Plataforma",
+ "MissingRequirementsNotice": "Si us plau, actualitzeu %1$s %2$s a una versió més nova, %1$s %3$s és necessari.",
+ "MissingRequirementsPleaseInstallNotice": "Si us plau instal·leu %1$s %2$s, ja que %3$s ho necessita.",
+ "NoPluginSettings": "No hi ha cap paràmetre del connector que es pugui configurar",
+ "NoZipFileSelected": "Seleccioneu un fitxer ZIP.",
+ "NotDownloadable": "No es pot descarregar",
+ "NumUpdatesAvailable": "%s actualitzacions disponibles",
+ "OncePluginIsInstalledYouMayActivateHere": "Un cop instal·lat un connector, podeu activar-lo o desactivar-lo aquí.",
+ "Origin": "Origen",
+ "OriginCore": "Nucli",
+ "OriginOfficial": "Oficial",
+ "OriginThirdParty": "Tercers",
+ "PluginActivated": "Connector activat",
+ "PluginHomepage": "Pàgina d'inici del connector",
+ "PluginNotCompatibleWith": "El connector %1$s no és compatible amb %2$s.",
+ "PluginNotDownloadable": "El connector no es pot descarregar.",
+ "PluginNotDownloadablePaidReason": "Els possibles motius són una llicència caducada o superada.",
+ "PluginNotFound": "No s'ha trobat el connector %1$s al sistema de fitxers.",
+ "PluginNotFoundAlternative": "Si heu estat utilitzant aquest connector, proveu de tornar-lo a carregar o a instal·lar-lo des del mercat. Si no, feu clic a desinstal·lar per eliminar-lo de la llista.",
+ "PluginNotWorkingAlternative": "Si heu estat utilitzant aquest connector potser en podeu trobar una versió més recent al Marketplace. Si no, potser voldreu desinstal·lar-lo.",
+ "PluginRequirement": "%1$s necessita %2$s.",
+ "PluginRequiresInternet": "Aquest connector requereix una connexió a Internet que funcioni. Comproveu el vostre valor de configuració per a `enable_internet_features` si voleu utilitzar aquesta funció.",
+ "PluginsExtendPiwik": "Els connectors amplien i augmenten la funcionalitat de Matomo.",
"PluginsManagement": "Gestiona els connectors",
"Status": "Estat",
+ "SuccessfullyActicated": "Heu activat correctament <strong>%s</strong>.",
+ "TagManagerEmailSuperUserToActivate": "Envieu un correu electrònic als superusuaris per activar aquesta nova funció",
+ "TagManagerLearnMoreInUserGuide": "Més informació a la Guia d'usuari del Gestor d'etiquetes",
+ "TagManagerNowAvailableSubtitle": "Gestioneu totes les vostres etiquetes fàcilment a través d'una plataforma per obtenir la informació que voleu, les oportunitats són infinites!",
+ "TagManagerNowAvailableTitle": "El gestor d'etiquetes de Matomo ja està disponible",
+ "TagManagerTeaserEmailSuperUserBody": "Bones,%1$sMatomo Tag Manager ja està disponible a Matomo i m'encantaria utilitzar aquesta nova funció. Com que teniu accés de superusuari, podríeu activar aquesta funció a través de la pàgina Gestor d'etiquetes al menú superior?%2$sL'URL de Matomo és %3$s.%4$sGràcies",
+ "TagManagerTeaserHideNonSuperUser": "No m'interessa, no tornis a mostrar aquesta pàgina",
+ "TagManagerTeaserHideSuperUser": "No mostris aquesta pàgina a cap usuari",
+ "TeaserExtendPiwik": "Amplieu Matomo amb connectors i temes",
+ "TeaserExtendPiwikByPlugin": "Amplieu Matomo %1$sinstal·lant connectors des del Marketplace%2$s o %3$scarregueu un connector en format .zip%4$s.",
+ "TeaserExtendPiwikByTheme": "Gaudeix d'un altre aspecte %1$sinstal·lant un nou tema%2$s.",
+ "Theme": "Tema",
+ "Themes": "Temes",
+ "ThemesDescription": "Els temes poden canviar l'aspecte de la interfície d'usuari de Matomo i proporcionar una experiència visual completament nova per gaudir dels vostres informes d'anàlisi.",
+ "ThemesManagement": "Gestionar els temes",
+ "UninstallConfirm": "Esteu a punt de desinstal·lar un connector %s. El connector s'eliminarà completament de la vostra plataforma i no es podrà recuperar. Esteu segur que voleu fer-ho?",
+ "UpdateSelected": "Actualitzar els escollits",
"Version": "Versió",
- "Websites": "Llocs"
+ "ViewAllMarketplacePlugins": "Veure tots els connectors de Marketplace",
+ "WeCouldNotLoadThePluginAsItHasMissingDependencies": "El connector %1$s no s'ha pogut carregar perquè li falten dependències: %2$s",
+ "Websites": "Llocs web",
+ "WhatIsTagManager": "Què és un gestor d'etiquetes?",
+ "WhatIsTagManagerDetails1": "De la mateixa manera que un sistema de gestió de contingut (CMS) us ofereix tota la flexibilitat per publicar contingut per al vostre lloc web sense tenir els coneixements tècnics d'HTML/CSS, un sistema de gestió d'etiquetes (TMS) és el vostre recurs per simplificar el procés d'inserció d'etiquetes primàries i de tercers de seguiment d'aplicacions (també conegudes com a fragments o píxels) al vostre lloc web.",
+ "WhatIsTagManagerDetails2": "Suposem que voleu veure els resultats de les vostres conversions/objectius, registres de butlletins de notícies, ginys socials, finestres emergents de sortida i campanyes de remàrqueting; el que abans era un procés altament tècnic i que consumia molt de temps, ara es fa fàcilment dins del TMS i només es necessita uns quants clics per implementar-lo.",
+ "WhyUsingATagManager": "Per què un gestor d'etiquetes?",
+ "WhyUsingATagManagerDetails1": "Un gestor d'etiquetes et facilita la vida! Ja no cal que espereu que un desenvolupador modifiqui cap fragment vostre o de tercers al vostre lloc web, ja que el Gestor d'etiquetes us ofereix una experiència sense estrès per fer aquests canvis i implementar el vostre lloc web vosaltres mateixos.",
+ "WhyUsingATagManagerDetails2": "No podria ser més còmode i no només us permet introduir canvis al mercat més ràpidament, sinó que també en redueix el cost.",
+ "WhyUsingATagManagerDetails3": "Això fa que els equips de màrqueting, els equips digitals i els informàtics estiguin contents... És un avantatge per a tots!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CorePluginsAdmin/lang/nb.json b/plugins/CorePluginsAdmin/lang/nb.json
index f7527bbc47..f857ece3f5 100644
--- a/plugins/CorePluginsAdmin/lang/nb.json
+++ b/plugins/CorePluginsAdmin/lang/nb.json
@@ -17,6 +17,7 @@
"CorePluginTooltip": "Kjerne-utvidelser har ingen versjon siden de distribueres med Matomo.",
"Deactivate": "Deaktiver",
"DoMoreContactPiwikAdmins": "For å installer en ny utvidelse eller et nytt tema, kontakt administratoren for din Matomo.",
+ "FileExceedsUploadLimit": "Valgt fil overskrider opplastningsgrensen for din tjener.",
"History": "Historikk",
"Inactive": "Deaktivert",
"InfoPluginUpdateIsRecommended": "Oppdater dine utvidelser nå for å få glede av de siste forbedringene.",
diff --git a/plugins/CorePluginsAdmin/lang/sq.json b/plugins/CorePluginsAdmin/lang/sq.json
index 19bf5fdc46..d0e184340d 100644
--- a/plugins/CorePluginsAdmin/lang/sq.json
+++ b/plugins/CorePluginsAdmin/lang/sq.json
@@ -2,89 +2,89 @@
"CorePluginsAdmin": {
"ActionUninstall": "Çinstalojeni",
"Activate": "Aktivizoje",
+ "ActivateTagManagerNow": "Aktivizoje Përgjegjësin e Etiketave që tani",
"Activated": "E aktivizuar",
"Active": "Aktive",
"Activity": "Veprimtari",
"AlwaysActivatedPluginsList": "Shtojcat vijuese janë përherë të aktivizuara dhe s’mund të çaktivizohen: %s",
+ "AreThereAnyRisks": "A ka rreziqe?",
+ "AreThereAnyRisksDetails1": "Kur aktivizoni Përgjegjësin e Etiketave, përdoruesit me leje hyrjeje përgjegjësi do të jenë në gjendje të krijojnë etiketa vetjake HTML, shkaktues dhe ndryshore që mund të ekzekutojnë në sajtin tuaj kod JavaScript. Këto gjedhe vetjake mund të përdoren për të vjedhur, për shembull, të dhëna me spec të vizitorëve të sajtit tuaj (e njohur kjo edhe si %1$sXSS%2$s).",
+ "AreThereAnyRisksDetails2": "Këto gjedhe vetjake mund t’i çaktivizoni që nga “Administrim =&gt; Rregullime të Përgjithshme”, pasi të keni aktivizuar Përgjegjësin e Etiketave. Përndryshe, mundeni edhe të kufizoni përdorimin e këtyre gjedheve vetëm nga përdorues apo superpërdorues të caktuar.",
"AuthorHomepage": "Faqja Hyrëse e Autorit",
- "Changelog": "Regjistër ndryshimesh",
+ "ChangeLookByManageThemes": "Pamjen e Matomo-s mund ta ndryshoni që nga %1$sAdministrim Temash%2$s.",
"ChangeSettingsPossible": "Mund të ndryshoni %1$srregullimet%2$s për këtë shtojcë.",
+ "Changelog": "Regjistër ndryshimesh",
+ "CommunityContributedPlugin": "Kjo është një shtojcë me kontribut nga bashkësia, që ju jepet falas.",
+ "ConsiderDonating": "Shihni mundësinë e dhurimit",
+ "ConsiderDonatingCreatorOf": "Ju lutemi, shihni mundësinë e dhurimit për krijuesin e %s",
"CorePluginTooltip": "Shtojcat bazë nuk kanë version, ngaqë shpërndahen tok me Matomo-n.",
"Deactivate": "Çaktivizoje",
"DoMoreContactPiwikAdmins": "Që të instaloni një shtojcë apo temë të re, ju lutemi, lidhuni me përgjegjësit e instalimit tuaj të Matomo-s.",
- "ChangeLookByManageThemes": "Pamjen e Matomo-s mund ta ndryshoni që nga %1$sAdministrim Temash%2$s.",
+ "FileExceedsUploadLimit": "Kartela e përzgjedhur tejkalon kufi ngarkimesh të shërbyesit tuaj.",
"History": "Historik",
"Inactive": "Joaktive",
- "InstalledPlugins": "Shtojca të instaluara",
- "InstalledThemes": "Tema të instaluara",
"InfoPluginUpdateIsRecommended": "Përditësoni shtojcat tuaja tani, që të përfitoni nga përmirësimet më të reja.",
"InfoThemeIsUsedByOtherUsersAsWell": "Shënim: %1$s përdoruesit e tjerë të regjistruar në këtë instancë Matomo po përdorin gjithashtu temën %2$s.",
"InfoThemeUpdateIsRecommended": "Përditësoni temat tuaja që të shijoni versionin më të ri.",
"InstallNewPlugins": "Instaloni shtojca të reja",
"InstallNewThemes": "Instaloni tema të reja",
+ "InstalledPlugins": "Shtojca të instaluara",
+ "InstalledThemes": "Tema të instaluara",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Shtojca mund të instaloni automatikisht që prej Marketplace-it, ose %1$sta ngarkoni një shtojcë%2$s në formatin .zip.",
"LicenseHomepage": "Faqja Hyrëse e Licencës",
"LikeThisPlugin": "Ju pëlqen kjo shtojcë?",
- "ConsiderDonating": "Shihni mundësinë e dhurimit",
- "CommunityContributedPlugin": "Kjo është një shtojcë me kontribut nga bashkësia, që ju jepet falas.",
- "ConsiderDonatingCreatorOf": "Ju lutemi, shihni mundësinë e dhurimit për krijuesin e %s",
- "PluginsExtendPiwik": "Shtojcat zgjerojnë dhe thellojnë funksionet e Matomo-s.",
- "OncePluginIsInstalledYouMayActivateHere": "Pasi një shtojcë të jetë instaluar, mund ta aktivizoni ose çaktivizoni prej këtu.",
"MenuPlatform": "Platformë",
"MissingRequirementsNotice": "Ju lutemi, përditësojeni %1$s %2$s me një version më të ri, është i domosdoshëm %1$s %3$s.",
"MissingRequirementsPleaseInstallNotice": "Ju lutemi, instaloni %1$s %2$s pasi është i domosdoshëm për %3$s.",
+ "NoPluginSettings": "S’ka rregullime shtojce që mund të formësohen",
"NoZipFileSelected": "Ju lutemi, përzgjidhni një kartelë ZIP.",
- "FileExceedsUploadLimit": "Kartela e përzgjedhur tejkalon kufi ngarkimesh të shërbyesit tuaj.",
+ "NotDownloadable": "E pashkarkueshme",
"NumUpdatesAvailable": "%s Përditësim(e) gati",
- "NoPluginSettings": "S’ka rregullime shtojce që mund të formësohen",
+ "OncePluginIsInstalledYouMayActivateHere": "Pasi një shtojcë të jetë instaluar, mund ta aktivizoni ose çaktivizoni prej këtu.",
"Origin": "Origjina",
"OriginCore": "Bazë",
"OriginOfficial": "Zyrtare",
"OriginThirdParty": "Prej palësh të treta",
+ "PluginActivated": "Shtojca u aktivizua",
"PluginHomepage": "Faqe Hyrëse e Shtojcës",
"PluginNotCompatibleWith": "Shtojca %1$s s’është e përputhshme me %2$s.",
+ "PluginNotDownloadable": "Shtojca s’është e shkarkueshme.",
+ "PluginNotDownloadablePaidReason": "Arsye e mundshme mund të jetë licencë e skaduar ose tejkaluar.",
"PluginNotFound": "Shtojca %1$s s’u gjet në sistemin e kartelave.",
- "PluginNotFoundAlternative": "Nëse e keni përdorur këtë shtojcë, provoni ta ringarkoni ose riinstaloni prej Marketplace-it. Nëse jo, klikoni çinstalojeni që të hiqet prej listës.",
+ "PluginNotFoundAlternative": "Nëse e keni përdorur këtë shtojcë, provoni ta ringarkoni ose riinstaloni prej Marketplace-it. Nëse jo, klikoni “Çinstaloje”, që të hiqet prej listës.",
"PluginNotWorkingAlternative": "Nëse e përdorni këtë shtojcë, ndoshta mund të gjeni një version më të ri te Marketplace-i. Nëse jo, mund të donit ta çinstaloni.",
"PluginRequirement": "%1$s lyp %2$s.",
- "PluginsManagement": "Administrim Shtojcash",
- "NotDownloadable": "E pashkarkueshme",
- "PluginNotDownloadable": "Shtojca s’është e shkarkueshme.",
- "PluginNotDownloadablePaidReason": "Arsye të mundshme mund të jenë licencë e skaduar ose tejkaluar.",
"PluginRequiresInternet": "Kjo shtojcë lyp një lidhje internet funksionale. Ju lutemi, kontrolloni vlerën e formësimit tuaj për `enable_internet_features`, nëse doni ta përdorni këtë veçori.",
- "PluginActivated": "Shtojca u aktivizua",
+ "PluginsExtendPiwik": "Shtojcat zgjerojnë dhe thellojnë funksionet e Matomo-s.",
+ "PluginsManagement": "Administrim Shtojcash",
"Status": "Gjendje",
- "SuccessfullyActicated": "E aktivizuat me sukses <strong>%s<\/strong>.",
- "TeaserExtendPiwik": "Zgjerojeni Matomo-n me Shtojca dhe Tema",
- "TeaserExtendPiwikByPlugin": "Zgjerojeni Matomo-n duke %1$sinstaluar shtojca prej Marketplace-it%2$s ose %3$sduke ngarkuar një shtojcë në formatin .zip%4$s.",
- "TeaserExtendPiwikByTheme": "Shijoni pamje & ndjesi të reja përmes %1$sinstalimit të një teme të re%2$s.",
- "InstallingNewPluginViaMarketplaceOrUpload": "Shtojca mund të instaloni vetvetiu që prej Marketplace-it ose %1$sta ngarkoni një shtojcë%2$s në formatin .zip.",
- "TagManagerNowAvailableTitle": "Përgjegjësi Matomo i Etiketave tashmë është gati",
- "TagManagerNowAvailableSubtitle": "Administroni krejt etiketat tuaja përmes një platforme, që të njihni prirjet që doni, mundësitë janë pa fund!",
- "ActivateTagManagerNow": "Aktivizoje Përgjegjësin e Etiketave që tani",
+ "SuccessfullyActicated": "E aktivizuat me sukses <strong>%s</strong>.",
"TagManagerEmailSuperUserToActivate": "Dërgojuni Superpërdoruesve email që ta aktivizojnë këtë veçori të re",
- "TagManagerTeaserHideSuperUser": "Mos ia shfaq këtë faqe ndonjë përdoruesi",
- "TagManagerTeaserHideNonSuperUser": "S’më intereson, mos e shfaq sërish këtë faqe",
- "TagManagerTeaserEmailSuperUserBody": "Njatjeta,%1$sPërgjegjësi Matomo i Etiketave është tashmë i gatshëm brenda Matomo-s dhe do të doja ta përdorja këtë veçori të re. Meqë jeni Superpërdorues, a mundeni ta aktivizoni këtë veçori që nga faqja Përgjegjës Etiketash te menuja kryesore?%2$sURL-ja e instalimit Matomo është %3$s.%4$sFaleminderit",
- "WhatIsTagManager": "Ç’është Përgjegjësi i Etiketave?",
- "WhatIsTagManagerDetails1": "Në ngjashmëri me mënyrën se si një Sistem Administrimi Lënde (CMS) ju ofron krejt zhdërvjelltësinë për të botuar lëndë për sajtin tuaj pa pasur njohuri teknike në HTML\/CSS, një Sistem Administrimi Etiketash (TMS) është rruga juaj për të thjeshtuar procesin e trupëzimit në sajtin tuaj të etiketave të vetë aplikacionit apo prej aplikacionesh palë të treta (të njohura edhe si copëza ose piksel).",
- "WhatIsTagManagerDetails2": "Le të themi se doni të shihni përfundimet e shndërrimeve\/synimeve tuaja, regjistrimet për te buletini, widget-e mediash shoqërore, flluska daljesh dhe fushata rimarketingu; ai që dikur qe një proces shumë teknik dhe shumë i gjatë në kohë, tani bëhet lehtësisht brenda TMS-së dhe ha vetëm pak klikime për ta sendërtuar.",
"TagManagerLearnMoreInUserGuide": "Mësoni më tepër, te Udhërrëfyesi i Përdoruesit të Përgjegjësit të Etiketave",
- "WhyUsingATagManager": "Pse duhet një Përgjegjës Etiketash?",
- "WhyUsingATagManagerDetails1": "Një Përgjegjës Etiketash jua bën jetën më të lehtë! Nuk ju duhet më të prisni që një programues të modifikojë copëza të sajtit tuaj tuajat apo nga palë të treta, ngaqë Përgjegjësi i Etiketave ju lejon t’i bëni këto ndryshime dhe t’i kaloni në sajtin tuaj ju vetë, pa mundim.",
- "WhyUsingATagManagerDetails2": "Më e volitshme se ka, s’bëhet dhe jo vetëm që ju lejon të sillni ndryshime në treg më shpejt, ul gjithashtu edhe kostot.",
- "WhyUsingATagManagerDetails3": "Kjo kënaq ekipet e marketingut, ato të lëndës dixhitale dhe personelin TI… Është me përfitim për këdo!",
- "AreThereAnyRisks": "A ka rreziqe?",
- "AreThereAnyRisksDetails1": "Kur aktivizoni Përgjegjësin e Etiketave, përdoruesit me leje hyrjeje përgjegjësi do të jenë në gjendje të krijojnë etiketa vetjake HTML, shkaktues dhe ndryshore që mund të ekzekutojnë në sajtin tuaj kod JavaScript. Këto gjedhe vetjake mund të përdoren për të vjedhur, për shembull, të dhëna me spec të vizitorëve të sajtit tuaj (të njohura si %1$sXSS%2$s).",
- "AreThereAnyRisksDetails2": "Këto gjedhe vetjake mund t’i çaktivizoni që nga \"Administrim => Rregullime të Përgjithshme\", pasi të keni aktivizuar Përgjegjësin e Etiketave. Përndryshe, mundeni edhe të kufizoni përdorimin e këtyre gjedheve vetëm nga përdorues apo superpërdorues të caktuar.",
+ "TagManagerNowAvailableSubtitle": "Administroni krejt etiketat tuaja përmes një platforme, që të njihni prirjet që doni, mundësitë janë pa fund!",
+ "TagManagerNowAvailableTitle": "Përgjegjësi Matomo i Etiketave tashmë është gati",
+ "TagManagerTeaserEmailSuperUserBody": "Njatjeta,%1$sPërgjegjësi Matomo i Etiketave është tashmë i gatshëm brenda Matomo-s dhe do të doja ta përdorja këtë veçori të re. Meqë jeni Superpërdorues, a mundeni ta aktivizoni këtë veçori që nga faqja Përgjegjës Etiketash te menuja kryesore?%2$sURL-ja e instalimit Matomo është %3$s.%4$sFaleminderit",
+ "TagManagerTeaserHideNonSuperUser": "S’më intereson, mos e shfaq sërish këtë faqe",
+ "TagManagerTeaserHideSuperUser": "Mos ia shfaq këtë faqe ndonjë përdoruesi",
+ "TeaserExtendPiwik": "Zgjerojeni Matomo-n me Shtojca dhe Tema",
+ "TeaserExtendPiwikByPlugin": "Zgjerojeni Matomo-n duke %1$sinstaluar shtojca prej Marketplace-it%2$s, ose %3$sduke ngarkuar një shtojcë në formatin .zip%4$s.",
+ "TeaserExtendPiwikByTheme": "Shijoni pamje &amp; ndjesi të reja përmes %1$sinstalimit të një teme të re%2$s.",
"Theme": "Temë",
"Themes": "Tema",
- "ThemesDescription": "Temat mund të ndryshojnë pamjen e ndërfaqes së përdoruesit të Matomo-s, dhe të sjellin një pamje të re për shijimin e raporteve tuaja analitike.",
+ "ThemesDescription": "Temat mund të ndryshojnë pamjen e ndërfaqes së përdoruesit të Matomo-s dhe të sjellin një pamje plotësisht të re për shijimin e raporteve tuaja analitike.",
"ThemesManagement": "Administroni Tema",
"UninstallConfirm": "Ju ndan një hap nga çinstalimi i shtojcës %s. Shtojca do të hiqet plotësisht nga platforma juaj dhe ky veprim s’mund të zhbëhet. Jeni i sigurt se doni të bëhet kështu?",
+ "UpdateSelected": "Përditëso të Përzgjedhurat",
"Version": "Version",
"ViewAllMarketplacePlugins": "Shihni krejt shtojcat e Marketplace-it",
"WeCouldNotLoadThePluginAsItHasMissingDependencies": "Shtojca %1$s s’u ngarkua dot, ngaqë ka varësi të paplotësuara: %2$s",
"Websites": "Sajte",
- "UpdateSelected": "Përditëso të Përzgjedhurat"
+ "WhatIsTagManager": "Ç’është Përgjegjësi i Etiketave?",
+ "WhatIsTagManagerDetails1": "Në ngjashmëri me mënyrën se si një Sistem Administrimi Lënde (CMS) ju ofron krejt zhdërvjelltësinë për të botuar lëndë për sajtin tuaj pa pasur njohuri teknike në HTML/CSS, një Sistem Administrimi Etiketash (TMS) është rruga juaj për të thjeshtuar procesin e trupëzimit në sajtin tuaj të etiketave të vetë aplikacionit apo prej aplikacionesh palë të treta (të njohura edhe si copëza, ose piksel).",
+ "WhatIsTagManagerDetails2": "Le të themi se doni të shihni përfundimet e shndërrimeve/synimeve tuaja, regjistrimet për te buletini, widget-e mediash shoqërore, flluska daljesh dhe fushata rimarketingu; ai që dikur qe një proces shumë teknik dhe shumë i gjatë në kohë, tani bëhet lehtësisht brenda TMS-së dhe ha vetëm pak klikime për ta sendërtuar.",
+ "WhyUsingATagManager": "Pse duhet një Përgjegjës Etiketash?",
+ "WhyUsingATagManagerDetails1": "Një Përgjegjës Etiketash jua bën jetën më të lehtë! Nuk ju duhet më të prisni që një programues të modifikojë copëza të sajtit tuaj tuajat apo nga palë të treta, ngaqë Përgjegjësi i Etiketave ju lejon t’i bëni këto ndryshime dhe t’i kaloni në sajtin tuaj ju vetë, pa mundim.",
+ "WhyUsingATagManagerDetails2": "Më e volitshme se kaq, s’bëhet dhe jo vetëm që ju lejon të sillni ndryshime në treg më shpejt, por ul gjithashtu edhe kostot.",
+ "WhyUsingATagManagerDetails3": "Kjo kënaq ekipet e marketingut, ato të lëndës dixhitale dhe personelin TI… Është me përfitim për këdo!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php b/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
index b497f999d4..5298ea94fa 100644
--- a/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
+++ b/plugins/CorePluginsAdmin/tests/Integration/ApiTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CorePluginsAdmin\tests\Integration;
use Piwik\Access;
use Piwik\Auth;
use Piwik\Container\StaticContainer;
-use Piwik\Piwik;
use Piwik\Plugins\CoreUpdater\SystemSettings;
use Piwik\Plugins\UsersManager\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/CorePluginsAdmin/tests/UI/expected-screenshots/TagManagerTeaser_admin_page_disable.png b/plugins/CorePluginsAdmin/tests/UI/expected-screenshots/TagManagerTeaser_admin_page_disable.png
index ff0c01de84..a011c32a8e 100644
--- a/plugins/CorePluginsAdmin/tests/UI/expected-screenshots/TagManagerTeaser_admin_page_disable.png
+++ b/plugins/CorePluginsAdmin/tests/UI/expected-screenshots/TagManagerTeaser_admin_page_disable.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7113ed2007c5b4a17ff6fb3a1dd7bdc2f055b3730a5a497e18fed532aae168b4
-size 180911
+oid sha256:975f45608c30c5208e9186beb721c5a48127b0b8e0b2acefac18543fe9baaf8a
+size 180913
diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
index ca82846071..e492932d9c 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=50821d4a
+// 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
var _hoisted_1 = {
class: "form-group row matomo-form-field"
@@ -193,19 +193,21 @@ 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, null, 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]]);
+ }, 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"])({
+ 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]]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=50821d4a
+// CONCATENATED MODULE: ./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/FieldCheckbox.vue?vue&type=template&id=4a0aa5c3
+// 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
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_1 = {
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_1 = {
class: "checkbox"
};
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_2 = ["checked", "id", "name"];
-var FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_3 = ["innerHTML"];
-function FieldCheckboxvue_type_template_id_4a0aa5c3_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", FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_2 = ["checked", "id", "name"];
+var FieldCheckboxvue_type_template_id_3ee04378_hoisted_3 = ["innerHTML"];
+function FieldCheckboxvue_type_template_id_3ee04378_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", FieldCheckboxvue_type_template_id_3ee04378_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
onChange: _cache[0] || (_cache[0] = function ($event) {
return _ctx.onChange($event);
})
@@ -215,17 +217,17 @@ function FieldCheckboxvue_type_template_id_4a0aa5c3_render(_ctx, _cache, $props,
type: "checkbox",
id: _ctx.name,
name: _ctx.name
- }), null, 16, FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }), null, 16, FieldCheckboxvue_type_template_id_3ee04378_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.title)
- }, null, 8, FieldCheckboxvue_type_template_id_4a0aa5c3_hoisted_3)])]);
+ }, null, 8, FieldCheckboxvue_type_template_id_3ee04378_hoisted_3)])]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=4a0aa5c3
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=3ee04378
// 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/FieldCheckbox.vue?vue&type=script&lang=ts
/* harmony default export */ var FieldCheckboxvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
props: {
- modelValue: Boolean,
+ modelValue: [Boolean, Number],
uiControlAttributes: Object,
name: String,
title: String
@@ -246,7 +248,7 @@ function FieldCheckboxvue_type_template_id_4a0aa5c3_render(_ctx, _cache, $props,
-FieldCheckboxvue_type_script_lang_ts.render = FieldCheckboxvue_type_template_id_4a0aa5c3_render
+FieldCheckboxvue_type_script_lang_ts.render = FieldCheckboxvue_type_template_id_3ee04378_render
/* harmony default export */ var FieldCheckbox = (FieldCheckboxvue_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/FieldCheckboxArray.vue?vue&type=template&id=b01b8bfc
@@ -1673,6 +1675,103 @@ function processCheckboxAndRadioAvailableValues(availableValues, type) {
});
return flatValues;
}
+// 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/FieldAngularJsTemplate.vue?vue&type=template&id=3f63d972
+
+var FieldAngularJsTemplatevue_type_template_id_3f63d972_hoisted_1 = {
+ ref: "root"
+};
+function FieldAngularJsTemplatevue_type_template_id_3f63d972_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", FieldAngularJsTemplatevue_type_template_id_3f63d972_hoisted_1, null, 512);
+}
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=template&id=3f63d972
+
+// 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/FieldAngularJsTemplate.vue?vue&type=script&lang=ts
+
+
+
+function clone(obj) {
+ if (typeof obj === 'undefined') {
+ return undefined;
+ }
+
+ return JSON.parse(JSON.stringify(obj));
+}
+
+/* harmony default export */ var FieldAngularJsTemplatevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ modelValue: null,
+ formField: {
+ type: null,
+ required: true
+ },
+ templateFile: {
+ type: String,
+ required: true
+ }
+ },
+ emits: ['update:modelValue'],
+ inheritAttrs: false,
+ setup: function setup(props, context) {
+ var root = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
+ var $element = window.$("<div ng-include=\"'".concat(props.templateFile, "?cb=").concat(external_CoreHome_["Matomo"].cacheBuster, "'\"></div>"));
+ var $timeout = external_CoreHome_["Matomo"].helper.getAngularDependency('$timeout');
+ var $rootScope = external_CoreHome_["Matomo"].helper.getAngularDependency('$rootScope');
+ var scope = $rootScope.$new();
+ scope.formField = Object.assign(Object.assign({}, clone(props.formField)), {}, {
+ value: clone(props.modelValue)
+ });
+ scope.$watch('formField.value', function (newValue, oldValue) {
+ if (newValue !== oldValue && JSON.stringify(newValue) !== JSON.stringify(props.modelValue)) {
+ context.emit('update:modelValue', clone(newValue));
+ }
+ });
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
+ return props.modelValue;
+ }, function (newValue) {
+ if (JSON.stringify(newValue) !== JSON.stringify(scope.formField.value)) {
+ $timeout(function () {
+ scope.formField.value = newValue;
+ });
+ }
+ });
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
+ return props.formField;
+ }, function (newValue) {
+ $timeout(function () {
+ var currentValue = scope.formField.value;
+ scope.formField = Object.assign(Object.assign({}, clone(newValue)), {}, {
+ value: currentValue
+ });
+ });
+ }, {
+ deep: true
+ }); // append on mount
+
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onMounted"])(function () {
+ window.$(root.value).append($element);
+ external_CoreHome_["Matomo"].helper.compileAngularComponents($element, {
+ scope: scope,
+ params: {
+ formField: Object.assign(Object.assign({}, clone(props.formField)), {}, {
+ value: props.modelValue
+ })
+ }
+ });
+ });
+ return {
+ root: root
+ };
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue
+
+
+
+FieldAngularJsTemplatevue_type_script_lang_ts.render = FieldAngularJsTemplatevue_type_template_id_3f63d972_render
+
+/* harmony default export */ var FieldAngularJsTemplate = (FieldAngularJsTemplatevue_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/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=script&lang=ts
function FormFieldvue_type_script_lang_ts_typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { FormFieldvue_type_script_lang_ts_typeof = function _typeof(obj) { return typeof obj; }; } else { FormFieldvue_type_script_lang_ts_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return FormFieldvue_type_script_lang_ts_typeof(obj); }
@@ -1694,6 +1793,7 @@ function FormFieldvue_type_script_lang_ts_typeof(obj) { "@babel/helpers - typeof
+
var TEXT_CONTROLS = ['password', 'url', 'search', 'email'];
var CONTROLS_SUPPORTING_ARRAY = ['textarea', 'checkbox', 'text'];
var CONTROL_TO_COMPONENT_MAP = {
@@ -1749,7 +1849,7 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
var setInlineHelp = function setInlineHelp(newVal) {
var toAppend;
- if (!newVal || !inlineHelpNode.value) {
+ if (!newVal || !inlineHelpNode.value || typeof newVal.render === 'function') {
return;
}
@@ -1777,6 +1877,19 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
};
},
computed: {
+ inlineHelpComponent: function inlineHelpComponent() {
+ var formField = this.formField;
+ var inlineHelpRecord = formField.inlineHelp;
+
+ if (inlineHelpRecord && typeof inlineHelpRecord.render === 'function') {
+ return formField.inlineHelp;
+ }
+
+ return undefined;
+ },
+ inlineHelpBind: function inlineHelpBind() {
+ return this.inlineHelpComponent ? this.formField.inlineHelpBind : undefined;
+ },
childComponent: function childComponent() {
var formField = this.formField;
@@ -1796,6 +1909,11 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
}
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])(component);
+ } // backwards compatibility w/ settings that use templateFile property
+
+
+ if (formField.templateFile) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])(FieldAngularJsTemplate);
}
var uiControl = formField.uiControl;
@@ -1939,103 +2057,6 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
FormFieldvue_type_script_lang_ts.render = render
/* harmony default export */ var FormField = (FormFieldvue_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/FieldAngularJsTemplate.vue?vue&type=template&id=3f63d972
-
-var FieldAngularJsTemplatevue_type_template_id_3f63d972_hoisted_1 = {
- ref: "root"
-};
-function FieldAngularJsTemplatevue_type_template_id_3f63d972_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", FieldAngularJsTemplatevue_type_template_id_3f63d972_hoisted_1, null, 512);
-}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=template&id=3f63d972
-
-// 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/FieldAngularJsTemplate.vue?vue&type=script&lang=ts
-
-
-
-function clone(obj) {
- if (typeof obj === 'undefined') {
- return undefined;
- }
-
- return JSON.parse(JSON.stringify(obj));
-}
-
-/* harmony default export */ var FieldAngularJsTemplatevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
- props: {
- modelValue: null,
- formField: {
- type: null,
- required: true
- },
- templateFile: {
- type: String,
- required: true
- }
- },
- emits: ['update:modelValue'],
- inheritAttrs: false,
- setup: function setup(props, context) {
- var root = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
- var $element = window.$("<div ng-include=\"'".concat(props.templateFile, "?cb=").concat(external_CoreHome_["Matomo"].cacheBuster, "'\"></div>"));
- var $timeout = external_CoreHome_["Matomo"].helper.getAngularDependency('$timeout');
- var $rootScope = external_CoreHome_["Matomo"].helper.getAngularDependency('$rootScope');
- var scope = $rootScope.$new();
- scope.formField = Object.assign(Object.assign({}, clone(props.formField)), {}, {
- value: clone(props.modelValue)
- });
- scope.$watch('formField.value', function (newValue, oldValue) {
- if (newValue !== oldValue && JSON.stringify(newValue) !== JSON.stringify(props.modelValue)) {
- context.emit('update:modelValue', clone(newValue));
- }
- });
- Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
- return props.modelValue;
- }, function (newValue) {
- if (JSON.stringify(newValue) !== JSON.stringify(scope.formField.value)) {
- $timeout(function () {
- scope.formField.value = newValue;
- });
- }
- });
- Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
- return props.formField;
- }, function (newValue) {
- $timeout(function () {
- var currentValue = scope.formField.value;
- scope.formField = Object.assign(Object.assign({}, clone(newValue)), {}, {
- value: currentValue
- });
- });
- }, {
- deep: true
- }); // append on mount
-
- Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onMounted"])(function () {
- window.$(root.value).append($element);
- external_CoreHome_["Matomo"].helper.compileAngularComponents($element, {
- scope: scope,
- params: {
- formField: Object.assign(Object.assign({}, clone(props.formField)), {}, {
- value: props.modelValue
- })
- }
- });
- });
- return {
- root: root
- };
- }
-}));
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue?vue&type=script&lang=ts
-
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldAngularJsTemplate.vue
-
-
-
-FieldAngularJsTemplatevue_type_script_lang_ts.render = FieldAngularJsTemplatevue_type_template_id_3f63d972_render
-
-/* harmony default export */ var FieldAngularJsTemplate = (FieldAngularJsTemplatevue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.adapter.ts
/*!
* Matomo - free/libre analytics platform
@@ -2162,9 +2183,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=2eff5303
+// 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
-function Fieldvue_type_template_id_2eff5303_render(_ctx, _cache, $props, $setup, $data, $options) {
+function Fieldvue_type_template_id_731fa155_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, {
@@ -2175,7 +2196,7 @@ function Fieldvue_type_template_id_2eff5303_render(_ctx, _cache, $props, $setup,
})
}, null, 8, ["form-field", "model-value"]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=2eff5303
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=731fa155
// 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
@@ -2196,7 +2217,8 @@ var UI_CONTROLS_TO_TYPE = {
description: String,
introduction: String,
title: String,
- inlineHelp: String,
+ inlineHelp: [String, Object],
+ inlineHelpBind: Object,
disabled: Boolean,
uiControlAttributes: {
type: Object,
@@ -2222,7 +2244,8 @@ var UI_CONTROLS_TO_TYPE = {
rows: Number,
min: Number,
max: Number,
- component: null
+ component: null,
+ templateFile: String
},
emits: ['update:modelValue'],
components: {
@@ -2252,8 +2275,10 @@ var UI_CONTROLS_TO_TYPE = {
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,
@@ -2283,7 +2308,7 @@ var UI_CONTROLS_TO_TYPE = {
-Fieldvue_type_script_lang_ts.render = Fieldvue_type_template_id_2eff5303_render
+Fieldvue_type_script_lang_ts.render = Fieldvue_type_template_id_731fa155_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 127457c9ae..3d8b0e2cb3 100644
--- a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
+++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
@@ -1,34 +1,34 @@
-(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 It})),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 Dn})),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,null,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 g=Object(l["defineComponent"])({props:{modelValue:Boolean,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)}}});g.render=v;var h=g,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"},D=["onClick"],H={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",H,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,D)})),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,ge=["value","id","name","disabled","checked"];function he(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,ge),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=he;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)||He(e)||Ue(e)||De()}function De(){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 He(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"],gt=["for","innerHTML"];function ht(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,gt)],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=ht;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 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}
/*!
* 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}function Mt(e){return Mt="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},Mt(e)}var Pt=["password","url","search","email"],Jt=["textarea","checkbox","text"],Dt={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"},Ht={FieldSelect:Ye,FieldCheckboxArray:$t,FieldRadio:$t,FieldExpandableSelect:z},Lt=Object(l["defineComponent"])({props:{modelValue:null,formField:{type:Object,required:!0}},emits:["update:modelValue"],components:{FieldCheckbox:h,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&&(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:{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)}var a=e.uiControl,u=Dt[a];return-1!==Pt.indexOf(a)&&(u="FieldText"),"array"===this.formField.type&&-1!==Jt.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&&Ht[e]?Ht[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"===Mt(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)}}});Lt.render=m;var It=Lt,zt={ref:"root"};function Ut(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",zt,null,512)}function Kt(e){if("undefined"!==typeof e)return JSON.parse(JSON.stringify(e))}var _t=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({},Kt(e.formField)),{},{value:Kt(e.modelValue)}),u.$watch("formField.value",(function(n,o){n!==o&&JSON.stringify(n)!==JSON.stringify(e.modelValue)&&t.emit("update:modelValue",Kt(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({},Kt(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({},Kt(e.formField)),{},{value:e.modelValue})}})})),{root:n}}});_t.render=Ut;var qt=_t;
+ */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;
/*!
* 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:It,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"])(qt);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,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},emits:["update:modelValue"],components:{FormField:It},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,title:this.title,component:this.component,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(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;
/*!
* 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"])(qt);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:It},emits:["update:modelValue"],computed:{settingWithComponent:function(){return this.setting.templateFile?Object.assign(Object.assign({},this.setting),{},{component:qt}):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)||hn(e,t)||gn()}function gn(){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 hn(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=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.$;
/*!
* 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 Dn={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 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)}))}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Hn(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{},oldValue:null,modifiers:{},dir:{}};Dn.mounted(t[0],n)}}}window.angular.module("piwikApp").directive("piwikPluginManagement",Hn);
+ */function Dn(){return{restrict:"A",link:function(e,t){var n={instance:null,value:{},oldValue:null,modifiers:{},dir:{}};Hn.mounted(t[0],n)}}}window.angular.module("piwikApp").directive("piwikPluginManagement",Dn);
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CorePluginsAdmin/vue/src/Field/Field.vue b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
index 5cddbe1226..02184e242b 100644
--- a/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
+++ b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
@@ -33,7 +33,8 @@ export default defineComponent({
description: String,
introduction: String,
title: String,
- inlineHelp: String,
+ inlineHelp: [String, Object],
+ inlineHelpBind: Object,
disabled: Boolean,
uiControlAttributes: {
type: Object,
@@ -56,6 +57,7 @@ export default defineComponent({
min: Number,
max: Number,
component: null,
+ templateFile: String,
},
emits: ['update:modelValue'],
components: {
@@ -84,8 +86,10 @@ export default defineComponent({
description: this.description,
introduction: this.introduction,
inlineHelp: this.inlineHelp,
+ inlineHelpBind: this.inlineHelpBind,
title: this.title,
component: this.component,
+ templateFile: this.templateFile, // BC for angularjs code that uses <Field> indirectly
uiControlAttributes: {
...this.uiControlAttributes,
disabled: this.disabled,
diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
index 1d1bb8d560..b84e83ac56 100644
--- a/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
+++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue
@@ -27,7 +27,7 @@ import { defineComponent } from 'vue';
export default defineComponent({
props: {
- modelValue: Boolean,
+ modelValue: [Boolean, Number],
uiControlAttributes: Object,
name: String,
title: String,
diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
index 6f175846ba..1982b7ff07 100644
--- a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
+++ b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
@@ -54,7 +54,13 @@
class="inline-help"
ref="inlineHelp"
v-if="formField.inlineHelp"
- />
+ >
+ <component
+ v-if="inlineHelpComponent"
+ :is="inlineHelpComponent"
+ v-bind="inlineHelpBind"
+ />
+ </span>
<span v-show="showDefaultValue">
<br />
{{ translate('General_Default') }}:
@@ -95,6 +101,7 @@ import FieldTextArray from './FieldTextArray.vue';
import FieldTextarea from './FieldTextarea.vue';
import FieldTextareaArray from './FieldTextareaArray.vue';
import { processCheckboxAndRadioAvailableValues } from './utilities';
+import FieldAngularJsTemplate from './FieldAngularJsTemplate.vue';
const TEXT_CONTROLS = ['password', 'url', 'search', 'email'];
const CONTROLS_SUPPORTING_ARRAY = ['textarea', 'checkbox', 'text'];
@@ -140,6 +147,8 @@ interface FormField {
uiControl: string;
component: Component | ComponentReference;
inlineHelp?: string;
+ inlineHelpBind?: unknown;
+ templateFile?: string;
}
interface OptionLike {
@@ -179,7 +188,10 @@ export default defineComponent({
const setInlineHelp = (newVal?: string|HTMLElement|JQuery) => {
let toAppend: HTMLElement|JQuery|string;
- if (!newVal || !inlineHelpNode.value) {
+ if (!newVal
+ || !inlineHelpNode.value
+ || typeof (newVal as unknown as Record<string, unknown>).render === 'function'
+ ) {
return;
}
@@ -207,6 +219,18 @@ export default defineComponent({
};
},
computed: {
+ inlineHelpComponent() {
+ const formField = this.formField as FormField;
+
+ const inlineHelpRecord = formField.inlineHelp as unknown as Record<string, unknown>;
+ if (inlineHelpRecord && typeof inlineHelpRecord.render === 'function') {
+ return formField.inlineHelp as Component;
+ }
+ return undefined;
+ },
+ inlineHelpBind() {
+ return this.inlineHelpComponent ? this.formField.inlineHelpBind : undefined;
+ },
childComponent(): string|Component {
const formField = this.formField as FormField;
@@ -226,6 +250,11 @@ export default defineComponent({
return markRaw(component);
}
+ // backwards compatibility w/ settings that use templateFile property
+ if (formField.templateFile) {
+ return markRaw(FieldAngularJsTemplate);
+ }
+
const { uiControl } = formField;
let control = CONTROL_TO_COMPONENT_MAP[uiControl];
diff --git a/plugins/CoreUpdater/Commands/Update.php b/plugins/CoreUpdater/Commands/Update.php
index e528796685..d3dee15b87 100644
--- a/plugins/CoreUpdater/Commands/Update.php
+++ b/plugins/CoreUpdater/Commands/Update.php
@@ -18,7 +18,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CoreUpdater\Commands\Update\CliUpdateObserver;
use Piwik\Plugins\CoreUpdater\NoUpdatesFoundException;
-use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Updater;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
diff --git a/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php b/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
index 589969d096..dd571b8c15 100644
--- a/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
+++ b/plugins/CoreUpdater/Diagnostic/HttpsUpdateCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\CoreUpdater\Diagnostic;
-use Piwik\Config;
use Piwik\Plugins\CoreUpdater;
use Piwik\Plugins\Diagnostics\Diagnostic\Diagnostic;
use Piwik\Plugins\Diagnostics\Diagnostic\DiagnosticResult;
diff --git a/plugins/CoreUpdater/Updater.php b/plugins/CoreUpdater/Updater.php
index 42a965e1d0..40f1154309 100644
--- a/plugins/CoreUpdater/Updater.php
+++ b/plugins/CoreUpdater/Updater.php
@@ -10,17 +10,13 @@ namespace Piwik\Plugins\CoreUpdater;
use Exception;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Cache as PiwikCache;
use Piwik\CliMulti;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\Context;
use Piwik\Filechecks;
use Piwik\Filesystem;
-use Piwik\FrontController;
use Piwik\Http;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\ReleaseChannels;
use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
diff --git a/plugins/CoreUpdater/lang/ca.json b/plugins/CoreUpdater/lang/ca.json
index d6b38aa7b3..707cccd5cc 100644
--- a/plugins/CoreUpdater/lang/ca.json
+++ b/plugins/CoreUpdater/lang/ca.json
@@ -1,47 +1,103 @@
{
"CoreUpdater": {
- "CriticalErrorDuringTheUpgradeProcess": "Hi ha hagut un error crític durant el procés d'actualització:",
- "DatabaseUpgradeRequired": "És necessari actualitzar la base de dades",
- "DownloadingUpdateFromX": "S'està descarregant l'actualització de %s",
+ "AlreadyUpToDate": "Ja està tot al dia.",
+ "CheckingForPluginUpdates": "S'estan buscant noves actualitzacions de connectors",
+ "ClickHereToViewSqlQueries": "Feu clic aquí per veure i copiar la llista de consultes SQL i comandes de consola que s'executaran",
+ "CloudHosting": "Allotjament al núvol",
+ "ConsoleCommandDescription": "Engega les actualitzacions. Utilitzeu-lo després que el nucli de Matomo o qualsevol fitxer del connector s'hagi actualitzat. Afegiu --yes per actualitzar sense confirmació.",
+ "ConsoleParameterDescription": "Executeu l'actualització directament sense demanar confirmació",
+ "ConsoleStartingDbUpgrade": "S'està iniciant el procés d'actualització de la base de dades ara. Això pot trigar una mica, així que tingueu paciència.",
+ "ConsoleUpdateFailure": "No s'ha pogut actualitzar Matomo! Vegeu més amunt per obtenir més informació.",
+ "ConsoleUpdateNoSqlQueries": "Nota: no hi ha consultes SQL ni comandes de consola per executar.",
+ "ConsoleUpdateUnexpectedUserWarning": "Sembla que heu executat aquesta actualització amb l'usuari %1$s, mentre que els vostres fitxers Matomo són propietat de %2$s. \n\nPer assegurar que els fitxers Matomo siguin llegibles per l'usuari correcte, és possible que hàgiu d'executar l'ordre següent (o una ordre similar en funció de la configuració del vostre servidor):\n\n$ %3$s",
+ "ConvertToUtf8mb4": "Converteix la base de dades a codificació UTF8mb4",
+ "CriticalErrorDuringTheUpgradeProcess": "Error crític durant el procés d'actualització:",
+ "DatabaseUpgradeRequired": "Cal actualitzar la base de dades",
+ "DbUpgradeNotExecuted": "L'actualització de la base de dades no s'ha executat.",
+ "DisablingIncompatiblePlugins": "S'estan desactivant els connectors incompatibles: %s",
"DownloadX": "Descarrega %s",
+ "DownloadingUpdateFromX": "S'està descarregant l'actualització de %s",
+ "DryRun": "Nota: això és un assaig",
+ "DryRunEnd": "Final de l'assaig",
"EmptyDatabaseError": "La base de dades %s està buida. Heu d'editar o esborrar el fitxer de configuració del Matomo.",
"ErrorDIYHelp": "Si sou un usuari avançat i trobeu un error en l'actualització de la base de dades:",
"ErrorDIYHelp_1": "identifiqueu i corregiu l'origen de l'error (per exemple: memory_limit o max_execution_time)",
- "ErrorDIYHelp_2": "executeu les consultes restants de l'actualització que han fallat",
- "ErrorDIYHelp_3": "actualitzeu la taula `option` de la base de dades del Matomo, introduint la versió que ha fallat a l'hora d'actualitzar a version_core",
- "ErrorDIYHelp_4": "torneu a engegar l'actualització (a través del navegador o la línia de comandes) per a continuar amb les actualitzacions restants.",
- "ErrorDIYHelp_5": "informeu sobre el problema (i la solució) per tal que puguem millorar el Matomo",
- "ErrorDuringPluginsUpdates": "Hi ha hagut errors en l'actualització dels connectors",
- "ExceptionAlreadyLatestVersion": "El Matomo està actualitzat a la versió %s.",
- "ExceptionArchiveEmpty": "Arxiu buit",
+ "ErrorDIYHelp_2": "executeu les consultes restants a l'actualització que ha fallat",
+ "ErrorDIYHelp_3": "actualitzeu manualment la taula `option' a la vostra base de dades Matomo, establint el valor de version_core a la versió de l'actualització fallida",
+ "ErrorDIYHelp_4": "torneu a executar l'actualitzador (a través del navegador o de la línia de comandes) per continuar amb les actualitzacions restants",
+ "ErrorDIYHelp_5": "informeu sobre el problema (i la solució) per tal de millorar Matomo",
+ "ErrorDuringPluginsUpdates": "Error durant les actualitzacions del connector:",
+ "ExceptionAlreadyLatestVersion": "La vostra versió de Matomo %s està actualitzada.",
+ "ExceptionArchiveEmpty": "Arxiu buit.",
"ExceptionArchiveIncompatible": "Arxiu incompatible: %s",
- "ExceptionArchiveIncomplete": "L'arxiu és incomplet: manquen alguns fitxers (per exemple, %s).",
- "HelpMessageContent": "Comproveu les %1$s PMF del Matomo (en anglès) %2$s, que intenten explicar els errors més comuns a l'actualització. %3$s Pregunteu a l'administrador del sistema, podria ajudar-vos amb l'error, que sembla estar relacionat amb el servidor o la instal·lació del MySQL.",
- "HelpMessageIntroductionWhenError": "El que hi ha a sobre és l'error del nucli. Hauria d'explicar la causa, però si necessiteu més ajuda, si us plau:",
+ "ExceptionArchiveIncomplete": "L'arxiu és incomplet: manquen alguns fitxers (per exemple %s).",
+ "ExceptionDirWrongPermission": "Algunes carpetes no es poden escriure. Assegureu-vos que les carpetes següents es poden escriure i torneu-ho a provar: %s.",
+ "ExecuteDbUpgrade": "Es requereix una actualització de la base de dades. Vols executar l'actualització?",
+ "FeedbackRequest": "No dubteu a compartir les vostres idees i suggeriments amb l'equip de Matomo aquí:",
+ "HelpMessageContent": "Consulteu les FAQ de %1$s Matomo %2$s que explica els errors més comuns durant l'actualització. %3$s Pregunteu al vostre administrador del sistema; és possible que us puguin ajudar amb l'error que probablement estigui relacionat amb el vostre servidor o la configuració de MySQL.",
+ "HelpMessageIntroductionWhenError": "L'anterior és el missatge d'error bàsic. Hauria d'ajudar a explicar la causa, però si necessiteu més ajuda, si us plau:",
"HelpMessageIntroductionWhenWarning": "La actualització s'ha completat amb èxit, però hi ha hagut alguns problemes durant el procés. Si us plau, llegiu les descripcions que hi ha a sobre per a saber més detalls. Si voleu més informació:",
+ "HighTrafficPiwikServerEnableMaintenance": "Si gestioneu un servidor Matomo d'alt trànsit, us recomanem que %1$s desactiveu momentàniament el seguiment de visitants i que poseu la interfície d'usuari de Matomo en mode de manteniment%2$s.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Nota: alguns connectors no són compatibles amb Matomo %s. Els actualitzarem si hi ha una actualització al Marketplace, en cas contrari els desactivarem quan actualitzeu:",
"InstallingTheLatestVersion": "S'està instal·lant la darrera versió",
- "MajorUpdateWarning1": "Es tracta una actualització major! Tardarà més de l'habitual",
- "MajorUpdateWarning2": "Aquest avís és extremadament important per instalacion amb gran quantitat d'informació.",
- "NoteForLargePiwikInstances": "Notes importants per instalacions del Matomo amb gran quanitat d'informació",
- "PiwikHasBeenSuccessfullyUpgraded": "El Matomo s'ha actualitzat amb èxit!",
+ "LatestBetaRelease": "Darrera versió beta",
+ "LatestStableRelease": "Última versió estable",
+ "LatestXBetaRelease": "Darrera beta %s",
+ "LatestXStableRelease": "Darrera versió estable %s",
+ "ListOfSqlQueriesFYI": "FYI: aquestes són les consultes SQL i les comandes de la consola que s'executaran per actualitzar la vostra base de dades a Matomo %s",
+ "LtsSupportVersion": "Versió de suport a llarg termini",
+ "MajorUpdateWarning1": "Es tracta d'una actualització major! Trigarà més que de costum.",
+ "MajorUpdateWarning2": "El consell següent és especialment important per a instal·lacions grans.",
+ "NeedHelpUpgrading": "Necessites ajuda per actualitzar Matomo?",
+ "NeedHelpUpgradingText": "Si necessiteu assistència per actualitzar el vostre Matomo, els creadors de Matomo estan aquí per ajudar-vos a fer que l'actualització de Matomo sigui un èxit i proporcionar-vos totes les instruccions, bones pràctiques i suport permanent. %1$sContacteu amb els experts de Matomo per començar a actualitzar el vostre Matomo de manera segura.%2$s",
+ "NoteForLargePiwikInstances": "Notes importants per a grans instal·lacions de Matomo",
+ "NotificationClickToUpdatePlugins": "Feu clic aquí per actualitzar els vostres connectors ara:",
+ "NotificationClickToUpdateThemes": "Feu clic aquí per actualitzar els vostres temes ara:",
+ "NotificationSubjectAvailableCoreUpdate": "Disponible la nova versió %s de Matomo",
+ "NotificationSubjectAvailablePluginUpdate": "Actualitzacions disponibles per als vostres connectors de Matomo",
+ "PiwikHasBeenSuccessfullyUpgraded": "Matomo s'ha actualitzat correctament!",
"PiwikUpdatedSuccessfully": "El Matomo s'ha actualitzat correctament!",
- "PiwikWillBeUpgradedFromVersionXToVersionY": "La base de dades s'actualitzarà de la versió %1$s a la nova %2$s.",
+ "PiwikWillBeUpgradedFromVersionXToVersionY": "La base de dades de Matomo s'actualitzarà de la versió %1$s a la nova versió %2$s.",
+ "PostUpdateMessage": "Matomo sempre es podrà descarregar i utilitzar gratuïtament, però necessita el vostre suport continuat per créixer i millorar.",
+ "PostUpdateSupport": "Si necessiteu ajuda amb Matomo, podeu obtenir suport dels seus creadors:",
"ReadyToGo": "Preparat?",
- "TheFollowingPluginsWillBeUpgradedX": "Aquests connectors s'actualitzaran: %s.",
- "ThereIsNewVersionAvailableForUpdate": "Hi ha una nova versió del Matomo disponible.",
- "TheUpgradeProcessMayFailExecuteCommand": "Si teuniu una gran base de dades del Matomo, les actualitzacions poden tardar massa per executar-les des del navegador. En aquesta situació podeu executar les actualitzacions desde la línia de comandes: %s",
- "TheUpgradeProcessMayTakeAWhilePleaseBePatient": "El procés d'actualització pot durar una estona, tingueu paciència.",
- "UnpackingTheUpdate": "S'està desempacant l'actualització",
+ "ReceiveEmailBecauseIsSuperUser": "Rebeu aquest correu electrònic perquè sou un superusuari de Matomo a: %s",
+ "ServicesSupport": "Serveis i Suport",
+ "SkipCacheClear": "S'ha omès esborrar les memòries cau.",
+ "SkipCacheClearDesc": "Omet l'esborrament de la memòria cau abans d'actualitzar. Això només és útil si podeu assegurar-vos que les instàncies que executen aquesta ordre encara no han creat una memòria cau, i si esborrar la memòria cau per a molts comptes de Matomo es pot convertir en un coll d'ampolla.",
+ "ThankYouUpdatePiwik": "Gràcies per utilitzar Matomo i mantenir-lo actualitzat!",
+ "TheFollowingDimensionsWillBeUpgradedX": "S'actualitzaran les dimensions següents: %s.",
+ "TheFollowingPluginsWillBeUpgradedX": "S'actualitzaran els connectors següents: %s.",
+ "TheUpgradeProcessMayFailExecuteCommand": "Si teniu a Matomo una base de dades molt gran les actualitzacions poden trigar molt a executar-se al navegador. En aquesta situació podeu executar les actualitzacions des de la vostra línia de comandes: %s",
+ "TheUpgradeProcessMayTakeAWhilePleaseBePatient": "El procés d'actualització de la base de dades pot trigar una mica, tingueu paciència.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Alguns connectors que feu servir s'han actualitzat al Marketplace:",
+ "ThereIsNewVersionAvailableForUpdate": "Hi ha una nova versió de Matomo disponible per actualitzar",
+ "TheseCommandsWillBeExecuted": "Aquestes ordres de consola s'executaran:",
+ "TheseSqlQueriesWillBeExecuted": "S'executarà aquestes consultes SQL:",
+ "TriggerDatabaseConversion": "Activa la conversió de la base de dades en segon pla",
+ "UnpackingTheUpdate": "Desempaquetant l'actualització",
"UpdateAutomatically": "Actualitza automàticament",
- "UpdateHasBeenCancelledExplanation": "L'actualització en un clic del Matomo ha estat cancel·lada. Si no podeu arreglar l'error de més amunt, us recomanem que actualitzeu el Matomo manualment. %1$s Si us plau, mireu-vos la %2$sDocumentació d'actualització (en anglès)%3$s per a començar!",
- "UpdateTitle": "Actualització del Matomo",
- "UpdateSuccessTitle": "El Matomo s'ha actualitzat amb èxit!",
- "UpgradeComplete": "S'ha actualitzat amb èxit!",
- "UpgradePiwik": "Actualitza el Matomo",
- "VerifyingUnpackedFiles": "S'estan verificant els fitxers",
- "WarningMessages": "Avisos:",
- "WeAutomaticallyDeactivatedTheFollowingPlugins": "S'han desactivat automàticament els connectors següents: %s",
- "YouCanUpgradeAutomaticallyOrDownloadPackage": "Podeu actualitzar a la versió %s automàticament o baixar-vos el paquet i instal·lar-lo manualment.",
- "YourDatabaseIsOutOfDate": "La base de dades del Matomo és antiga i cal actualitzar-la abans de continuar."
+ "UpdateErrorTitle": "Error d'actualització",
+ "UpdateHasBeenCancelledExplanation": "L'actualització d'un clic de Matomo s'ha cancel·lat. Si no podeu solucionar el missatge d'error anterior, us recomanem que actualitzeu Matomo manualment. %1$s Consulteu la %2$sdocumentació d'actualització%3$s per començar!",
+ "UpdateLog": "Actualitzar el registre",
+ "UpdateSuccessTitle": "Matomo s'ha actualitzat correctament!",
+ "UpdateTitle": "Actualització",
+ "UpdateUsingHttpsFailed": "No s'ha pogut descarregar la darrera versió de Matomo mitjançant una connexió HTTPS segura a causa del següent error:",
+ "UpdateUsingHttpsFailedHelp": "Per què ha fallat? La descàrrega de la darrera versió de Matomo (a través d'una connexió HTTPS segura) pot fallar per diversos motius, per exemple a causa d'un error de xarxa, una velocitat de xarxa lenta o una configuració incorrecta del sistema. Tingueu en compte que també podria significar que el vostre servidor és l'objectiu d'un atac MITM i algú està intentant substituir l'actualització per una versió maliciosa de Matomo.",
+ "UpdateUsingHttpsFailedHelpWhatToDo": "Es recomana tornar a provar la descàrrega mitjançant la connexió HTTPS segura, ja que evita atacs MITM.",
+ "Updating": "Actualitzant",
+ "UpdatingPluginXToVersionY": "S'està actualitzant el connector %1$s a la versió %2$s",
+ "UpgradeComplete": "Actualització llesta!",
+ "UpgradePiwik": "Actualitza Matomo",
+ "UsingHttp": "utilitzant la connexió HTTP no segura",
+ "UsingHttps": "utilitzant la connexió HTTPS segura (recomanat)",
+ "Utf8mb4ConversionHelp": "La vostra base de dades no està utilitzant el conjunt de caràcters utf8mb4. Això fa que sigui impossible emmagatzemar caràcters de 4 bytes, com ara emojis, caràcters menys comuns de llengües asiàtiques, diverses escriptures històriques o símbols matemàtics. Actualment es substitueixen per %1$s.<br><br>La vostra base de dades admet el conjunt de caràcters utf8mb4 i seria possible convertir-lo.<br><br>Si podeu executar les ordres de la consola, recomanem que utilitzeu aquesta ordre: %2$s<br><br>Com alternativa, podeu activar la conversió aquí. Aleshores s'activarà automàticament com una tasca programada en segon pla.<br><br>Atenció: la conversió de la base de dades pot trigar fins a un parell d'hores depenent de la mida de la base de dades. Com que el seguiment pot no funcionar durant aquest procés, no us recomanem que utilitzeu l'activador per a instàncies més grans.<br><br>Podeu trobar més informació sobre aquest tema en aquestes %3$sFAQ%4$s.",
+ "VerifyingUnpackedFiles": "Verificació dels fitxers descomprimits",
+ "ViewVersionChangelog": "Consulteu el registre de canvis d'aquesta versió:",
+ "WarningMessages": "Missatges d'advertència:",
+ "WeAutomaticallyDeactivatedTheFollowingPlugins": "Hem desactivat automàticament els connectors següents: %s",
+ "YouCanUpgradeAutomaticallyOrDownloadPackage": "Podeu actualitzar a la versió %s automàticament o descarregar el paquet i instal·lar-lo manualment:",
+ "YouMustDownloadPackageOrFixPermissions": "Matomo no pot sobreescriure la vostra instal·lació actual. Podeu arreglar els permisos del directori/fitxer o descarregar el paquet i instal·lar la versió %s manualment:",
+ "YourDatabaseIsOutOfDate": "La vostra base de dades Matomo és antiga i s'ha d'actualitzar abans de poder continuar."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreUpdater/lang/de.json b/plugins/CoreUpdater/lang/de.json
index 694908b8d6..d65deb34e1 100644
--- a/plugins/CoreUpdater/lang/de.json
+++ b/plugins/CoreUpdater/lang/de.json
@@ -31,6 +31,7 @@
"ExceptionArchiveEmpty": "Leeres Archiv.",
"ExceptionArchiveIncompatible": "Archiv inkompatibel: %s",
"ExceptionArchiveIncomplete": "Das Archiv ist nicht komplett. Einige Dateien fehlen (z.B. %s).",
+ "ExceptionDirWrongPermission": "Einige Ordner sind nicht beschreibbar. Bitte stelle sicher, dass die folgenden Ordner beschreibbar sind und versuche es erneut: %s.",
"ExecuteDbUpgrade": "Eine Datenbankaktualisierung ist nötig. Update ausführen?",
"FeedbackRequest": "Gerne können Sie dem Matomo Team Ihre Ideen und Vorschläge hier mitteilen:",
"HelpMessageContent": "Lesen Sie die %1$sMatomo-FAQ%2$s. Dort werden die meisten Fehler, die während einer Aktualisierung auftreten können, erklärt. %3$sFragen Sie Ihren Systemadministrator - dieser kann Ihnen mit diesem Fehler helfen, da er am wahrscheinlichsten mit Ihrem Server oder dem MySQL-Server zusammenhängt.",
diff --git a/plugins/CoreUpdater/lang/fr.json b/plugins/CoreUpdater/lang/fr.json
index e16179c2a7..3de73dc3c5 100644
--- a/plugins/CoreUpdater/lang/fr.json
+++ b/plugins/CoreUpdater/lang/fr.json
@@ -1,7 +1,7 @@
{
"CoreUpdater": {
"AlreadyUpToDate": "Tout est déjà à jour.",
- "CheckingForPluginUpdates": "Recherche de nouvelles mises à jour de plug-in",
+ "CheckingForPluginUpdates": "Recherche de nouvelles mises à jour d'extensions",
"ClickHereToViewSqlQueries": "Cliquez ici pour afficher et copier la liste des requêtes SQL et des commandes de console qui seront exécutées",
"CloudHosting": "Hébergement Cloud",
"ConsoleCommandDescription": "Déclenche les mises à jour. Utilisez ceci lorsque un des fichiers de Matomo ou des composants a été mis à jour. Ajoutez --yes pour mettre à jour sans confirmation.",
@@ -14,13 +14,13 @@
"CriticalErrorDuringTheUpgradeProcess": "Erreur critique pendant le processus de mise à jour :",
"DatabaseUpgradeRequired": "Mise à niveau de la base de données requise",
"DbUpgradeNotExecuted": "Mise à jour de la base de données non exécutée.",
- "DisablingIncompatiblePlugins": "Désactivation des plugins incompatibles : %s",
+ "DisablingIncompatiblePlugins": "Désactivation des extensions incompatibles : %s",
"DownloadX": "Télécharger %s",
"DownloadingUpdateFromX": "Téléchargement de la mise à jour depuis %s",
"DryRun": "Note : ceci est un essai",
"DryRunEnd": "Fin de l'essai",
"EmptyDatabaseError": "La base de données %s est vide. Vous devez éditer ou supprimer votre fichier de configuration Matomo.",
- "ErrorDIYHelp": "Si vous êtes un utilisateur avancé et que vous rencontrez une erreur lors de la mise à jour de la base de données :",
+ "ErrorDIYHelp": "Si vous êtes un utilisateur avancé et que vous rencontrez une erreur lors de la mise à jour de la base de données :",
"ErrorDIYHelp_1": "identifiez la source exacte du problème (ex, memory_limit ou max_execution_time)",
"ErrorDIYHelp_2": "exécutez les requêtes restantes qui ont échoué",
"ErrorDIYHelp_3": "mettez à jour manuellement la table `option` de votre base de données Matomo, en spécifiant la valeur de version_core à la version de celle de l'échec de la mise à jour",
diff --git a/plugins/CoreUpdater/lang/it.json b/plugins/CoreUpdater/lang/it.json
index 5466495f9a..afe24076e6 100644
--- a/plugins/CoreUpdater/lang/it.json
+++ b/plugins/CoreUpdater/lang/it.json
@@ -1,7 +1,7 @@
{
"CoreUpdater": {
"AlreadyUpToDate": "Tutto è già aggiornato.",
- "CheckingForPluginUpdates": "Controllo nuovi aggiornamenti del plugin",
+ "CheckingForPluginUpdates": "Controllo nuovi aggiornamenti dei plugin",
"ClickHereToViewSqlQueries": "Clicca qui per vedere e copiare l'elenco delle query SQL e i comandi di console che verranno eseguiti",
"CloudHosting": "Cloud hosting",
"ConsoleCommandDescription": "Trigger aggiornamenti. Usalo dopo il core di Matomo o eventuali file di plugin sono stati aggiornati. Aggiungi --yes per l'aggiornamento senza conferma.",
@@ -61,7 +61,7 @@
"PostUpdateSupport": "Se hai bisogno di aiuto per utilizzare Matomo, puoi averlo dai suoi creatori:",
"ReadyToGo": "Pronto a partire?",
"ReceiveEmailBecauseIsSuperUser": "Hai ricevuto questa email perché sei un Super User di Matomo su: %s",
- "ServicesSupport": "Servizi &amp; Supporto",
+ "ServicesSupport": "Servizi e Supporto",
"SkipCacheClear": "Salta la cancellazione delle cache.",
"SkipCacheClearDesc": "Salta la cancellazione delle cache prima dell'aggiornamento. Ciò è utile solo se puoi assicurarti che le istanze che eseguono questo comando non abbiano ancora creato una cache e se svuotare la cache per molti account Matomo non possa diventare un collo di bottiglia.",
"ThankYouUpdatePiwik": "Grazie per l'utilizzo di Matomo e per averlo aggiornato!",
diff --git a/plugins/CoreUpdater/lang/nb.json b/plugins/CoreUpdater/lang/nb.json
index b3f1205794..8a2dedf795 100644
--- a/plugins/CoreUpdater/lang/nb.json
+++ b/plugins/CoreUpdater/lang/nb.json
@@ -24,6 +24,7 @@
"ExceptionArchiveEmpty": "Tomt arkiv.",
"ExceptionArchiveIncompatible": "Inkompatibelt arkiv: %s",
"ExceptionArchiveIncomplete": "Arkivet er ikke komplett: noen filer mangler (f.eks. %s).",
+ "ExceptionDirWrongPermission": "Noen mapper er skrivebeskyttet. Forsikre deg om at følgende mapper kan skrives til og prøv igjen: %s.",
"FeedbackRequest": "Del gjerne dine ideer og forslag med Matomo-laget her:",
"HelpMessageContent": "Sjekk %1$s Matomo FAQ-en %2$s som prøver å forklare de mest vanlige feilene under oppdatering. %3$s Spør din systemadministrator – vedkommende kan kanskje hjelpe deg med feilen som antakelig har sammenheng med din tjener eller MySQL-installasjon.",
"HelpMessageIntroductionWhenError": "Over vises feilmeldingen. Den bør hjelpe deg med å forklare årsaken, men hvis du trenger mer hjelp, vennligst:",
@@ -58,6 +59,8 @@
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Databaseoppgraderingen kan ta en stund, vennligst vær litt tålmodig.",
"ThereIsNewPluginVersionAvailableForUpdate": "Noen tillegg du bruker har blitt oppdatert på markedsplassen:",
"ThereIsNewVersionAvailableForUpdate": "Du kan oppdatere til en ny versjon av Matomo",
+ "TheseCommandsWillBeExecuted": "Disse konsollkommandoene kan kjøres:",
+ "TheseSqlQueriesWillBeExecuted": "Disse SQL-spørringene vil bli kjørt:",
"TriggerDatabaseConversion": "Utløs databasekonvertering i bakgrunnen",
"UnpackingTheUpdate": "Pakker ut oppdateringen",
"UpdateAutomatically": "Oppdater automatisk",
diff --git a/plugins/CoreUpdater/lang/pt-br.json b/plugins/CoreUpdater/lang/pt-br.json
index 1acc8fd982..299b4b2b14 100644
--- a/plugins/CoreUpdater/lang/pt-br.json
+++ b/plugins/CoreUpdater/lang/pt-br.json
@@ -31,6 +31,7 @@
"ExceptionArchiveEmpty": "Arquivo vazio.",
"ExceptionArchiveIncompatible": "Arquivo incompatível: %s",
"ExceptionArchiveIncomplete": "Arquivo está incompleto: alguns arquivos estão faltando (ex. %s).",
+ "ExceptionDirWrongPermission": "Algumas pastas não são graváveis. Certifique-se de que as seguintes pastas sejam graváveis e tente novamente: %s.",
"ExecuteDbUpgrade": "Uma atualização da base de dados é requerida. Executar atualização?",
"FeedbackRequest": "Sinta-se livre para compartilhar suas idéias e sugestões com a Equipe Matomo aqui:",
"HelpMessageContent": "Verifique o %1$s Matomo FAQ %2$s que explica os erros mais comuns durante a atualização. %3$s Pergunte ao seu administrador do sistema - Ele pode ser capaz de lhe ajudar com o erro que muito provavelmente é relacionado com o seu servidor ou o setup do MySQL.",
diff --git a/plugins/CoreUpdater/lang/sq.json b/plugins/CoreUpdater/lang/sq.json
index 6218c43c65..12ac092548 100644
--- a/plugins/CoreUpdater/lang/sq.json
+++ b/plugins/CoreUpdater/lang/sq.json
@@ -1,14 +1,25 @@
{
"CoreUpdater": {
+ "AlreadyUpToDate": "Gjithçka është e përditësuar.",
"CheckingForPluginUpdates": "Po kontrollohet për përditësime të reja shtojce",
"ClickHereToViewSqlQueries": "Klikoni këtu që të shihni dhe kopjoni listën e kërkesave SQL dhe urdhrave të konsolës që do të ekzekutohen",
+ "CloudHosting": "Strehim në re",
+ "ConsoleCommandDescription": "Përmirësime shkaktuesish. Përdorini pasi të jenë përditësuar kartela të bazës së Matomo-s ose të çfarëdo shtojce. Shtojini --yes që përmirësimi të kryhet pa kërkuar ripohim.",
+ "ConsoleParameterDescription": "Kryeje drejtpërsëdrejti përditësimin, pa kërkuar ripohim",
+ "ConsoleStartingDbUpgrade": "Po niset procesi i përmirësimit të bazës së të dhënave. Kjo mund të zgjasë ca, ndaj bëni durim.",
+ "ConsoleUpdateFailure": "Matomo s’u përditësua dot! Për më tepër të dhëna, shihni më sipër.",
+ "ConsoleUpdateNoSqlQueries": "Shënim: S’ka kërkesa SQL apo urdhra konsole për t’u ekzekutuar.",
+ "ConsoleUpdateUnexpectedUserWarning": "Duket se e kryet këtë përditësim me përdoruesin %1$s, ndërkohë që kartelat tuaja Matomo janë pronë e %2$s. \n\nPër të siguruar që kartelat Matomo të jenë të lexueshme nga përdoruesi i saktë, mund t’ju duhet të xhironi urdhrin vijues (ose një urdhër të ngjashëm, në varësi të formësimit të shërbyesit tuaj):\n\n$ %3$s",
+ "ConvertToUtf8mb4": "Shndërroje bazën e të dhënave në kodim UTF8mb4",
"CriticalErrorDuringTheUpgradeProcess": "Gabim Kritik gjatë procesit të përditësimit:",
"DatabaseUpgradeRequired": "Lypset Përmirësim i Bazës së të Dhënave",
+ "DbUpgradeNotExecuted": "Përmirësimi i bazës së të dhënave nuk u krye.",
"DisablingIncompatiblePlugins": "Po çaktivizohen shtojca të papërputhshme: %s",
- "DownloadingUpdateFromX": "Po shkarkohet përditësimi prej %s",
"DownloadX": "Shkarko %s",
- "UpdateLog": "Regjistër përditësimesh",
- "EmptyDatabaseError": "Baza e të dhënave %s është e zbrazët. Kartelën tuaj të formësimit të Matomo-s duhet ta përpunoni ose ta hiqni.",
+ "DownloadingUpdateFromX": "Po shkarkohet përditësim prej %s",
+ "DryRun": "Shënim: kjo është një Dry Run",
+ "DryRunEnd": "Fund i Dry Run-it",
+ "EmptyDatabaseError": "Baza e të dhënave %s është e zbrazët. Kartelën tuaj të formësimit të Matomo-s duhet ta përpunoni, ose ta hiqni.",
"ErrorDIYHelp": "Nëse jeni përdorues i përparuar dhe hasni një gabim në përditësimin e bazës së të dhënave:",
"ErrorDIYHelp_1": "identifikoni dhe ndreqni burimin e problemit (p.sh., memory_limit ose max_execution_time)",
"ErrorDIYHelp_2": "plotësoni kërkesat e mbetura te përditësimi që dështoi",
@@ -19,82 +30,74 @@
"ExceptionAlreadyLatestVersion": "Versioni juaj %s i Matomo-s është më i riu.",
"ExceptionArchiveEmpty": "Arkiv i zbrazët.",
"ExceptionArchiveIncompatible": "Arkiv i papërputhshëm: %s",
- "ExceptionArchiveIncomplete": "Arkivi nuk është e plotë: mungojnë disa kartela (p.sh., %s).",
+ "ExceptionArchiveIncomplete": "Arkivi s’është i plotë: mungojnë disa kartela (p.sh., %s).",
+ "ExceptionDirWrongPermission": "Disa dosje s’janë të shkrueshme. Ju lutemi, sigurohuni se dosjet vijuesve janë të shkrueshme dhe riprovoni: %s.",
+ "ExecuteDbUpgrade": "Lypset një përmirësim i bazës së të dhënave. Të kryhet përditësimi?",
"FeedbackRequest": "Mos ngurroni të ndani me Ekipin e Matomo-s idetë dhe sugjerimet tuaja, këtu:",
- "HelpMessageContent": "Hidhini një sy %1$s PBR-ve të Matomos %2$s që shpjegojnë gabimet më të rëndomta gjatë përditësimesh. %3$s Pyesni përgjegjësin e sistemit tuaj - ai mund të jetë në gjendje t’ju ndihmojë për gabimin, i cili ka shumë të ngjarë të ketë lidhje me rregullimet e shërbyesit tuaj ose ato të MySQL-së.",
+ "HelpMessageContent": "Hidhini një sy %1$s PBR për Matomo-n %2$s që shpjegojnë gabimet më të rëndomta gjatë përditësimesh. %3$s Pyesni përgjegjësin e sistemit tuaj - ai mund të jetë në gjendje t’ju ndihmojë për gabimin, i cili ka shumë të ngjarë të ketë lidhje me rregullimet e shërbyesit tuaj, ose ato të MySQL-së tuaj.",
"HelpMessageIntroductionWhenError": "Sa më sipër, është thelbi i mesazhit të gabimit. Do të ndihmonte të shpjegohej shkaku, por nëse keni nevojë për ndihmë të mëtejshme, ju lutemi:",
- "HelpMessageIntroductionWhenWarning": "Përditësimi u plotësua me sukses, sidoqoftë pati ca kleçka gjatë procesit. Ju lutemi, lexoni përshkrimet më sipër për hollësi. Për më tepër ndihmë:",
+ "HelpMessageIntroductionWhenWarning": "Përditësimi u plotësua me sukses, sidoqoftë pati ca kleçka gjatë procesit. Ju lutemi, për hollësi, lexoni përshkrimet më sipër. Për më tepër ndihmë:",
"HighTrafficPiwikServerEnableMaintenance": "Nëse administroni një shërbyes Matomo me trafik të madh, këshillojmë ta %1$sçaktivizoni përkohësisht Ndjekjen e vizitorëve dhe ta kaloni Ndërfaqen e Përdoruesit të Matomo-s nën mënyrën mirëmbajtje%2$s.",
"IncompatbilePluginsWillBeDisabledInfo": "Shënim: disa shtojca janë të papërputhshme me Matomo %s. Do t’i përditësojmë, nëse ka një përditësim të gatshëm te Marketplace, përndryshe do t’i çaktivizojmë, kur të bëni një përmirësim:",
- "InstallingTheLatestVersion": "Po instalohet versioni më i fundit",
+ "InstallingTheLatestVersion": "Po instalohet versioni më i ri",
"LatestBetaRelease": "Hedhja beta më e re në qarkullim",
"LatestStableRelease": "Hedhja e qëndrueshme më e re në qarkullim",
- "LatestXStableRelease": "%s më e ri e qëndrueshme",
- "LatestXBetaRelease": "%s më e re beta",
+ "LatestXBetaRelease": "%s më i ri beta",
+ "LatestXStableRelease": "%s më i ri i qëndrueshëm",
+ "ListOfSqlQueriesFYI": "FYI: këto janë kërkesat SQL dhe urdhrat e konsolës që do të ekzekutohen për të përmirësuar bazën tuaj të të dhënave te Matomo %s",
"LtsSupportVersion": "Version me Mbulim Afatgjatë",
- "ListOfSqlQueriesFYI": "FYI: këto janë kërkesat SQL fdhe urdhrat e konsolës që do të ekzekutohen për të përmirësuar bazën tuaj të të dhënave te Matomo %s",
- "TheseSqlQueriesWillBeExecuted": "Do të ekzekutohen këto kërkesa SQL:",
- "TheseCommandsWillBeExecuted": "Do të xhirohen këto urdhra konsole:",
"MajorUpdateWarning1": "Ky është një përditësim i rëndësishëm! Do të hajë më tepër kohë se zakonisht.",
"MajorUpdateWarning2": "Këshilla vijuese është veçanërisht e rëndësishme për instalime të mëdha.",
"NeedHelpUpgrading": "Ju duhet ndihmë në përmirësimin e Matomo-s?",
"NeedHelpUpgradingText": "Nëse ju duhet ndihmë në përmirësimin e Matomo-s tuaj, krijuesit e Matomo-s janë këtu për t’ju ndihmuar që përmirësimi i tij të jetë një sukses dhe ju furnizojnë krejt udhëzimet, praktikat më të mira dhe asistencë të vazhdueshme. %1$sLidhuni me ekspertët e Matomo-s që t’ia filloni ta përmirësoni pa rreziqe Matomo-n.%2$s",
"NoteForLargePiwikInstances": "Shënime të rëndësishme për instalime Matomo me shumë ngarkesë",
- "NotificationClickToUpdatePlugins": "Klikoni këtu që të përditësoni shtojcat tuaja tani:",
+ "NotificationClickToUpdatePlugins": "Klikoni këtu që të përditësohen shtojcat tuaja tani:",
"NotificationClickToUpdateThemes": "Klikoni këtu që të përditësoni temat tuaja tani:",
- "NotificationSubjectAvailableCoreUpdate": "Është gati Matomo %s i ri",
+ "NotificationSubjectAvailableCoreUpdate": "Është gati Matomo i ri %s",
"NotificationSubjectAvailablePluginUpdate": "Ka gati përditësime për shtojcat tuaja Matomo",
"PiwikHasBeenSuccessfullyUpgraded": "Matomo u përmirësua me sukses!",
"PiwikUpdatedSuccessfully": "Matomo u përditësua me sukses!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Baza e të dhënave për Matomo-n do të përmirësohet prej versionit %1$s te versioni i ri %2$s.",
+ "PostUpdateMessage": "Shkarkimi dhe përdorimi i Matomo-s do të jenë gjithnjë falas, por i duhet përkrahja juaj e vazhdueshme për t’u rritur dhe përmirësuar.",
+ "PostUpdateSupport": "Nëse ju duhet ndihmë mbi përdorimin e Matomo-s, mund të merrni asistencë nga krijuesit e tij:",
"ReadyToGo": "Gati për t’ia filluar?",
- "TheFollowingPluginsWillBeUpgradedX": "Do të përditësohen shtojcat vijuese: %s.",
+ "ReceiveEmailBecauseIsSuperUser": "E morët këtë email ngaqë jeni një Superpërdorues Matomo te: %s",
+ "ServicesSupport": "Shërbime &amp; Asistencë",
+ "SkipCacheClear": "Po anashkalohet spastrimi i fshehtinave.",
+ "SkipCacheClearDesc": "Anashkalon spastrimin e fshehtinave, para përditësimit. Kjo është e dobishme vetëm nëse mund të garantoni se instancat që xhirojnë këtë urdhër s’kanë krijuar ende ndonjë fshehtinë dhe nëse spastrimi i fshehtinës për shumë llogari Matomo mund të përbëjë problem.",
+ "ThankYouUpdatePiwik": "Faleminderit për përdorimin dhe mbajtjen e Matomo-s të përditësuar!",
"TheFollowingDimensionsWillBeUpgradedX": "Do të përditësohen përmasat vijuese: %s.",
- "ThereIsNewPluginVersionAvailableForUpdate": "Disa nga shtojcat që keni, janë përditësuar te Marketplace:",
- "ThereIsNewVersionAvailableForUpdate": "Mund të kihet një version i ri, i përmirësuar, i Matomo-s",
+ "TheFollowingPluginsWillBeUpgradedX": "Do të përditësohen shtojcat vijuese: %s.",
"TheUpgradeProcessMayFailExecuteCommand": "Nëse keni një bazë të dhënash Matomo të madhe, përditësimet mund të zgjasin shumë në shfletues. Në të tilla raste, mund t’i bëni përditësimet që nga rresht urdhrash: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Procesi i përditësimit të bazës së të dhënave mund të zgjasë ca, ndaj bëni durim.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Disa nga shtojcat që keni, janë përditësuar te Marketplace:",
+ "ThereIsNewVersionAvailableForUpdate": "Ka gati për ta përditësuar një version të ri të Matomo-s",
+ "TheseCommandsWillBeExecuted": "Do të xhirohen këto urdhra konsole:",
+ "TheseSqlQueriesWillBeExecuted": "Do të ekzekutohen këto kërkesa SQL:",
+ "TriggerDatabaseConversion": "Shkakto shndërrim baze të dhënash në prapaskenë",
"UnpackingTheUpdate": "Po shpaketohet përditësimi",
"UpdateAutomatically": "Përmirësoje Vetvetiu",
- "UpdateHasBeenCancelledExplanation": "Përditësimi Matomo Me Një Klik u anulua. Nëse s’ndreqni dot gabimin me mesazhin e mësipërm, këshillohet ta përditësoni Matomo-n dorazi. %1$s Ju lutemi, për t’ia filluar, shihni %2$sdokumentimin e Përditësimeve%3$s!",
- "UpdateTitle": "Përditësim",
- "UpdatingPluginXToVersionY": "Po përditësohet shtojca %1$s me versionin %2$s",
- "UpdateSuccessTitle": "Matomo u përmirësua me sukses!",
"UpdateErrorTitle": "Gabim në përditësim",
- "ThankYouUpdatePiwik": "Faleminderit për përdorimin dhe mbajtjen e Matomo-s të përditësuar!",
- "PostUpdateMessage": "Shkarkimi dhe përdorimi i Matomo-s do të jenë gjithnjë të lirë, por i duhet përkrahja juaj e vazhdueshme për t’u rritur dhe përmirësuar.",
- "PostUpdateSupport": "Nëse ju duhet ndihmë mbi përdorimin e Matomo-s, mund të merrni asistencë nga krijuesit e tij:",
- "ServicesSupport": "Shërbime & Asistencë",
- "CloudHosting": "Strehim në re",
- "Updating": "Përditësim",
+ "UpdateHasBeenCancelledExplanation": "Përditësimi Matomo Me Një Klikim u anulua. Nëse s’ndreqni dot gabimin me mesazhin e mësipërm, këshillohet ta përditësoni Matomo-n dorazi. %1$s Ju lutemi, për t’ia filluar, shihni %2$sdokumentimin e Përditësimeve%3$s!",
+ "UpdateLog": "Regjistër përditësimesh",
+ "UpdateSuccessTitle": "Matomo u përmirësua me sukses!",
+ "UpdateTitle": "Përditësim",
"UpdateUsingHttpsFailed": "Shkarkimi i versionit më të ri të Matomo-s përmes një lidhje të sigurt HTTPS nuk pati sukses, për shkak të gabimit vijues:",
- "UpdateUsingHttpsFailedHelp": "Pse dështoi? Shkarkimi i versionit më të ri të Matomo-s (përmes një lidhjeje HTTPS të sigurt) mund të dështojë për shkak të një numri arsyesh, për shembull, për shkak të një gabimi rrjeti, shpejtësie të ulët në rrjet ose formësim të gabuar sistemi. Mbani parasysh që kjo mund të dojë të thotë edhe se shërbyesi juaj është objektiv i një sulmi MITM dhe se dikush po përpiqet të zëvendësojë përditësimin me një version dashakeq të Matomo-s.",
+ "UpdateUsingHttpsFailedHelp": "Pse dështoi? Shkarkimi i versionit më të ri të Matomo-s (përmes një lidhjeje HTTPS të sigurt) mund të dështojë për shkak të një numri arsyesh, për shembull, për shkak të një gabimi rrjeti, shpejtësie të ulët në rrjet, ose formësim të gabuar sistemi. Mbani parasysh që kjo mund të dojë të thotë edhe se shërbyesi juaj është objektiv i një sulmi MITM dhe se dikush po përpiqet të zëvendësojë përditësimin me një version dashakeq të Matomo-s.",
"UpdateUsingHttpsFailedHelpWhatToDo": "Këshillohet të riprovohet shkarkimi duke përdorur lidhje të sigurt HTTPS, ngaqë ajo i parandalon sulmet MITM.",
- "UsingHttps": "duke përdorur lidhje HTTPS të sigurt (e këshillueshme)",
- "UsingHttp": "duke përdorur lidhje HTTPS jo të sigurt",
+ "Updating": "Përditësim",
+ "UpdatingPluginXToVersionY": "Po përditësohet shtojca %1$s me versionin %2$s",
"UpgradeComplete": "Përmirësim i plotësuar!",
"UpgradePiwik": "Përmirësojeni Matomo-n",
- "ConsoleStartingDbUpgrade": "Po niset procesi i përmirësimit të bazës së të dhënave. Kjo mund të zgjasë ca, ndaj bëni durim.",
- "DbUpgradeNotExecuted": "Përmirësimi i bazës së të dhënave nuk u krye.",
- "ConsoleUpdateUnexpectedUserWarning": "Duket se e kryet këtë përditësim me përdoruesin %1$s, ndërkohë që kartelat tuaja Matomo janë pronë e %2$s. \n\nPër të siguruar që kartelat Matomo të jenë të lexueshme nga përdoruesi i saktë, mund t’ju duhet të xhironi urdhrin vijues (ose një urdhër të ngjashëm, në varësi të formësimit të shërbyesit tuaj):\n\n$ %3$s",
- "ConsoleUpdateFailure": "Matomo s’u përditësua dot! Për më tepër të dhëna, shihni më sipër.",
- "ConsoleUpdateNoSqlQueries": "Shënim: S’ka kërkesa SQL apo urdhra konsole për t’u ekzekutuar.",
- "AlreadyUpToDate": "Gjithçka është e përditësuar.",
- "ExecuteDbUpgrade": "Lypset një përmirësim i bazës së të dhënave. Të kryhet përditësimi?",
- "DryRun": "Shënim: kjo është një Dry Run",
- "DryRunEnd": "Fund i Dry Run-it",
- "ConsoleCommandDescription": "Përmirësime shkaktuesish. Përdorini pasi të jenë përditësuar kartela të bazës së Matomo-s ose të çfarëdo shtojce. Shtojini --yes që përmirësimi të kryhet pa kërkuar ripohim.",
- "ConsoleParameterDescription": "Kryeje drejtpërsëdrejti përditësimin, pa kërkuar ripohim",
+ "UsingHttp": "duke përdorur lidhje HTTP jo të sigurt",
+ "UsingHttps": "duke përdorur lidhje HTTPS të sigurt (e këshillueshme)",
+ "Utf8mb4ConversionHelp": "Baza juaj e të dhënave aktualisht nuk përdor kodim utf8mb4. Kjo e bën të pamundur depozitimin e shenjave 4-bajtshe, bie fjala, emotikone, shenja më pak të rëndomta gjuhësh aziatikes, skripte të ndryshëm historikë, apo simbole matematike. Këto aktualisht zëvendësohen me %1$s.<br><br>Baza juaj e të dhënave e mbulon kodimin utf8mb4 dhe do të mund të shndërrohej.<br><br>Nëse jeni në gjendje të xhironi urdhra konsole, rekomandojmë të përdorni këtë urdhër: %2$s<br><br>Si rrugë tjetër, mund të aktivizonit këtu shndërrimin. Në rast të tillë, do të shkaktohej automatikisht në prapaskenë, si punë e planifikuar.<br><br>Kujdes: Shndërrimi i bazës së të dhënave mund të dojë deri nja dy orë, varet nga madhësia e bazës së të dhënave. Ngaqë gjatë këtij procesi ndjekja mund të mos funksionojë, nuk rekomandojmë të përdoret vënia në punë për instanca të mëdha.<br><br>Më tepër informacion rreth këtij subjekti mund të gjeni te %3$sPBR%4$s.",
"VerifyingUnpackedFiles": "Po verifikohen kartelat e shpaketuara",
- "WarningMessages": "Mesazhe sinjalizimi:",
+ "ViewVersionChangelog": "Shihni regjistër ndryshimesh për këtë version:",
+ "WarningMessages": "Mesazhe sinjalizimesh:",
"WeAutomaticallyDeactivatedTheFollowingPlugins": "Çaktivizuam automatikisht shtojcat vijuese: %s",
"YouCanUpgradeAutomaticallyOrDownloadPackage": "Mund ta përmirësoni automatikisht me versionin %s, ose të shkarkoni paketën dhe ta instaloni atë dorazi:",
- "YouMustDownloadPackageOrFixPermissions": "Matomo s’është në gjendje të mbishkruajë instalimin tuaj të tanishëm. Mundeni ose të ndreqni lejet mbi drejtorira\/kartela, ose të shkarkoni paketën dhe instaloni versionin %s dorazi:",
- "YourDatabaseIsOutOfDate": "Baza juaj e të dhënave për Matomo-n është e vjetruar, dhe duhet përmirësuar përpara se të mund të vazhdoni.",
- "ViewVersionChangelog": "Shihni regjistër ndryshimesh për këtë version:",
- "ReceiveEmailBecauseIsSuperUser": "E morët këtë email ngaqë jeni një Superpërdorues Matomo te: %s",
- "ConvertToUtf8mb4": "Shndërroje bazën e të dhënave në kodim UTF8mb4",
- "TriggerDatabaseConversion": "Shkakto shndërrim baze të dhënash në prapaskenë",
- "Utf8mb4ConversionHelp": "Baza juaj e të dhënave aktualisht nuk përdor kodim utf8mb4. Kjo e bën të pamundur depozitimin e shenjave 4-bajtshe, bie fjala, emotikone, shenja më pak të rëndomta gjuhës aziatikes, skripte të ndryshëm historikë apo simbole matematike. Këto aktualisht zëvendësohen me %1$s.<br \/><br \/>Baza juaj e të dhënave e mbulon kodimin utf8mb4 dhe do të mund të shndërrohej.<br \/><br \/>Nëse jeni në gjendje të xhironi urdhra konsole, rekomandojmë të përdorni këtë urdhër: %2$s<br \/><br \/>Si rrugë tjetër, mund të aktivizonit këtu shndërrimin. Në rast të tillë, do të shkaktohej në prapaskenë si punë e planifikuar.<br \/><br \/>Kujdes: Shndërrimi i bazës së të dhënave mund të dojë nja dy orë, varet nga madhësia e bazës së të dhënave. Ngaqë gjatë këtij procesi ndjekja mund të mos funksionojë, nuk rekomandojmë të përdoret vënia në punë për instanca të mëdha.<br \/><br \/>Më tepër informacion rreth këtij subjekti mund të gjeni te %3$sPBR%4$s."
+ "YouMustDownloadPackageOrFixPermissions": "Matomo s’është në gjendje të mbishkruajë instalimin tuaj të tanishëm. Mundeni ose të ndreqni lejet mbi drejtori/kartela, ose të shkarkoni paketën dhe instaloni versionin %s dorazi:",
+ "YourDatabaseIsOutOfDate": "Baza juaj e të dhënave për Matomo-n është e vjetruar dhe duhet përmirësuar, përpara se të mund të vazhdoni."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreUpdater/lang/tl.json b/plugins/CoreUpdater/lang/tl.json
index 66bbf337b3..b92b0a0799 100644
--- a/plugins/CoreUpdater/lang/tl.json
+++ b/plugins/CoreUpdater/lang/tl.json
@@ -1,10 +1,11 @@
{
"CoreUpdater": {
+ "CheckingForPluginUpdates": "Sinusuri ang mga bagong update para sa plugin",
"CriticalErrorDuringTheUpgradeProcess": "Kritikal Error habang ginagawa ang pag-uupdate:",
"DatabaseUpgradeRequired": "Ang pag upgrade ng database ay nangangailangan",
"DisablingIncompatiblePlugins": "Hindi pinapagana ang mga hindi tugmang plugins: %s",
- "DownloadingUpdateFromX": "Dina-download ang update mula sa %s",
"DownloadX": "Download %s",
+ "DownloadingUpdateFromX": "Dina-download ang update mula sa %s",
"EmptyDatabaseError": "Ang database %s ay walang laman. Kelangan mong i-edit o tanggalin ang iyong Matomo configuration file.",
"ErrorDIYHelp": "Kung ikaw ay isang advance na user at nakatagpo ng isang error sa pag-uupgrade ng database:",
"ErrorDIYHelp_1": "kilalanin at i-tama ang mga pinagmulan ng problema(hal. memory_limit o max_execution time)",
@@ -34,17 +35,17 @@
"PiwikUpdatedSuccessfully": "Matagumpay na na-update Matomo!",
"PiwikWillBeUpgradedFromVersionXToVersionY": "Ang Matomo database ay maa-upgrade mula sa bersyon %1$s sa bagong bersyon %2$s.",
"ReadyToGo": "Handa nang umalis?",
- "TheFollowingPluginsWillBeUpgradedX": "Ang mga sumusunod na plug-in ay iuupdate: %s",
"TheFollowingDimensionsWillBeUpgradedX": "Ang sumusunod na dimensyon ay i-uupdate: %s",
- "ThereIsNewPluginVersionAvailableForUpdate": "Ang ilang mga plugin na iyong ginamit ay na-update sa Marketplace.",
- "ThereIsNewVersionAvailableForUpdate": "Mayroong bagong bersyon ng Matomo na available para sa pag-update",
+ "TheFollowingPluginsWillBeUpgradedX": "Ang mga sumusunod na plug-in ay iuupdate: %s",
"TheUpgradeProcessMayFailExecuteCommand": "Kung mayroon kang isang malaking Matomo database ang pag-uupdate ay maaring maging matagal sa browser. Sa ganitong sitwasyon maari kang gumamit ng command line upang makapag update: %s",
"TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Ang proseso ng pag-upgrade ng database ay maaaring matagalan kaya mangyaring maging mapagpasensya.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Ang ilang mga plugin na iyong ginamit ay na-update sa Marketplace.",
+ "ThereIsNewVersionAvailableForUpdate": "Mayroong bagong bersyon ng Matomo na available para sa pag-update",
"UnpackingTheUpdate": "Pag-unpack sa update",
"UpdateAutomatically": "Awtomatikong update",
"UpdateHasBeenCancelledExplanation": "Nakansela ang Matomo One Click Update. Kung hindi mo maayos ang mensaheng may error sa itaas Ito ay nirerekomenda na manu-mano mong i-update ang Matomo. %1$s Mangyaring tignan ang %2$s updated documentaion %3$s upang makapagsimula!",
- "UpdateTitle": "I-update",
"UpdateSuccessTitle": "Ang Matomo ay matagumpay na na-update!",
+ "UpdateTitle": "I-update",
"UpgradeComplete": "Kumpleto na ang pag-upgrade!",
"UpgradePiwik": "I-upgrade ang Matomo",
"VerifyingUnpackedFiles": "Bine-verify ang naka-unpack na file",
@@ -53,4 +54,4 @@
"YouCanUpgradeAutomaticallyOrDownloadPackage": "Maaari mong awtomatikong i-update sa bersyon %s o i-download ang package at mano-manong i-install ito:",
"YourDatabaseIsOutOfDate": "Ang iyong Matomo database ay out-of-date at dapat mo na itong e-upgrade bago ka makatuloy sa susunod na proseso."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreUpdater/lang/ur.json b/plugins/CoreUpdater/lang/ur.json
index 390f962760..3727150eee 100644
--- a/plugins/CoreUpdater/lang/ur.json
+++ b/plugins/CoreUpdater/lang/ur.json
@@ -4,10 +4,10 @@
"ClickHereToViewSqlQueries": "ایس کیو ایل سوالات اور کنسول کمانڈز کی فہرست دیکھنے اور کاپی کرنے کے لئے یہاں کلک کریں جو عمل میں آئیں گے",
"CriticalErrorDuringTheUpgradeProcess": "تازہ کاری کے عمل کے دوران تنقیدی خرابی:",
"DatabaseUpgradeRequired": "ڈیٹا بیس اپ گریڈ کی ضرورت ہے",
- "DisablingIncompatiblePlugins": "متضاد پلگ ان کو غیر فعال کرنا:٪ s",
- "DownloadX": "٪ s ڈاؤن لوڈ کریں",
- "DownloadingUpdateFromX": "s سے اپ ڈیٹ ڈاؤن لوڈ ہو رہا ہے",
- "EmptyDatabaseError": "ڈیٹا بیس٪ s خالی ہے۔ آپ کو اپنی میٹومو کنفیگریشن فائل میں ترمیم یا اسے ہٹانا ہوگا۔",
+ "DisablingIncompatiblePlugins": "متضاد پلگ ان کو غیر فعال کرنا: %s",
+ "DownloadX": "%s ڈاؤن لوڈ کریں",
+ "DownloadingUpdateFromX": "%s سے اپ ڈیٹ ڈاؤن لوڈ ہو رہا ہے",
+ "EmptyDatabaseError": "ڈیٹا بیس%s خالی ہے۔ آپ کو اپنی میٹومو کنفیگریشن فائل میں ترمیم یا اسے ہٹانا ہوگا۔",
"ErrorDIYHelp": "اگر آپ جدید صارف ہیں اور ڈیٹا بیس اپ گریڈ میں خرابی کا سامنا کرتے ہیں تو:",
"ErrorDIYHelp_1": "مسئلے کے ماخذ کی شناخت اور ان کو درست کریں (جیسے میموری_لمیٹ یا زیادہ سے زیادہ_اختیار_ٹائم)",
"ErrorDIYHelp_2": "تازہ کاری میں باقی سوالات پر عمل کریں جو ناکام ہوگئے",
@@ -15,12 +15,11 @@
"ErrorDIYHelp_4": "باقی تازہ کاریوں کو جاری رکھنے کے لئے اپڈیٹر (براؤزر یا کمانڈ لائن کے ذریعے) دوبارہ چلائیں",
"ErrorDIYHelp_5": "مسئلے کی اطلاع دیں (اور حل) تاکہ ماتومو کو بہتر بنایا جاسکے",
"ErrorDuringPluginsUpdates": "پلگ ان اپ ڈیٹس کے دوران خرابی:",
- "ExceptionAlreadyLatestVersion": "آپ کا Matomo ورژن٪ s تازہ ترین ہے۔",
+ "ExceptionAlreadyLatestVersion": "آپ کا Matomo ورژن%s تازہ ترین ہے۔",
"ExceptionArchiveEmpty": "خالی آرکائو۔",
- "ExceptionArchiveIncompatible": "متضاد محفوظ شدہ دستاویزات:٪ s",
- "ExceptionArchiveIncomplete": "محفوظ شدہ دستاویزات نامکمل ہیں: کچھ فائلیں غائب ہیں (جیسے٪ s)",
+ "ExceptionArchiveIncompatible": "متضاد محفوظ شدہ دستاویزات:%s",
+ "ExceptionArchiveIncomplete": "محفوظ شدہ دستاویزات نامکمل ہیں: کچھ فائلیں غائب ہیں (جیسے %s)",
"FeedbackRequest": "یہاں ماتومو ٹیم کے ساتھ اپنے خیالات اور تجاویز کا اشتراک کرنے کے لئے آزاد محسوس کریں:",
- "HelpMessageContent": "Check Matomo FAQ that explains the most common mistakes during the update. Ask your system administrator - they will be able to help you with the error that is more likely than your server or MySQL setup.",
"SkipCacheClear": "کلیئرنگ کیچز چھوڑنا۔",
"UpdateLog": "لاگ اپ ڈیٹ کریں"
}
diff --git a/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php b/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
index e00697c1fb..64aa5df0db 100644
--- a/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
+++ b/plugins/CoreUpdater/tests/Integration/Commands/UpdateTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\CoreUpdater\tests\Integration\Commands;
-use Piwik\Config;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
diff --git a/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php b/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
index 57e49754e1..476b4e0e5c 100644
--- a/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
+++ b/plugins/CoreUpdater/tests/Integration/ReleaseChannelTest.php
@@ -8,10 +8,8 @@
namespace Piwik\Plugins\CoreUpdater\tests\ReleaseChannel;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Plugins\CoreUpdater\ReleaseChannel;
-use Piwik\UpdateCheck;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Url;
use Piwik\Version;
diff --git a/plugins/CoreVisualizations/CoreVisualizations.php b/plugins/CoreVisualizations/CoreVisualizations.php
index 095253612d..a2f0c18205 100644
--- a/plugins/CoreVisualizations/CoreVisualizations.php
+++ b/plugins/CoreVisualizations/CoreVisualizations.php
@@ -39,8 +39,8 @@ class CoreVisualizations extends \Piwik\Plugin
public function getStylesheetFiles(&$stylesheets)
{
- $stylesheets[] = "plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.less";
- $stylesheets[] = "plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.less";
+ $stylesheets[] = "plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.less";
+ $stylesheets[] = "plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.less";
$stylesheets[] = "plugins/CoreVisualizations/stylesheets/dataTableVisualizations.less";
$stylesheets[] = "plugins/CoreVisualizations/stylesheets/jqplot.css";
@@ -48,8 +48,6 @@ class CoreVisualizations extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = "plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.js";
- $jsFiles[] = "plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.js";
$jsFiles[] = "plugins/CoreVisualizations/javascripts/seriesPicker.js";
$jsFiles[] = "plugins/CoreVisualizations/javascripts/jqplot.js";
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator.php b/plugins/CoreVisualizations/JqplotDataGenerator.php
index e73e66a25f..320a1b0aa1 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator.php
@@ -15,9 +15,6 @@ use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Metrics;
-use Piwik\Period\Factory;
-use Piwik\Piwik;
-use Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator\Chart;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
diff --git a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
index 52dd29ae51..ea71ab47be 100644
--- a/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
+++ b/plugins/CoreVisualizations/JqplotDataGenerator/Evolution.php
@@ -11,8 +11,6 @@ namespace Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
use Piwik\Archive\DataTableFactory;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\DataTableInterface;
-use Piwik\DataTable\Row;
use Piwik\Date;
use Piwik\Metrics;
use Piwik\Period;
diff --git a/plugins/CoreVisualizations/Visualizations/Cloud.php b/plugins/CoreVisualizations/Visualizations/Cloud.php
index 43ae5505f2..eb42ae0b63 100644
--- a/plugins/CoreVisualizations/Visualizations/Cloud.php
+++ b/plugins/CoreVisualizations/Visualizations/Cloud.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Plugin\Visualization;
-use Piwik\View;
/**
* Generates a tag cloud from a given data array.
diff --git a/plugins/CoreVisualizations/Visualizations/Graph.php b/plugins/CoreVisualizations/Visualizations/Graph.php
index 8c296ffc50..296ea624a8 100644
--- a/plugins/CoreVisualizations/Visualizations/Graph.php
+++ b/plugins/CoreVisualizations/Visualizations/Graph.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Plugin\Metric;
use Piwik\Plugins\AbTesting\Columns\Metrics\ProcessedMetric;
use Piwik\Plugins\CoreVisualizations\Metrics\Formatter\Numeric;
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
index 4c0ca2380c..5f655655c5 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/AllColumns.php
@@ -10,9 +10,7 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\View;
/**
* DataTable Visualization that derives from HtmlTable and sets show_extra_columns to true.
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php b/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
index c69e00eb07..506af603a5 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable/Config.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Columns\Dimension;
use Piwik\ViewDataTable\Config as VisualizationConfig;
/**
diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
index 1ff6dea20e..8f5799f91d 100644
--- a/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
+++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph.php
@@ -8,9 +8,7 @@
*/
namespace Piwik\Plugins\CoreVisualizations\Visualizations;
-use Piwik\DataTable;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
-use Piwik\View;
/**
* DataTable visualization that displays DataTable data in a JQPlot graph.
diff --git a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
index 770a144007..d56a07280c 100644
--- a/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
+++ b/plugins/CoreVisualizations/Visualizations/JqplotGraph/Evolution.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph;
use Piwik\API\Request as ApiRequest;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Period;
use Piwik\Period\Factory;
use Piwik\Period\Range;
diff --git a/plugins/CoreVisualizations/Visualizations/Sparkline.php b/plugins/CoreVisualizations/Visualizations/Sparkline.php
index 0a05b07be8..828504b4f3 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparkline.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparkline.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\DataTable;
use Piwik\Period;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Site;
/**
* Reads the requested DataTable from the API and prepare data for the Sparkline view.
diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines.php b/plugins/CoreVisualizations/Visualizations/Sparklines.php
index ad9373f329..c8fe429659 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparklines.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparklines.php
@@ -16,7 +16,6 @@ use Piwik\Period\Factory;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\API\Filter\DataComparisonFilter;
use Piwik\SettingsPiwik;
-use Piwik\Url;
use Piwik\View;
/**
@@ -82,6 +81,15 @@ class Sparklines extends ViewDataTable
$this->requestConfig->request_parameters_to_modify['columns'] = $columnsList;
$this->requestConfig->request_parameters_to_modify['format_metrics'] = '1';
+ /**
+ * This special request parameter is used to include trend indication columns for all evolution columns
+ * this is done to be able to determine safely in the view if an evolution is positive or negative, as this
+ * can't be done with formatted evolution values due to language specific signs being used.
+ *
+ * @see DataComparisonFilter::compareChangePercents
+ */
+ $this->requestConfig->request_parameters_to_modify['include_trends'] = '1';
+
$request = $this->getRequestArray();
if ($this->isComparing()
&& !empty($request['comparePeriods'])
@@ -192,7 +200,7 @@ class Sparklines extends ViewDataTable
$columnToUse = $this->removeUniqueVisitorsIfNotEnabledForPeriod($column, $period);
- list($compareValues, $compareDescriptions, $evolutions) = $this->getValuesAndDescriptions($compareRow, $columnToUse, '_change');
+ list($compareValues, $compareDescriptions, $evolutions) = $this->getValuesAndDescriptions($compareRow, $columnToUse, '_change', '_trend');
foreach ($compareValues as $i => $value) {
$metricInfo = [
@@ -261,7 +269,7 @@ class Sparklines extends ViewDataTable
$table->applyQueuedFilters();
}
- private function getValuesAndDescriptions($firstRow, $columns, $evolutionColumnNameSuffix = null)
+ private function getValuesAndDescriptions($firstRow, $columns, $evolutionColumnNameSuffix = null, $trendColumnNameSuffix = null)
{
if (!is_array($columns)) {
$columns = array($columns);
@@ -285,8 +293,9 @@ class Sparklines extends ViewDataTable
if ($evolutionColumnNameSuffix !== null) {
$evolution = $firstRow->getColumn($col . $evolutionColumnNameSuffix);
+ $trend = $firstRow->getColumn($col . $trendColumnNameSuffix);
if ($evolution !== false) {
- $evolutions[] = ['percent' => ltrim($evolution, '+'), 'tooltip' => ''];
+ $evolutions[] = ['percent' => ltrim($evolution, '+'), 'trend' => $trend, 'tooltip' => ''];
}
}
diff --git a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
index 45e74134d9..1fdda31c77 100644
--- a/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
+++ b/plugins/CoreVisualizations/Visualizations/Sparklines/Config.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\DataTable\Filter\CalculateEvolutionFilter;
use Piwik\Metrics;
use Piwik\NoAccessException;
-use Piwik\Period\Factory;
use Piwik\Period\Range;
use Piwik\Site;
use Piwik\Url;
diff --git a/plugins/CoreVisualizations/Widgets/SingleMetricView.php b/plugins/CoreVisualizations/Widgets/SingleMetricView.php
index 74f05455ea..f2994bbbb6 100644
--- a/plugins/CoreVisualizations/Widgets/SingleMetricView.php
+++ b/plugins/CoreVisualizations/Widgets/SingleMetricView.php
@@ -14,7 +14,6 @@ use Piwik\Common;
use Piwik\View;
use Piwik\Widget\WidgetConfig;
use Piwik\Plugin\Manager as PluginManager;
-use Piwik\Plugins\Goals\API as GoalsAPI;
class SingleMetricView extends \Piwik\Widget\Widget
{
diff --git a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.html b/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.html
deleted file mode 100644
index cfd36998dc..0000000000
--- a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<div
- class="jqplot-seriespicker"
- ng-class="{open: $ctrl.isPopupVisible}"
- ng-mouseenter="$ctrl.isPopupVisible = true"
- ng-mouseleave="$ctrl.onLeavePopup()"
->
- <a
- href="#"
- ng-click="$event.preventDefault(); $event.stopPropagation();"
- >
- +
- </a>
- <div
- class="jqplot-seriespicker-popover"
- ng-if="$ctrl.isPopupVisible"
- >
- <p class="headline">{{ ($ctrl.multiselect ? 'General_MetricsToPlot' : 'General_MetricToPlot') | translate }}</p>
- <p
- ng-repeat="columnConfig in $ctrl.selectableColumns"
- class="pickColumn"
- ng-click="$ctrl.optionSelected(columnConfig.column, $ctrl.columnStates)"
- >
- <label>
- <input
- class="select"
- ng-checked="$ctrl.columnStates[columnConfig.column]"
- ng-attr-type="{{ $ctrl.multiselect ? 'checkbox' : 'radio' }}"
- />
- <span>{{ columnConfig.translation }}</span>
- </label>
- </p>
- <p
- ng-if="$ctrl.selectableRows.length"
- class="headline recordsToPlot"
- >
- {{ 'General_RecordsToPlot' | translate }}
- </p>
- <p
- ng-repeat="rowConfig in $ctrl.selectableRows"
- class="pickRow"
- ng-click="$ctrl.optionSelected(rowConfig.matcher, $ctrl.rowStates)"
- >
- <label>
- <input
- class="select"
- ng-checked="$ctrl.rowStates[rowConfig.matcher]"
- ng-attr-type="{{ $ctrl.multiselect ? 'checkbox' : 'radio' }}"
- />
- <span>{{ rowConfig.label }}</span>
- </label>
- </p>
- </div>
-</div> \ No newline at end of file
diff --git a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.js b/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.js
deleted file mode 100644
index bbfeb9444c..0000000000
--- a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.js
+++ /dev/null
@@ -1,142 +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
- */
-
-/**
- * This series picker component is a popup that displays a list of metrics/row
- * values that can be selected. It's used by certain datatable visualizations
- * to allow users to select different data series for display.
- *
- * Inputs:
- * - multiselect: true if the picker should allow selecting multiple items, false
- * if otherwise.
- * - selectableColumns: the list of selectable metric values. must be a list of
- * objects with the following properties:
- * * column: the ID of the column, eg, nb_visits
- * * translation: the translated text for the column, eg, Visits
- * - selectableRows: the list of selectable row values. must be a list of objects
- * with the following properties:
- * * matcher: the ID of the row
- * * label: the display text for the row
- * - selectedColumns: the list of selected columns. should be a list of strings
- * that correspond to the 'column' property in selectableColumns.
- * - selectedRows: the list of selected rows. should be a list of strings that
- * correspond to the 'matcher' property in selectableRows.
- * - onSelect: expression invoked when a user makes a new selection. invoked
- * with the following local variables:
- * * columns: list of IDs of new selected columns, if any
- * * rows: list of matchers of new selected rows, if any
- *
- * Usage:
- * <piwik-series-picker />
- */
-(function () {
- angular.module('piwikApp').component('piwikSeriesPicker', {
- templateUrl: 'plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.html?cb=' + piwik.cacheBuster,
- bindings: {
- multiselect: '<',
- selectableColumns: '<',
- selectableRows: '<',
- selectedColumns: '<',
- selectedRows: '<',
- onSelect: '&'
- },
- controller: SeriesPickerController
- });
-
- SeriesPickerController.$inject = [];
-
- function SeriesPickerController() {
- var vm = this;
- vm.isPopupVisible = false;
-
- // note: column & row states are separated since it's technically possible (though
- // highly improbable) that a row value matcher will be the same as a recognized column.
- vm.columnStates = {};
- vm.rowStates = {};
- vm.optionSelected = optionSelected;
- vm.onLeavePopup = onLeavePopup;
- vm.$onInit = $onInit;
-
- function $onInit() {
- vm.columnStates = getInitialOptionStates(vm.selectableColumns, vm.selectedColumns);
- vm.rowStates = getInitialOptionStates(vm.selectableRows, vm.selectedRows);
- }
-
- function getInitialOptionStates(allOptions, selectedOptions) {
- var states = {};
-
- allOptions.forEach(function (columnConfig) {
- states[columnConfig.column || columnConfig.matcher] = false;
- });
-
- selectedOptions.forEach(function (column) {
- states[column] = true;
- });
-
- return states;
- }
-
- function optionSelected(optionValue, optionStates) {
- if (!vm.multiselect) {
- unselectOptions(vm.columnStates);
- unselectOptions(vm.rowStates);
- }
-
- optionStates[optionValue] = !optionStates[optionValue];
-
- triggerOnSelectAndClose();
- }
-
- function onLeavePopup() {
- vm.isPopupVisible = false;
-
- if (optionsChanged()) {
- triggerOnSelectAndClose();
- }
- }
-
- function triggerOnSelectAndClose() {
- if (!vm.onSelect) {
- return;
- }
-
- vm.isPopupVisible = false;
-
- vm.onSelect({
- columns: getSelected(vm.columnStates),
- rows: getSelected(vm.rowStates)
- });
- }
-
- function optionsChanged() {
- return !arrayEqual(getSelected(vm.columnStates), vm.selectedColumns)
- || !arrayEqual(getSelected(vm.rowStates), vm.selectedRows);
- }
-
- function arrayEqual(lhs, rhs) {
- if (lhs.length !== rhs.length) {
- return false;
- }
-
- return lhs
- .filter(function (element) { return rhs.indexOf(element) === -1; })
- .length === 0;
- }
-
- function unselectOptions(optionStates) {
- Object.keys(optionStates).forEach(function (optionName) {
- optionStates[optionName] = false;
- });
- }
-
- function getSelected(optionStates) {
- return Object.keys(optionStates).filter(function (optionName) {
- return !! optionStates[optionName];
- });
- }
- }
-})(); \ No newline at end of file
diff --git a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.less b/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.less
deleted file mode 100644
index 9d4fdc8de9..0000000000
--- a/plugins/CoreVisualizations/angularjs/series-picker/series-picker.component.less
+++ /dev/null
@@ -1,28 +0,0 @@
-piwik-series-picker {
- display: inline-block;
-
- .jqplot-seriespicker {
- &:not(.open) {
- opacity: .55;
- }
-
- &.open { // while open, make sure we're above other series picker icons
- z-index: 1000;
- }
-
- > a {
- display: inline-block;
- opacity: 0;
- position: absolute;
- }
-
- position: relative;
- }
-
- .jqplot-seriespicker-popover {
- position: absolute;
-
- top: -3px;
- left: -4px;
- }
-}
diff --git a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.html b/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.html
deleted file mode 100644
index e302dda171..0000000000
--- a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="singleMetricView" ng-class="{'loading': $ctrl.isLoading}">
- <piwik-sparkline
- class="metric-sparkline"
- params="$ctrl.sparklineParams"
- >
- </piwik-sparkline>
- <div class="metric-value">
- <span title="{{ $ctrl.metricDocumentation }}">
- <strong>{{ $ctrl.metricValue }}</strong> {{ ($ctrl.metricTranslation || '').toLowerCase() }}
- </span>
- <span class="metricEvolution"
- ng-if="$ctrl.pastValue !== null"
- title="{{ 'General_EvolutionSummaryGeneric'|translate:$ctrl.metricValue:$ctrl.getCurrentPeriod():$ctrl.pastValue:$ctrl.pastPeriod:$ctrl.metricChangePercent }}"
- >
- <span ng-class="{'positive-evolution': $ctrl.metricValueUnformatted > $ctrl.pastValueUnformatted, 'negative-evolution': $ctrl.metricValueUnformatted < $ctrl.pastValueUnformatted}">
- {{ $ctrl.metricChangePercent }}
- </span>
- </span>
- </div>
-</div> \ No newline at end of file
diff --git a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.js b/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.js
deleted file mode 100644
index 2c3b19aff7..0000000000
--- a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.js
+++ /dev/null
@@ -1,279 +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:
- * <piwik-single-metric-view>
- */
-(function () {
- angular.module('piwikApp').component('piwikSingleMetricView', {
- templateUrl: 'plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.html?cb=' + piwik.cacheBuster,
- bindings: {
- metric: '<',
- idGoal: '<',
- metricTranslations: '<',
- metricDocumentations: '<',
- goals: '<',
- goalMetrics: '<'
- },
- controller: SingleMetricViewController
- });
-
- SingleMetricViewController.$inject = ['piwik', 'piwikApi', '$element', '$httpParamSerializer', '$compile', '$scope', 'piwikPeriods', '$q'];
-
- function SingleMetricViewController(piwik, piwikApi, $element, $httpParamSerializer, $compile, $scope, piwikPeriods, $q) {
- var seriesPickerScope;
-
- var vm = this;
- vm.metricValue = null;
- vm.isLoading = false;
- vm.metricTranslation = null;
- vm.metricDocumentation = null;
- vm.selectableColumns = [];
- vm.responses = null;
- vm.sparklineParams = {};
- vm.$onInit = $onInit;
- vm.$onChanges = $onChanges;
- vm.$onDestroy = $onDestroy;
- vm.getCurrentPeriod = getCurrentPeriod;
- vm.getMetricTranslation = getMetricTranslation;
- vm.setMetric = setMetric;
-
- function setSparklineParams() {
- var params = { module: 'API', action: 'get', columns: vm.metric };
- if (isIdGoalSet()) {
- params.idGoal = vm.idGoal;
- params.module = 'Goals';
- }
- vm.sparklineParams = params;
- }
-
- function $onInit() {
- vm.selectedColumns = [vm.metric];
- if (piwik.period !== 'range') {
- vm.pastPeriod = getPastPeriodStr();
- }
-
- setSelectableColumns();
-
- createSeriesPicker();
-
- $element.closest('.widgetContent')
- .on('widget:destroy', function() { $scope.$parent.$destroy(); })
- .on('widget:reload', function() { $scope.$parent.$destroy(); });
-
- setSparklineParams();
- }
-
- function $onChanges(changes) {
- if (changes.metric && changes.metric.previousValue !== changes.metric.currentValue) {
- onMetricChanged();
- }
- }
-
- function $onDestroy() {
- $element.closest('.widgetContent').off('widget:destroy').off('widget:reload');
- destroySeriesPicker();
- }
-
- function fetchData() {
- vm.isLoading = true;
-
- var promises = [];
-
- var apiModule = 'API';
- var apiAction = 'get';
-
- var extraParams = {};
- if (isIdGoalSet()) {
- extraParams.idGoal = vm.idGoal;
- // the conversion rate added by the AddColumnsProcessedMetrics filter conflicts w/ the goals one, so don't run it
- extraParams.filter_add_columns_when_show_all_columns = 0;
-
- apiModule = 'Goals';
- apiAction = 'get';
- }
-
- // first request for formatted data
- promises.push(piwikApi.fetch($.extend({
- method: apiModule + '.' + apiAction,
- format_metrics: 'all'
- }, extraParams)));
-
- if (piwik.period !== 'range') {
- // second request for unformatted data so we can calculate evolution
- promises.push(piwikApi.fetch($.extend({
- method: apiModule + '.' + apiAction,
- format_metrics: '0'
- }, extraParams)));
-
- // third request for past data (unformatted)
- promises.push(piwikApi.fetch($.extend({
- method: apiModule + '.' + apiAction,
- date: getLastPeriodDate(),
- format_metrics: '0',
- }, extraParams)));
-
- // fourth request for past data (formatted for tooltip display)
- promises.push(piwikApi.fetch($.extend({
- method: apiModule + '.' + apiAction,
- date: getLastPeriodDate(),
- format_metrics: 'all',
- }, extraParams)));
- }
-
- return $q.all(promises).then(function (responses) {
- vm.responses = responses;
- vm.isLoading = false;
- });
- }
-
- function recalculateValues() {
- // update display based on processed report metadata
- setWidgetTitle();
- vm.metricDocumentation = getMetricDocumentation();
-
- // update data
- var currentData = vm.responses[0];
- vm.metricValue = currentData[vm.metric] || 0;
-
- if (vm.responses[1]) {
- vm.metricValueUnformatted = vm.responses[1][vm.metric];
-
- var pastData = vm.responses[2];
- vm.pastValueUnformatted = pastData[vm.metric] || 0;
-
- var evolution = piwik.helper.calculateEvolution(vm.metricValueUnformatted, vm.pastValueUnformatted);
- vm.metricChangePercent = (evolution * 100).toFixed(2) + ' %';
-
- var pastDataFormatted = vm.responses[3];
- vm.pastValue = pastDataFormatted[vm.metric] || 0;
- } else {
- vm.pastValue = null;
- vm.metricChangePercent = null;
- }
-
- // don't change the metric translation until data is fetched to avoid loading state confusion
- vm.metricTranslation = getMetricTranslation();
- }
-
- function getLastPeriodDate() {
- var RangePeriod = piwikPeriods.get('range');
- var result = RangePeriod.getLastNRange(piwik.period, 2, piwik.currentDateString).startDate;
- return piwikPeriods.format(result);
- }
-
- function setWidgetTitle() {
- var title = vm.getMetricTranslation();
- if (isIdGoalSet()) {
- var goalName = vm.goals[vm.idGoal].name;
- title = goalName + ' - ' + title;
- }
-
- $element.closest('div.widget').find('.widgetTop > .widgetName > span').text(title);
- }
-
- function getCurrentPeriod() {
- if (piwik.startDateString === piwik.endDateString) {
- return piwik.endDateString;
- }
- return piwik.startDateString + ', ' + piwik.endDateString;
- }
-
- function createSeriesPicker() {
- vm.selectedColumns = [vm.idGoal ? ('goal' + vm.idGoal + '_' + vm.metric) : vm.metric];
-
- var $widgetName = $element.closest('div.widget').find('.widgetTop > .widgetName');
-
- var $seriesPicker = $('<piwik-series-picker class="single-metric-view-picker" multiselect="false" ' +
- 'selectable-columns="$ctrl.selectableColumns" selectable-rows="[]" selected-columns="$ctrl.selectedColumns" ' +
- 'selected-rows="[]" on-select="$ctrl.setMetric(columns[0])" />');
-
- seriesPickerScope = $scope.$new();
- $compile($seriesPicker)(seriesPickerScope);
-
- $widgetName.append($seriesPicker);
- }
-
- function destroySeriesPicker() {
- $element.closest('div.widget').find('.single-metric-view-picker').remove();
-
- seriesPickerScope.$destroy();
- seriesPickerScope = null;
- }
-
- function getMetricDocumentation() {
- if (!vm.metricDocumentations || !vm.metricDocumentations[vm.metric]) {
- return '';
- }
-
- return vm.metricDocumentations[vm.metric];
- }
-
- function getMetricTranslation() {
- if (!vm.metricTranslations || !vm.metricTranslations[vm.metric]) {
- return '';
- }
-
- return vm.metricTranslations[vm.metric];
- }
-
- function setSelectableColumns() {
- var result = [];
- Object.keys(vm.metricTranslations).forEach(function (column) {
- result.push({ column: column, translation: vm.metricTranslations[column] });
- });
-
- Object.keys(vm.goals).forEach(function (idgoal) {
- var goal = vm.goals[idgoal];
- vm.goalMetrics.forEach(function (column) {
- result.push({
- column: 'goal' + goal.idgoal + '_' + column,
- translation: goal.name + ' - ' + vm.metricTranslations[column]
- });
- });
- });
-
- vm.selectableColumns = result;
- }
-
- function onMetricChanged() {
- setSparklineParams();
-
- fetchData().then(recalculateValues);
-
- // notify widget of parameter change so it is replaced
- $element.closest('[widgetId]').trigger('setParameters', { column: vm.metric, idGoal: vm.idGoal });
- }
-
- function setMetric(newColumn) {
- var idGoal;
-
- var m = newColumn.match(/^goal([0-9]+)_(.*)/);
- if (m) {
- idGoal = +m[1];
- newColumn = m[2];
- }
-
- if (vm.metric !== newColumn || idGoal !== vm.idGoal) {
- vm.metric = newColumn;
- vm.idGoal = idGoal;
- onMetricChanged();
- }
- }
-
- function getPastPeriodStr() {
- var startDate = piwikPeriods.get('range').getLastNRange(piwik.period, 2, piwik.currentDateString).startDate;
- var dateRange = piwikPeriods.get(piwik.period).parse(startDate).getDateRange();
- return piwikPeriods.format(dateRange[0]) + ',' + piwikPeriods.format(dateRange[1]);
- }
-
- function isIdGoalSet() {
- return vm.idGoal || vm.idGoal === 0;
- }
- }
-})();
diff --git a/plugins/CoreVisualizations/javascripts/seriesPicker.js b/plugins/CoreVisualizations/javascripts/seriesPicker.js
index 2ca659445c..6ea90cc326 100644
--- a/plugins/CoreVisualizations/javascripts/seriesPicker.js
+++ b/plugins/CoreVisualizations/javascripts/seriesPicker.js
@@ -83,47 +83,48 @@
});
// initialize dom element
- var seriesPicker = '<piwik-series-picker'
- + ' multiselect="' + (this.multiSelect ? 'true' : 'false') + '"'
- + ' selectable-columns="selectableColumns"'
- + ' selectable-rows="selectableRows"'
- + ' selected-columns="selectedColumns"'
- + ' selected-rows="selectedRows"'
- + ' on-select="selectionChanged(columns, rows)"/>';
-
- this.domElem = $(seriesPicker);
+ this.domElem = $('<div style="display:inline-block"><div></div></div>');
$(this).trigger('placeSeriesPicker');
- piwikHelper.compileAngularComponents(this.domElem, {
- params: {
- selectableColumns: this.selectableColumns,
- selectableRows: this.selectableRows,
- selectedColumns: selectedColumns,
- selectedRows: selectedRows,
- selectionChanged: function selectionChanged(columns, rows) {
- if (columns.length === 0 && rows.length === 0) {
- return;
- }
-
- rows = rows.map(encodeURIComponent);
-
- $(self).trigger('seriesPicked', [columns, rows]);
-
- // inform dashboard widget about changed parameters (to be restored on reload)
- var UI = require('piwik/UI');
- var params = {
- columns: columns,
- columns_to_display: columns,
- rows: rows,
- rows_to_display: rows
- };
-
- var tableNode = $('#' + self.dataTableId);
- UI.DataTable.prototype.notifyWidgetParametersChange(tableNode, params);
+ var createVNode = Vue.createVNode;
+ var createVueApp = CoreHome.createVueApp;
+ var SeriesPicker = CoreVisualizations.SeriesPicker;
+
+ var app = createVueApp({
+ render: function () {
+ return createVNode(SeriesPicker, {
+ multiselect: self.multiSelect,
+ selectableColumns: self.selectableColumns,
+ selectableRows: self.selectableRows,
+ selectedColumns: selectedColumns,
+ selectedRows: selectedRows,
+ onSelect: function selectionChanged(event) {
+ var columns = event.columns, rows = event.rows;
+ if (columns.length === 0 && rows.length === 0) {
+ return;
}
- }
+
+ rows = rows.map(encodeURIComponent);
+
+ $(self).trigger('seriesPicked', [columns, rows]);
+
+ // inform dashboard widget about changed parameters (to be restored on reload)
+ var UI = require('piwik/UI');
+ var params = {
+ columns: columns,
+ columns_to_display: columns,
+ rows: rows,
+ rows_to_display: rows
+ };
+
+ var tableNode = $('#' + self.dataTableId);
+ UI.DataTable.prototype.notifyWidgetParametersChange(tableNode, params);
+ }
+ });
+ }
});
+ app.mount(this.domElem.children()[0]);
function isItemDisplayed(columnOrRowConfig) {
return columnOrRowConfig.displayed;
diff --git a/plugins/CoreVisualizations/stylesheets/jqplot.css b/plugins/CoreVisualizations/stylesheets/jqplot.css
index 2be3bda099..e2c7e60eb6 100644
--- a/plugins/CoreVisualizations/stylesheets/jqplot.css
+++ b/plugins/CoreVisualizations/stylesheets/jqplot.css
@@ -204,7 +204,6 @@ a.rowevolution-startmulti {
.jqplot-seriespicker {
display: block;
- position: absolute;
z-index: 9;
width: 24px;
height: 16px;
diff --git a/plugins/CoreVisualizations/templates/macros.twig b/plugins/CoreVisualizations/templates/macros.twig
index d6c5ad9f56..8ded71264d 100644
--- a/plugins/CoreVisualizations/templates/macros.twig
+++ b/plugins/CoreVisualizations/templates/macros.twig
@@ -1,11 +1,11 @@
{% macro sparklineEvolution(evolution) %}
{% set evolutionPretty = evolution.percent %}
-
- {% if evolution.percent < 0 %}
+ {% set compareValue = evolution.trend is defined ? evolution.trend : evolution.percent %}
+ {% if compareValue < 0 %}
{% set evolutionClass = 'negative-evolution' %}
{% set evolutionIcon = 'arrow_down.png' %}
- {% elseif evolution.percent == 0 or evolution.percent == '0%' %}
+ {% elseif compareValue == 0 or compareValue == '0%' %}
{% set evolutionClass = 'neutral-evolution' %}
{% set evolutionIcon = 'stop.png' %}
{% else %}
diff --git a/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.js b/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.js
new file mode 100644
index 0000000000..2299cdb54d
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.js
@@ -0,0 +1,790 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", ], factory);
+ else if(typeof exports === 'object')
+ exports["CoreVisualizations"] = factory(require("CoreHome"), require("vue"));
+ else
+ root["CoreVisualizations"] = factory(root["CoreHome"], root["Vue"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__) {
+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/CoreVisualizations/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__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "SeriesPicker", function() { return /* reexport */ SeriesPicker; });
+__webpack_require__.d(__webpack_exports__, "SingleMetricView", function() { return /* reexport */ SingleMetricView; });
+
+// 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/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue?vue&type=template&id=bd202f38
+
+var _hoisted_1 = {
+ key: 0,
+ class: "jqplot-seriespicker-popover"
+};
+var _hoisted_2 = {
+ class: "headline"
+};
+var _hoisted_3 = ["onClick"];
+var _hoisted_4 = ["type", "checked"];
+var _hoisted_5 = {
+ key: 0,
+ class: "headline recordsToPlot"
+};
+var _hoisted_6 = ["onClick"];
+var _hoisted_7 = ["type", "checked"];
+function SeriesPickervue_type_template_id_bd202f38_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", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["jqplot-seriespicker", {
+ open: _ctx.isPopupVisible
+ }]),
+ onMouseenter: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.isPopupVisible = true;
+ }),
+ onMouseleave: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.onLeavePopup();
+ })
+ }, [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 () {}, ["prevent", "stop"]))
+ }, " + "), _ctx.isPopupVisible ? (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"])("p", _hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate(_ctx.multiselect ? 'General_MetricsToPlot' : 'General_MetricToPlot')), 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.selectableColumns, function (columnConfig) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ class: "pickColumn",
+ onClick: function onClick($event) {
+ return _ctx.optionSelected(columnConfig.column, _ctx.columnStates);
+ },
+ key: columnConfig.column
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "select",
+ type: _ctx.multiselect ? 'checkbox' : 'radio',
+ checked: !!_ctx.columnStates[columnConfig.column]
+ }, null, 8, _hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(columnConfig.translation), 1)])], 8, _hoisted_3);
+ }), 128)), _ctx.selectableRows.length ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_RecordsToPlot')), 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.selectableRows, function (rowConfig) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ class: "pickRow",
+ onClick: function onClick($event) {
+ return _ctx.optionSelected(rowConfig.matcher, _ctx.rowStates);
+ },
+ key: rowConfig.matcher
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ class: "select",
+ type: _ctx.multiselect ? 'checkbox' : 'radio',
+ checked: !!_ctx.rowStates[rowConfig.matcher]
+ }, null, 8, _hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(rowConfig.label), 1)])], 8, _hoisted_6);
+ }), 128))])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 34);
+}
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue?vue&type=template&id=bd202f38
+
+// 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/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue?vue&type=script&lang=ts
+
+
+
+function getInitialOptionStates(allOptions, selectedOptions) {
+ var states = {};
+ allOptions.forEach(function (columnConfig) {
+ var name = columnConfig.column || columnConfig.matcher;
+ states[name] = false;
+ });
+ selectedOptions.forEach(function (column) {
+ states[column] = true;
+ });
+ return states;
+}
+
+function arrayEqual(lhs, rhs) {
+ if (lhs.length !== rhs.length) {
+ return false;
+ }
+
+ return lhs.filter(function (element) {
+ return rhs.indexOf(element) === -1;
+ }).length === 0;
+}
+
+function unselectOptions(optionStates) {
+ Object.keys(optionStates).forEach(function (optionName) {
+ optionStates[optionName] = false;
+ });
+}
+
+function getSelected(optionStates) {
+ return Object.keys(optionStates).filter(function (optionName) {
+ return !!optionStates[optionName];
+ });
+}
+
+/* harmony default export */ var SeriesPickervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ multiselect: Boolean,
+ selectableColumns: {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ },
+ selectableRows: {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ },
+ selectedColumns: {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ },
+ selectedRows: {
+ type: Array,
+ default: function _default() {
+ return [];
+ }
+ }
+ },
+ data: function data() {
+ return {
+ isPopupVisible: false,
+ columnStates: getInitialOptionStates(this.selectableColumns, this.selectedColumns),
+ rowStates: getInitialOptionStates(this.selectableRows, this.selectedRows)
+ };
+ },
+ emits: ['select'],
+ created: function created() {
+ this.optionSelected = Object(external_CoreHome_["debounce"])(this.optionSelected, 0);
+ },
+ methods: {
+ optionSelected: function optionSelected(optionValue, optionStates) {
+ if (!this.multiselect) {
+ unselectOptions(this.columnStates);
+ unselectOptions(this.rowStates);
+ }
+
+ optionStates[optionValue] = !optionStates[optionValue];
+ this.triggerOnSelectAndClose();
+ },
+ onLeavePopup: function onLeavePopup() {
+ this.isPopupVisible = false;
+
+ if (this.optionsChanged()) {
+ this.triggerOnSelectAndClose();
+ }
+ },
+ triggerOnSelectAndClose: function triggerOnSelectAndClose() {
+ this.isPopupVisible = false;
+ this.$emit('select', {
+ columns: getSelected(this.columnStates),
+ rows: getSelected(this.rowStates)
+ });
+ },
+ optionsChanged: function optionsChanged() {
+ return !arrayEqual(getSelected(this.columnStates), this.selectedColumns) || !arrayEqual(getSelected(this.rowStates), this.selectedRows);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue
+
+
+
+SeriesPickervue_type_script_lang_ts.render = SeriesPickervue_type_template_id_bd202f38_render
+
+/* harmony default export */ var SeriesPicker = (SeriesPickervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.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 SeriesPicker_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: SeriesPicker,
+ scope: {
+ multiselect: {
+ angularJsBind: '<'
+ },
+ selectableColumns: {
+ angularJsBind: '<'
+ },
+ selectableRows: {
+ angularJsBind: '<'
+ },
+ selectedColumns: {
+ angularJsBind: '<'
+ },
+ selectedRows: {
+ angularJsBind: '<'
+ },
+ onSelect: {
+ angularJsBind: '&',
+ vue: 'select'
+ }
+ },
+ directiveName: 'piwikSeriesPicker',
+ 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/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue?vue&type=template&id=2e2e889f
+
+var SingleMetricViewvue_type_template_id_2e2e889f_hoisted_1 = {
+ class: "metric-sparkline"
+};
+var SingleMetricViewvue_type_template_id_2e2e889f_hoisted_2 = {
+ class: "metric-value"
+};
+var SingleMetricViewvue_type_template_id_2e2e889f_hoisted_3 = ["title"];
+var SingleMetricViewvue_type_template_id_2e2e889f_hoisted_4 = ["title"];
+function SingleMetricViewvue_type_template_id_2e2e889f_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Sparkline = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Sparkline");
+
+ 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"])(["singleMetricView", {
+ 'loading': _ctx.isLoading
+ }]),
+ ref: "root"
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SingleMetricViewvue_type_template_id_2e2e889f_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Sparkline, {
+ params: _ctx.sparklineParams
+ }, null, 8, ["params"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", SingleMetricViewvue_type_template_id_2e2e889f_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ title: _ctx.metricDocumentation
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.metricValue), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])((_ctx.metricTranslation || '').toLowerCase()), 1)], 8, SingleMetricViewvue_type_template_id_2e2e889f_hoisted_3), _ctx.pastValue !== null ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", {
+ key: 0,
+ class: "metricEvolution",
+ title: _ctx.translate('General_EvolutionSummaryGeneric', _ctx.metricValue, _ctx.currentPeriod, _ctx.pastValue, _ctx.pastPeriod, _ctx.metricChangePercent)
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ 'positive-evolution': _ctx.metricValueUnformatted > _ctx.pastValueUnformatted,
+ 'negative-evolution': _ctx.metricValueUnformatted < _ctx.pastValueUnformatted
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.metricChangePercent), 3)], 8, SingleMetricViewvue_type_template_id_2e2e889f_hoisted_4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 2);
+}
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue?vue&type=template&id=2e2e889f
+
+// 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/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue?vue&type=script&lang=ts
+function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _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 _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 _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; }
+
+
+
+
+
+function getPastPeriodStr() {
+ var _Range$getLastNRange = external_CoreHome_["Range"].getLastNRange(external_CoreHome_["Matomo"].period, 2, external_CoreHome_["Matomo"].currentDateString),
+ startDate = _Range$getLastNRange.startDate;
+
+ var dateRange = external_CoreHome_["Periods"].get(external_CoreHome_["Matomo"].period).parse(startDate).getDateRange();
+ return "".concat(Object(external_CoreHome_["format"])(dateRange[0]), ",").concat(Object(external_CoreHome_["format"])(dateRange[1]));
+}
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var SingleMetricViewvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ metric: {
+ type: String,
+ required: true
+ },
+ idGoal: [String, Number],
+ metricTranslations: {
+ type: Object,
+ required: true
+ },
+ metricDocumentations: Object,
+ goals: {
+ type: Object,
+ required: true
+ },
+ goalMetrics: Array
+ },
+ components: {
+ Sparkline: external_CoreHome_["Sparkline"]
+ },
+ setup: function setup(props) {
+ var root = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
+ var isLoading = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(false);
+ var responses = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(null);
+ var actualMetric = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(props.metric);
+ var actualIdGoal = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])(props.idGoal);
+ var selectedColumns = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return [actualIdGoal.value ? "goal".concat(actualIdGoal.value, "_").concat(actualMetric.value) : actualMetric.value];
+ });
+ var metricValueUnformatted = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _responses$value;
+
+ if (!((_responses$value = responses.value) !== null && _responses$value !== void 0 && _responses$value[1])) {
+ return null;
+ }
+
+ return responses.value[1][actualMetric.value];
+ });
+ var pastValueUnformatted = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _responses$value2;
+
+ if (!((_responses$value2 = responses.value) !== null && _responses$value2 !== void 0 && _responses$value2[2])) {
+ return null;
+ }
+
+ return responses.value[2][actualMetric.value] || 0;
+ });
+ var metricChangePercent = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ if (!metricValueUnformatted.value) {
+ return null;
+ }
+
+ var currentValue = typeof metricValueUnformatted.value === 'string' ? parseInt(metricValueUnformatted.value, 10) : metricValueUnformatted.value;
+ var pastValue = typeof pastValueUnformatted.value === 'string' ? parseInt(pastValueUnformatted.value, 10) : pastValueUnformatted.value;
+ var evolution = external_CoreHome_["Matomo"].helper.calculateEvolution(currentValue, pastValue);
+ return "".concat((evolution * 100).toFixed(2), " %");
+ });
+ var pastValue = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _responses$value3;
+
+ if (!((_responses$value3 = responses.value) !== null && _responses$value3 !== void 0 && _responses$value3[3])) {
+ return null;
+ }
+
+ var pastDataFormatted = responses.value[3];
+ return pastDataFormatted[actualMetric.value] || 0;
+ });
+ var metricValue = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _responses$value4;
+
+ if (!((_responses$value4 = responses.value) !== null && _responses$value4 !== void 0 && _responses$value4[0])) {
+ return null;
+ }
+
+ var currentData = responses.value[0];
+ return currentData[actualMetric.value] || 0;
+ });
+ var metricTranslation = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _props$metricTranslat;
+
+ if (!((_props$metricTranslat = props.metricTranslations) !== null && _props$metricTranslat !== void 0 && _props$metricTranslat[actualMetric.value])) {
+ return '';
+ }
+
+ return props.metricTranslations[actualMetric.value];
+ });
+ var metricDocumentation = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var _props$metricDocument;
+
+ if (!((_props$metricDocument = props.metricDocumentations) !== null && _props$metricDocument !== void 0 && _props$metricDocument[actualMetric.value])) {
+ return '';
+ }
+
+ return props.metricDocumentations[actualMetric.value];
+ });
+ var currentPeriod = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ if (external_CoreHome_["Matomo"].startDateString === external_CoreHome_["Matomo"].endDateString) {
+ return external_CoreHome_["Matomo"].endDateString;
+ }
+
+ return "".concat(external_CoreHome_["Matomo"].startDateString, ", ").concat(external_CoreHome_["Matomo"].endDateString);
+ });
+
+ function isIdGoalSet() {
+ return actualIdGoal.value || actualIdGoal.value === 0;
+ }
+
+ var sparklineParams = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var params = {
+ module: 'API',
+ action: 'get',
+ columns: actualMetric.value
+ };
+
+ if (isIdGoalSet()) {
+ params.idGoal = actualIdGoal.value;
+ params.module = 'Goals';
+ }
+
+ return params;
+ });
+ var pastPeriod = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ if (external_CoreHome_["Matomo"].period === 'range') {
+ return undefined;
+ }
+
+ return getPastPeriodStr();
+ });
+ var selectableColumns = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ var result = [];
+ Object.keys(props.metricTranslations).forEach(function (column) {
+ result.push({
+ column: column,
+ translation: props.metricTranslations[column]
+ });
+ });
+ Object.values(props.goals || {}).forEach(function (goal) {
+ props.goalMetrics.forEach(function (column) {
+ result.push({
+ column: "goal".concat(goal.idgoal, "_").concat(column),
+ translation: "".concat(goal.name, " - ").concat(props.metricTranslations[column])
+ });
+ });
+ });
+ return result;
+ });
+
+ function setWidgetTitle() {
+ var title = metricTranslation.value;
+
+ if (isIdGoalSet()) {
+ var _props$goals$actualId;
+
+ var goalName = ((_props$goals$actualId = props.goals[actualIdGoal.value]) === null || _props$goals$actualId === void 0 ? void 0 : _props$goals$actualId.name) || Object(external_CoreHome_["translate"])('General_Unknown');
+ title = "".concat(goalName, " - ").concat(title);
+ }
+
+ $(root.value).closest('div.widget').find('.widgetTop > .widgetName > span').text(title);
+ }
+
+ function getLastPeriodDate() {
+ var range = external_CoreHome_["Range"].getLastNRange(external_CoreHome_["Matomo"].period, 2, external_CoreHome_["Matomo"].currentDateString);
+ return Object(external_CoreHome_["format"])(range.startDate);
+ }
+
+ function fetchData() {
+ isLoading.value = true;
+ var promises = [];
+ var apiModule = 'API';
+ var apiAction = 'get';
+ var extraParams = {};
+
+ if (isIdGoalSet()) {
+ // the conversion rate added by the AddColumnsProcessedMetrics filter conflicts w/
+ // the goals one, so don't run it
+ extraParams.idGoal = actualIdGoal.value;
+ extraParams.filter_add_columns_when_show_all_columns = 0;
+ apiModule = 'Goals';
+ apiAction = 'get';
+ }
+
+ var method = "".concat(apiModule, ".").concat(apiAction); // first request for formatted data
+
+ promises.push(external_CoreHome_["AjaxHelper"].fetch(Object.assign({
+ method: method,
+ format_metrics: 'all'
+ }, extraParams)));
+
+ if (external_CoreHome_["Matomo"].period !== 'range') {
+ // second request for unformatted data so we can calculate evolution
+ promises.push(external_CoreHome_["AjaxHelper"].fetch(Object.assign({
+ method: method,
+ format_metrics: '0'
+ }, extraParams))); // third request for past data (unformatted)
+
+ promises.push(external_CoreHome_["AjaxHelper"].fetch(Object.assign({
+ method: method,
+ date: getLastPeriodDate(),
+ format_metrics: '0'
+ }, extraParams))); // fourth request for past data (formatted for tooltip display)
+
+ promises.push(external_CoreHome_["AjaxHelper"].fetch(Object.assign({
+ method: method,
+ date: getLastPeriodDate(),
+ format_metrics: 'all'
+ }, extraParams)));
+ }
+
+ return Promise.all(promises).then(function (r) {
+ responses.value = r;
+ isLoading.value = false;
+ });
+ }
+
+ function onMetricChanged(newMetric) {
+ actualMetric.value = newMetric;
+ fetchData().then(setWidgetTitle); // notify widget of parameter change so it is replaced
+
+ $(root.value).closest('[widgetId]').trigger('setParameters', {
+ column: actualMetric.value,
+ idGoal: actualIdGoal.value
+ });
+ }
+
+ function setMetric(newColumn) {
+ var idGoal = undefined;
+ var actualColumn = newColumn;
+ var m = newColumn.match(/^goal([0-9]+)_(.*)/);
+
+ if (m) {
+ idGoal = +m[1];
+
+ var _m = _slicedToArray(m, 3);
+
+ actualColumn = _m[2];
+ }
+
+ if (actualMetric.value !== actualColumn || idGoal !== actualIdGoal.value) {
+ actualMetric.value = actualColumn;
+ actualIdGoal.value = idGoal;
+ onMetricChanged(actualColumn);
+ }
+ }
+
+ function createSeriesPicker() {
+ var element = $(root.value);
+ var $widgetName = element.closest('div.widget').find('.widgetTop > .widgetName');
+ var $seriesPickerElem = $('<div class="single-metric-view-picker"><div></div></div>');
+ var app = Object(external_CoreHome_["createVueApp"])({
+ render: function render() {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(SeriesPicker, {
+ multiselect: false,
+ selectableColumns: selectableColumns.value,
+ selectableRows: [],
+ selectedColumns: selectedColumns.value,
+ selectedRows: [],
+ onSelect: function onSelect(_ref) {
+ var columns = _ref.columns;
+ setMetric(columns[0]);
+ }
+ });
+ }
+ });
+ $widgetName.append($seriesPickerElem);
+ app.mount($seriesPickerElem.children()[0]);
+ return app;
+ }
+
+ var seriesPickerApp;
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onMounted"])(function () {
+ seriesPickerApp = createSeriesPicker();
+ });
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onBeforeUnmount"])(function () {
+ $(root.value).closest('.widgetContent').off('widget:destroy').off('widget:reload');
+ $(root.value).closest('div.widget').find('.single-metric-view-picker').remove();
+ seriesPickerApp.unmount();
+ });
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
+ return props.metric;
+ }, function () {
+ onMetricChanged(props.metric);
+ });
+ onMetricChanged(props.metric);
+ return {
+ root: root,
+ metricValue: metricValue,
+ isLoading: isLoading,
+ selectedColumns: selectedColumns,
+ responses: responses,
+ metricValueUnformatted: metricValueUnformatted,
+ pastValueUnformatted: pastValueUnformatted,
+ metricChangePercent: metricChangePercent,
+ pastValue: pastValue,
+ metricTranslation: metricTranslation,
+ metricDocumentation: metricDocumentation,
+ sparklineParams: sparklineParams,
+ pastPeriod: pastPeriod,
+ selectableColumns: selectableColumns,
+ currentPeriod: currentPeriod
+ };
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue
+
+
+
+SingleMetricViewvue_type_script_lang_ts.render = SingleMetricViewvue_type_template_id_2e2e889f_render
+
+/* harmony default export */ var SingleMetricView = (SingleMetricViewvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.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 SingleMetricView_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: SingleMetricView,
+ scope: {
+ metric: {
+ angularJsBind: '<'
+ },
+ idGoal: {
+ angularJsBind: '<'
+ },
+ metricTranslations: {
+ angularJsBind: '<'
+ },
+ metricDocumentations: {
+ angularJsBind: '<'
+ },
+ goals: {
+ angularJsBind: '<'
+ },
+ goalMetrics: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'piwikSingleMetricView',
+ restrict: 'E',
+ postCreate: function postCreate(vm, scope, element) {
+ element.closest('.widgetContent').on('widget:destroy', function () {
+ scope.$parent.$destroy();
+ }).on('widget:reload', function () {
+ scope.$parent.$destroy();
+ });
+ }
+}));
+// CONCATENATED MODULE: ./plugins/CoreVisualizations/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=CoreVisualizations.umd.js.map \ No newline at end of file
diff --git a/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.min.js b/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.min.js
new file mode 100644
index 0000000000..f13b9f8384
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/dist/CoreVisualizations.umd.min.js
@@ -0,0 +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["CoreVisualizations"]=t(require("CoreHome"),require("vue")):e["CoreVisualizations"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.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 o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));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/CoreVisualizations/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,"SeriesPicker",(function(){return h})),n.d(t,"SingleMetricView",(function(){return T})),"undefined"!==typeof window){var r=window.document.currentScript,o=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var c=n("19dc"),a=n("8bbf"),l={key:0,class:"jqplot-seriespicker-popover"},i={class:"headline"},u=["onClick"],s=["type","checked"],d={key:0,class:"headline recordsToPlot"},m=["onClick"],p=["type","checked"];function f(e,t,n,r,o,c){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["jqplot-seriespicker",{open:e.isPopupVisible}]),onMouseenter:t[1]||(t[1]=function(t){return e.isPopupVisible=!0}),onMouseleave:t[2]||(t[2]=function(t){return e.onLeavePopup()})},[Object(a["createElementVNode"])("a",{href:"#",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(){}),["prevent","stop"]))}," + "),e.isPopupVisible?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",l,[Object(a["createElementVNode"])("p",i,Object(a["toDisplayString"])(e.translate(e.multiselect?"General_MetricsToPlot":"General_MetricToPlot")),1),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.selectableColumns,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{class:"pickColumn",onClick:function(n){return e.optionSelected(t.column,e.columnStates)},key:t.column},[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{class:"select",type:e.multiselect?"checkbox":"radio",checked:!!e.columnStates[t.column]},null,8,s),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(t.translation),1)])],8,u)})),128)),e.selectableRows.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",d,Object(a["toDisplayString"])(e.translate("General_RecordsToPlot")),1)):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.selectableRows,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{class:"pickRow",onClick:function(n){return e.optionSelected(t.matcher,e.rowStates)},key:t.matcher},[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{class:"select",type:e.multiselect?"checkbox":"radio",checked:!!e.rowStates[t.matcher]},null,8,p),Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(t.label),1)])],8,m)})),128))])):Object(a["createCommentVNode"])("",!0)],34)}function b(e,t){var n={};return e.forEach((function(e){var t=e.column||e.matcher;n[t]=!1})),t.forEach((function(e){n[e]=!0})),n}function v(e,t){return e.length===t.length&&0===e.filter((function(e){return-1===t.indexOf(e)})).length}function g(e){Object.keys(e).forEach((function(t){e[t]=!1}))}function j(e){return Object.keys(e).filter((function(t){return!!e[t]}))}var O=Object(a["defineComponent"])({props:{multiselect:Boolean,selectableColumns:{type:Array,default:function(){return[]}},selectableRows:{type:Array,default:function(){return[]}},selectedColumns:{type:Array,default:function(){return[]}},selectedRows:{type:Array,default:function(){return[]}}},data:function(){return{isPopupVisible:!1,columnStates:b(this.selectableColumns,this.selectedColumns),rowStates:b(this.selectableRows,this.selectedRows)}},emits:["select"],created:function(){this.optionSelected=Object(c["debounce"])(this.optionSelected,0)},methods:{optionSelected:function(e,t){this.multiselect||(g(this.columnStates),g(this.rowStates)),t[e]=!t[e],this.triggerOnSelectAndClose()},onLeavePopup:function(){this.isPopupVisible=!1,this.optionsChanged()&&this.triggerOnSelectAndClose()},triggerOnSelectAndClose:function(){this.isPopupVisible=!1,this.$emit("select",{columns:j(this.columnStates),rows:j(this.rowStates)})},optionsChanged:function(){return!v(j(this.columnStates),this.selectedColumns)||!v(j(this.rowStates),this.selectedRows)}}});O.render=f;var h=O,y=(Object(c["createAngularJsAdapter"])({component:h,scope:{multiselect:{angularJsBind:"<"},selectableColumns:{angularJsBind:"<"},selectableRows:{angularJsBind:"<"},selectedColumns:{angularJsBind:"<"},selectedRows:{angularJsBind:"<"},onSelect:{angularJsBind:"&",vue:"select"}},directiveName:"piwikSeriesPicker",restrict:"E"}),{class:"metric-sparkline"}),w={class:"metric-value"},S=["title"],k=["title"];
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */function C(e,t,n,r,o,c){var l=Object(a["resolveComponent"])("Sparkline");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["singleMetricView",{loading:e.isLoading}]),ref:"root"},[Object(a["createElementVNode"])("div",y,[Object(a["createVNode"])(l,{params:e.sparklineParams},null,8,["params"])]),Object(a["createElementVNode"])("div",w,[Object(a["createElementVNode"])("span",{title:e.metricDocumentation},[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.metricValue),1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])((e.metricTranslation||"").toLowerCase()),1)],8,S),null!==e.pastValue?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"metricEvolution",title:e.translate("General_EvolutionSummaryGeneric",e.metricValue,e.currentPeriod,e.pastValue,e.pastPeriod,e.metricChangePercent)},[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"positive-evolution":e.metricValueUnformatted>e.pastValueUnformatted,"negative-evolution":e.metricValueUnformatted<e.pastValueUnformatted})},Object(a["toDisplayString"])(e.metricChangePercent),3)],8,k)):Object(a["createCommentVNode"])("",!0)])],2)}function V(e,t){return N(e)||M(e,t)||P(e,t)||E()}function E(){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 P(e,t){if(e){if("string"===typeof e)return B(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)?B(e,t):void 0}}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function M(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,c=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(r=n.next()).done);a=!0)if(c.push(r.value),t&&c.length===t)break}catch(i){l=!0,o=i}finally{try{a||null==n["return"]||n["return"]()}finally{if(l)throw o}}return c}}function N(e){if(Array.isArray(e))return e}function A(){var e=c["Range"].getLastNRange(c["Matomo"].period,2,c["Matomo"].currentDateString),t=e.startDate,n=c["Periods"].get(c["Matomo"].period).parse(t).getDateRange();return"".concat(Object(c["format"])(n[0]),",").concat(Object(c["format"])(n[1]))}var _=window,D=_.$,x=Object(a["defineComponent"])({props:{metric:{type:String,required:!0},idGoal:[String,Number],metricTranslations:{type:Object,required:!0},metricDocumentations:Object,goals:{type:Object,required:!0},goalMetrics:Array},components:{Sparkline:c["Sparkline"]},setup:function(e){var t=Object(a["ref"])(null),n=Object(a["ref"])(!1),r=Object(a["ref"])(null),o=Object(a["ref"])(e.metric),l=Object(a["ref"])(e.idGoal),i=Object(a["computed"])((function(){return[l.value?"goal".concat(l.value,"_").concat(o.value):o.value]})),u=Object(a["computed"])((function(){var e;return null!==(e=r.value)&&void 0!==e&&e[1]?r.value[1][o.value]:null})),s=Object(a["computed"])((function(){var e;return null!==(e=r.value)&&void 0!==e&&e[2]?r.value[2][o.value]||0:null})),d=Object(a["computed"])((function(){if(!u.value)return null;var e="string"===typeof u.value?parseInt(u.value,10):u.value,t="string"===typeof s.value?parseInt(s.value,10):s.value,n=c["Matomo"].helper.calculateEvolution(e,t);return"".concat((100*n).toFixed(2)," %")})),m=Object(a["computed"])((function(){var e;if(null===(e=r.value)||void 0===e||!e[3])return null;var t=r.value[3];return t[o.value]||0})),p=Object(a["computed"])((function(){var e;if(null===(e=r.value)||void 0===e||!e[0])return null;var t=r.value[0];return t[o.value]||0})),f=Object(a["computed"])((function(){var t;return null!==(t=e.metricTranslations)&&void 0!==t&&t[o.value]?e.metricTranslations[o.value]:""})),b=Object(a["computed"])((function(){var t;return null!==(t=e.metricDocumentations)&&void 0!==t&&t[o.value]?e.metricDocumentations[o.value]:""})),v=Object(a["computed"])((function(){return c["Matomo"].startDateString===c["Matomo"].endDateString?c["Matomo"].endDateString:"".concat(c["Matomo"].startDateString,", ").concat(c["Matomo"].endDateString)}));function g(){return l.value||0===l.value}var j,O=Object(a["computed"])((function(){var e={module:"API",action:"get",columns:o.value};return g()&&(e.idGoal=l.value,e.module="Goals"),e})),y=Object(a["computed"])((function(){if("range"!==c["Matomo"].period)return A()})),w=Object(a["computed"])((function(){var t=[];return Object.keys(e.metricTranslations).forEach((function(n){t.push({column:n,translation:e.metricTranslations[n]})})),Object.values(e.goals||{}).forEach((function(n){e.goalMetrics.forEach((function(r){t.push({column:"goal".concat(n.idgoal,"_").concat(r),translation:"".concat(n.name," - ").concat(e.metricTranslations[r])})}))})),t}));function S(){var n=f.value;if(g()){var r,o=(null===(r=e.goals[l.value])||void 0===r?void 0:r.name)||Object(c["translate"])("General_Unknown");n="".concat(o," - ").concat(n)}D(t.value).closest("div.widget").find(".widgetTop > .widgetName > span").text(n)}function k(){var e=c["Range"].getLastNRange(c["Matomo"].period,2,c["Matomo"].currentDateString);return Object(c["format"])(e.startDate)}function C(){n.value=!0;var e=[],t="API",o="get",a={};g()&&(a.idGoal=l.value,a.filter_add_columns_when_show_all_columns=0,t="Goals",o="get");var i="".concat(t,".").concat(o);return e.push(c["AjaxHelper"].fetch(Object.assign({method:i,format_metrics:"all"},a))),"range"!==c["Matomo"].period&&(e.push(c["AjaxHelper"].fetch(Object.assign({method:i,format_metrics:"0"},a))),e.push(c["AjaxHelper"].fetch(Object.assign({method:i,date:k(),format_metrics:"0"},a))),e.push(c["AjaxHelper"].fetch(Object.assign({method:i,date:k(),format_metrics:"all"},a)))),Promise.all(e).then((function(e){r.value=e,n.value=!1}))}function E(e){o.value=e,C().then(S),D(t.value).closest("[widgetId]").trigger("setParameters",{column:o.value,idGoal:l.value})}function P(e){var t=void 0,n=e,r=e.match(/^goal([0-9]+)_(.*)/);if(r){t=+r[1];var c=V(r,3);n=c[2]}o.value===n&&t===l.value||(o.value=n,l.value=t,E(n))}function B(){var e=D(t.value),n=e.closest("div.widget").find(".widgetTop > .widgetName"),r=D('<div class="single-metric-view-picker"><div></div></div>'),o=Object(c["createVueApp"])({render:function(){return Object(a["createVNode"])(h,{multiselect:!1,selectableColumns:w.value,selectableRows:[],selectedColumns:i.value,selectedRows:[],onSelect:function(e){var t=e.columns;P(t[0])}})}});return n.append(r),o.mount(r.children()[0]),o}return Object(a["onMounted"])((function(){j=B()})),Object(a["onBeforeUnmount"])((function(){D(t.value).closest(".widgetContent").off("widget:destroy").off("widget:reload"),D(t.value).closest("div.widget").find(".single-metric-view-picker").remove(),j.unmount()})),Object(a["watch"])((function(){return e.metric}),(function(){E(e.metric)})),E(e.metric),{root:t,metricValue:p,isLoading:n,selectedColumns:i,responses:r,metricValueUnformatted:u,pastValueUnformatted:s,metricChangePercent:d,pastValue:m,metricTranslation:f,metricDocumentation:b,sparklineParams:O,pastPeriod:y,selectableColumns:w,currentPeriod:v}}});x.render=C;var T=x;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(c["createAngularJsAdapter"])({component:T,scope:{metric:{angularJsBind:"<"},idGoal:{angularJsBind:"<"},metricTranslations:{angularJsBind:"<"},metricDocumentations:{angularJsBind:"<"},goals:{angularJsBind:"<"},goalMetrics:{angularJsBind:"<"}},directiveName:"piwikSingleMetricView",restrict:"E",postCreate:function(e,t,n){n.closest(".widgetContent").on("widget:destroy",(function(){t.$parent.$destroy()})).on("widget:reload",(function(){t.$parent.$destroy()}))}})}})}));
+//# sourceMappingURL=CoreVisualizations.umd.min.js.map \ No newline at end of file
diff --git a/plugins/CoreVisualizations/vue/dist/umd.metadata.json b/plugins/CoreVisualizations/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..9ecfcc0456
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/dist/umd.metadata.json
@@ -0,0 +1,5 @@
+{
+ "dependsOn": [
+ "CoreHome"
+ ]
+} \ No newline at end of file
diff --git a/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.adapter.ts b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.adapter.ts
new file mode 100644
index 0000000000..31a253be25
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.adapter.ts
@@ -0,0 +1,36 @@
+/*!
+ * 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 SeriesPicker from './SeriesPicker.vue';
+
+export default createAngularJsAdapter({
+ component: SeriesPicker,
+ scope: {
+ multiselect: {
+ angularJsBind: '<',
+ },
+ selectableColumns: {
+ angularJsBind: '<',
+ },
+ selectableRows: {
+ angularJsBind: '<',
+ },
+ selectedColumns: {
+ angularJsBind: '<',
+ },
+ selectedRows: {
+ angularJsBind: '<',
+ },
+ onSelect: {
+ angularJsBind: '&',
+ vue: 'select',
+ },
+ },
+ directiveName: 'piwikSeriesPicker',
+ restrict: 'E',
+});
diff --git a/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.less b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.less
new file mode 100644
index 0000000000..656c602ce7
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.less
@@ -0,0 +1,30 @@
+piwik-series-picker {
+ display: inline-block;
+}
+
+.jqplot-seriespicker {
+ display: inline-block;
+
+ &:not(.open) {
+ opacity: .55;
+ }
+
+ &.open { // while open, make sure we're above other series picker icons
+ z-index: 1000;
+ }
+
+ > a {
+ display: inline-block;
+ opacity: 0;
+ position: absolute;
+ }
+
+ position: relative;
+}
+
+.jqplot-seriespicker-popover {
+ position: absolute;
+
+ top: -3px;
+ left: -4px;
+}
diff --git a/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue
new file mode 100644
index 0000000000..4c4e433a85
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/src/SeriesPicker/SeriesPicker.vue
@@ -0,0 +1,192 @@
+<!--
+ 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="jqplot-seriespicker"
+ @mouseenter="isPopupVisible = true"
+ @mouseleave="onLeavePopup()"
+ :class="{open: isPopupVisible}"
+ >
+ <a
+ href="#"
+ @click.prevent.stop
+ >
+ +
+ </a>
+ <div
+ class="jqplot-seriespicker-popover"
+ v-if="isPopupVisible"
+ >
+ <p class="headline">
+ {{ translate(multiselect ? 'General_MetricsToPlot' : 'General_MetricToPlot') }}</p>
+ <p
+ class="pickColumn"
+ @click="optionSelected(columnConfig.column, columnStates)"
+ v-for="columnConfig in selectableColumns"
+ :key="columnConfig.column"
+ >
+ <label>
+ <input
+ class="select"
+ :type="multiselect ? 'checkbox' : 'radio'"
+ :checked="!!columnStates[columnConfig.column]"
+ />
+ <span>{{ columnConfig.translation }}</span>
+ </label>
+ </p>
+ <p
+ class="headline recordsToPlot"
+ v-if="selectableRows.length"
+ >
+ {{ translate('General_RecordsToPlot') }}
+ </p>
+ <p
+ class="pickRow"
+ @click="optionSelected(rowConfig.matcher, rowStates)"
+ v-for="rowConfig in selectableRows"
+ :key="rowConfig.matcher"
+ >
+ <label>
+ <input
+ class="select"
+ :type="multiselect ? 'checkbox' : 'radio'"
+ :checked="!!rowStates[rowConfig.matcher]"
+ />
+ <span>{{ rowConfig.label }}</span>
+ </label>
+ </p>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { debounce } from 'CoreHome';
+
+interface SelectableColumnInfo {
+ column: string;
+ translation: string;
+}
+
+interface SelectableRowInfo {
+ matcher: string;
+ label: string;
+}
+
+interface SeriesPickerState {
+ isPopupVisible: boolean;
+ columnStates: Record<string, boolean>;
+ rowStates: Record<string, boolean>;
+}
+
+function getInitialOptionStates(
+ allOptions: (SelectableColumnInfo | SelectableRowInfo)[],
+ selectedOptions: string[],
+) {
+ const states: Record<string, boolean> = {};
+ allOptions.forEach((columnConfig) => {
+ const name = (columnConfig as SelectableColumnInfo).column
+ || (columnConfig as SelectableRowInfo).matcher;
+ states[name] = false;
+ });
+ selectedOptions.forEach((column) => {
+ states[column] = true;
+ });
+ return states;
+}
+
+function arrayEqual<T>(lhs: T[], rhs: T[]) {
+ if (lhs.length !== rhs.length) {
+ return false;
+ }
+
+ return lhs.filter((element) => rhs.indexOf(element) === -1).length === 0;
+}
+
+function unselectOptions(optionStates: Record<string, boolean>) {
+ Object.keys(optionStates).forEach((optionName) => {
+ optionStates[optionName] = false;
+ });
+}
+
+function getSelected(optionStates: Record<string, boolean>) {
+ return Object.keys(optionStates).filter((optionName) => !!optionStates[optionName]);
+}
+
+export default defineComponent({
+ props: {
+ multiselect: Boolean,
+ selectableColumns: {
+ type: Array,
+ default: () => [],
+ },
+ selectableRows: {
+ type: Array,
+ default: () => [],
+ },
+ selectedColumns: {
+ type: Array,
+ default: () => [],
+ },
+ selectedRows: {
+ type: Array,
+ default: () => [],
+ },
+ },
+ data(): SeriesPickerState {
+ return {
+ isPopupVisible: false,
+ columnStates: getInitialOptionStates(
+ this.selectableColumns as SelectableColumnInfo[],
+ this.selectedColumns as string[],
+ ),
+ rowStates: getInitialOptionStates(
+ this.selectableRows as SelectableRowInfo[],
+ this.selectedRows as string[],
+ ),
+ };
+ },
+ emits: ['select'],
+ created() {
+ this.optionSelected = debounce(this.optionSelected, 0);
+ },
+ methods: {
+ optionSelected(optionValue: string, optionStates: Record<string, boolean>) {
+ if (!this.multiselect) {
+ unselectOptions(this.columnStates);
+ unselectOptions(this.rowStates);
+ }
+
+ optionStates[optionValue] = !optionStates[optionValue];
+ this.triggerOnSelectAndClose();
+ },
+ onLeavePopup() {
+ this.isPopupVisible = false;
+
+ if (this.optionsChanged()) {
+ this.triggerOnSelectAndClose();
+ }
+ },
+ triggerOnSelectAndClose() {
+ this.isPopupVisible = false;
+ this.$emit('select', {
+ columns: getSelected(this.columnStates),
+ rows: getSelected(this.rowStates),
+ });
+ },
+ optionsChanged() {
+ return !arrayEqual(
+ getSelected(this.columnStates),
+ this.selectedColumns,
+ ) || !arrayEqual(
+ getSelected(this.rowStates),
+ this.selectedRows,
+ );
+ },
+ },
+});
+</script>
diff --git a/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.adapter.ts b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.adapter.ts
new file mode 100644
index 0000000000..7091b9bb66
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.adapter.ts
@@ -0,0 +1,42 @@
+/*!
+ * 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 SingleMetricView from './SingleMetricView.vue';
+
+export default createAngularJsAdapter({
+ component: SingleMetricView,
+ scope: {
+ metric: {
+ angularJsBind: '<',
+ },
+ idGoal: {
+ angularJsBind: '<',
+ },
+ metricTranslations: {
+ angularJsBind: '<',
+ },
+ metricDocumentations: {
+ angularJsBind: '<',
+ },
+ goals: {
+ angularJsBind: '<',
+ },
+ goalMetrics: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'piwikSingleMetricView',
+ restrict: 'E',
+ postCreate(vm, scope, element) {
+ element.closest('.widgetContent').on('widget:destroy', () => {
+ scope.$parent.$destroy();
+ }).on('widget:reload', () => {
+ scope.$parent.$destroy();
+ });
+ },
+});
diff --git a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.less b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.less
index f091b530e2..49d72536f2 100644
--- a/plugins/CoreVisualizations/angularjs/single-metric-view/single-metric-view.component.less
+++ b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.less
@@ -6,6 +6,10 @@
opacity: 0.5;
}
+ span, .metric-sparkline, .positive-evolution::before {
+ margin-right: 3.5px;
+ }
+
.metric-value {
display: inline-block;
font-size: 14px;
@@ -58,4 +62,5 @@
.single-metric-view-picker {
margin-left: 6px;
+ display: inline-block;
} \ No newline at end of file
diff --git a/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue
new file mode 100644
index 0000000000..a07c584673
--- /dev/null
+++ b/plugins/CoreVisualizations/vue/src/SingleMetricView/SingleMetricView.vue
@@ -0,0 +1,410 @@
+<!--
+ 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="singleMetricView"
+ :class="{'loading': isLoading}"
+ ref="root"
+ >
+ <div class="metric-sparkline">
+ <Sparkline :params="sparklineParams">
+ </Sparkline>
+ </div>
+ <div class="metric-value">
+ <span :title="metricDocumentation">
+ <strong>{{ metricValue }}</strong> {{ (metricTranslation || '').toLowerCase() }}
+ </span>
+ <span
+ class="metricEvolution"
+ v-if="pastValue !== null"
+ :title="translate(
+ 'General_EvolutionSummaryGeneric', metricValue, currentPeriod, pastValue,
+ pastPeriod, metricChangePercent)"
+ >
+ <span
+ :class="{
+ 'positive-evolution': metricValueUnformatted > pastValueUnformatted,
+ 'negative-evolution': metricValueUnformatted < pastValueUnformatted,
+ }"
+ >
+ {{ metricChangePercent }}
+ </span>
+ </span>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import {
+ computed,
+ createVNode,
+ defineComponent,
+ onBeforeUnmount,
+ onMounted,
+ ref,
+ watch,
+} from 'vue';
+import {
+ Matomo,
+ AjaxHelper,
+ Sparkline,
+ Range,
+ Periods,
+ format,
+ createVueApp, translate,
+} from 'CoreHome';
+import SeriesPicker from '../SeriesPicker/SeriesPicker.vue';
+
+interface SelectableColumnInfo {
+ column: string;
+ translation: string;
+}
+
+type MetricValues = Record<string, number|string>;
+
+interface Goal {
+ idgoal: string|number;
+ name: string;
+}
+
+function getPastPeriodStr(): string {
+ const { startDate } = Range.getLastNRange(Matomo.period!, 2, Matomo.currentDateString!);
+ const dateRange = Periods.get(Matomo.period!).parse(startDate).getDateRange();
+ return `${format(dateRange[0])},${format(dateRange[1])}`;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ metric: {
+ type: String,
+ required: true,
+ },
+ idGoal: [String, Number],
+ metricTranslations: {
+ type: Object,
+ required: true,
+ },
+ metricDocumentations: Object,
+ goals: {
+ type: Object,
+ required: true,
+ },
+ goalMetrics: Array,
+ },
+ components: {
+ Sparkline,
+ },
+ setup(props) {
+ const root = ref<HTMLElement|null>(null);
+
+ const isLoading = ref<boolean>(false);
+ const responses = ref<null|MetricValues[]>(null);
+ const actualMetric = ref<string>(props.metric);
+ const actualIdGoal = ref<string|number|undefined>(props.idGoal);
+
+ const selectedColumns = computed(() => [
+ actualIdGoal.value ? `goal${actualIdGoal.value}_${actualMetric.value}` : actualMetric.value,
+ ]);
+
+ const metricValueUnformatted = computed(() => {
+ if (!responses.value?.[1]) {
+ return null;
+ }
+
+ return responses.value[1][actualMetric.value];
+ });
+
+ const pastValueUnformatted = computed(() => {
+ if (!responses.value?.[2]) {
+ return null;
+ }
+
+ return responses.value[2][actualMetric.value] || 0;
+ });
+
+ const metricChangePercent = computed(() => {
+ if (!metricValueUnformatted.value) {
+ return null;
+ }
+
+ const currentValue: number = typeof metricValueUnformatted.value === 'string'
+ ? parseInt(metricValueUnformatted.value, 10)
+ : metricValueUnformatted.value as number;
+
+ const pastValue: number = typeof pastValueUnformatted.value === 'string'
+ ? parseInt(pastValueUnformatted.value, 10)
+ : pastValueUnformatted.value as number;
+
+ const evolution = Matomo.helper.calculateEvolution(currentValue, pastValue);
+
+ return `${(evolution * 100).toFixed(2)} %`;
+ });
+
+ const pastValue = computed(() => {
+ if (!responses.value?.[3]) {
+ return null;
+ }
+
+ const pastDataFormatted = responses.value[3];
+ return pastDataFormatted[actualMetric.value] || 0;
+ });
+
+ const metricValue = computed(() => {
+ if (!responses.value?.[0]) {
+ return null;
+ }
+
+ const currentData = responses.value[0];
+ return currentData[actualMetric.value] || 0;
+ });
+
+ const metricTranslation = computed(() => {
+ if (!props.metricTranslations?.[actualMetric.value]) {
+ return '';
+ }
+
+ return props.metricTranslations[actualMetric.value];
+ });
+
+ const metricDocumentation = computed(() => {
+ if (!props.metricDocumentations?.[actualMetric.value]) {
+ return '';
+ }
+
+ return props.metricDocumentations[actualMetric.value];
+ });
+
+ const currentPeriod = computed(() => {
+ if (Matomo.startDateString === Matomo.endDateString) {
+ return Matomo.endDateString;
+ }
+ return `${Matomo.startDateString}, ${Matomo.endDateString}`;
+ });
+
+ function isIdGoalSet() {
+ return actualIdGoal.value || actualIdGoal.value === 0;
+ }
+
+ const sparklineParams = computed<QueryParameters>(() => {
+ const params: QueryParameters = {
+ module: 'API',
+ action: 'get',
+ columns: actualMetric.value,
+ };
+
+ if (isIdGoalSet()) {
+ params.idGoal = actualIdGoal.value;
+ params.module = 'Goals';
+ }
+
+ return params;
+ });
+
+ const pastPeriod = computed(() => {
+ if (Matomo.period === 'range') {
+ return undefined;
+ }
+
+ return getPastPeriodStr();
+ });
+
+ const selectableColumns = computed(() => {
+ const result: SelectableColumnInfo[] = [];
+
+ Object.keys(props.metricTranslations).forEach((column) => {
+ result.push({
+ column,
+ translation: props.metricTranslations[column],
+ });
+ });
+
+ Object.values((props.goals || {}) as Record<string, Goal>).forEach((goal) => {
+ (props.goalMetrics as string[]).forEach((column) => {
+ result.push({
+ column: `goal${goal.idgoal}_${column}`,
+ translation: `${goal.name} - ${props.metricTranslations[column]}`,
+ });
+ });
+ });
+
+ return result;
+ });
+
+ function setWidgetTitle() {
+ let title = metricTranslation.value;
+
+ if (isIdGoalSet()) {
+ const goalName = props.goals[actualIdGoal.value!]?.name || translate('General_Unknown');
+ title = `${goalName} - ${title}`;
+ }
+
+ $(root.value as HTMLElement)
+ .closest('div.widget')
+ .find('.widgetTop > .widgetName > span')
+ .text(title);
+ }
+
+ function getLastPeriodDate(): string {
+ const range = Range.getLastNRange(Matomo.period!, 2, Matomo.currentDateString!);
+ return format(range.startDate);
+ }
+
+ function fetchData() {
+ isLoading.value = true;
+
+ const promises = [];
+ let apiModule = 'API';
+ let apiAction = 'get';
+ const extraParams: QueryParameters = {};
+
+ if (isIdGoalSet()) {
+ // the conversion rate added by the AddColumnsProcessedMetrics filter conflicts w/
+ // the goals one, so don't run it
+ extraParams.idGoal = actualIdGoal.value;
+
+ extraParams.filter_add_columns_when_show_all_columns = 0;
+ apiModule = 'Goals';
+ apiAction = 'get';
+ }
+
+ const method = `${apiModule}.${apiAction}`;
+
+ // first request for formatted data
+ promises.push(AjaxHelper.fetch({
+ method,
+ format_metrics: 'all',
+ ...extraParams,
+ }));
+
+ if (Matomo.period !== 'range') {
+ // second request for unformatted data so we can calculate evolution
+ promises.push(AjaxHelper.fetch({
+ method,
+ format_metrics: '0',
+ ...extraParams,
+ }));
+
+ // third request for past data (unformatted)
+ promises.push(AjaxHelper.fetch({
+ method,
+ date: getLastPeriodDate(),
+ format_metrics: '0',
+ ...extraParams,
+ }));
+
+ // fourth request for past data (formatted for tooltip display)
+ promises.push(AjaxHelper.fetch({
+ method,
+ date: getLastPeriodDate(),
+ format_metrics: 'all',
+ ...extraParams,
+ }));
+ }
+
+ return Promise.all(promises).then((r) => {
+ responses.value = r;
+ isLoading.value = false;
+ });
+ }
+
+ function onMetricChanged(newMetric: string) {
+ actualMetric.value = newMetric;
+
+ fetchData().then(setWidgetTitle); // notify widget of parameter change so it is replaced
+
+ $(root.value as HTMLElement).closest('[widgetId]').trigger('setParameters', {
+ column: actualMetric.value,
+ idGoal: actualIdGoal.value,
+ });
+ }
+
+ function setMetric(newColumn: string) {
+ let idGoal: number|undefined = undefined;
+ let actualColumn: string = newColumn;
+
+ const m = newColumn.match(/^goal([0-9]+)_(.*)/);
+ if (m) {
+ idGoal = +m[1];
+ [, , actualColumn] = m;
+ }
+
+ if (actualMetric.value !== actualColumn || idGoal !== actualIdGoal.value) {
+ actualMetric.value = actualColumn;
+ actualIdGoal.value = idGoal;
+ onMetricChanged(actualColumn);
+ }
+ }
+
+ function createSeriesPicker() {
+ const element = $(root.value as HTMLElement);
+ const $widgetName = element.closest('div.widget').find('.widgetTop > .widgetName');
+
+ const $seriesPickerElem = $('<div class="single-metric-view-picker"><div></div></div>');
+
+ const app = createVueApp({
+ render: () => createVNode(SeriesPicker, {
+ multiselect: false,
+ selectableColumns: selectableColumns.value,
+ selectableRows: [],
+ selectedColumns: selectedColumns.value,
+ selectedRows: [],
+ onSelect: ({ columns }: { columns: string[] }) => {
+ setMetric(columns[0]);
+ },
+ }),
+ });
+
+ $widgetName.append($seriesPickerElem);
+ app.mount($seriesPickerElem.children()[0]);
+ return app;
+ }
+
+ let seriesPickerApp: ReturnType<typeof createVueApp>;
+
+ onMounted(() => {
+ seriesPickerApp = createSeriesPicker();
+ });
+
+ onBeforeUnmount(() => {
+ $(root.value as HTMLElement)
+ .closest('.widgetContent')
+ .off('widget:destroy')
+ .off('widget:reload');
+ $(root.value as HTMLElement)
+ .closest('div.widget')
+ .find('.single-metric-view-picker')
+ .remove();
+ seriesPickerApp.unmount();
+ });
+
+ watch(() => props.metric, () => {
+ onMetricChanged(props.metric);
+ });
+ onMetricChanged(props.metric);
+
+ return {
+ root,
+ metricValue,
+ isLoading,
+ selectedColumns,
+ responses,
+ metricValueUnformatted,
+ pastValueUnformatted,
+ metricChangePercent,
+ pastValue,
+ metricTranslation,
+ metricDocumentation,
+ sparklineParams,
+ pastPeriod,
+ selectableColumns,
+ currentPeriod,
+ };
+ },
+});
+</script>
diff --git a/plugins/CoreVisualizations/vue/src/index.ts b/plugins/CoreVisualizations/vue/src/index.ts
new file mode 100644
index 0000000000..28caad2a5f
--- /dev/null
+++ b/plugins/CoreVisualizations/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 './SeriesPicker/SeriesPicker.adapter';
+import './SingleMetricView/SingleMetricView.adapter';
+
+export { default as SeriesPicker } from './SeriesPicker/SeriesPicker.vue';
+export { default as SingleMetricView } from './SingleMetricView/SingleMetricView.vue';
diff --git a/plugins/CoreVue/Commands/Build.php b/plugins/CoreVue/Commands/Build.php
index e7294bd8f4..a021f0de69 100644
--- a/plugins/CoreVue/Commands/Build.php
+++ b/plugins/CoreVue/Commands/Build.php
@@ -8,11 +8,10 @@
namespace Piwik\Plugins\CoreVue\Commands;
-use Piwik\AssetManager\UIAssetFetcher\JScriptUIAssetFetcher;
+use Piwik\AssetManager\UIAssetFetcher\PluginUmdAssetFetcher;
use Piwik\Container\StaticContainer;
use Piwik\Filesystem;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\MobileMessaging\SMSProvider\Development;
use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -63,7 +62,7 @@ class Build extends ConsoleCommand
}
}
- $plugins = JScriptUIAssetFetcher::orderPluginsByPluginDependencies($plugins);
+ $plugins = PluginUmdAssetFetcher::orderPluginsByPluginDependencies($plugins);
// remove webpack cache since it can result in strange builds if present
Filesystem::unlinkRecursive(PIWIK_INCLUDE_PATH . '/node_modules/.cache', true);
@@ -171,7 +170,7 @@ class Build extends ConsoleCommand
$vueIndexFile = $vueDir . '/src/index.ts';
if (!is_file($vueIndexFile)) {
- $logger->warning("NOTE: Plugin {plugin} has a vue folder but no webpack config, cannot build it.", ['plugin' => $plugin]);
+ $logger->warning("NOTE: Plugin {plugin} has a vue folder but no index.ts, cannot build it.", ['plugin' => $plugin]);
continue;
}
diff --git a/plugins/CoreVue/Commands/BuildPolyfill.php b/plugins/CoreVue/Commands/BuildPolyfill.php
index 902445b1cc..2a22b34288 100644
--- a/plugins/CoreVue/Commands/BuildPolyfill.php
+++ b/plugins/CoreVue/Commands/BuildPolyfill.php
@@ -41,7 +41,8 @@ class BuildPolyfill extends ConsoleCommand
$dir = PIWIK_INCLUDE_PATH . '/plugins/CoreVue/polyfills';
foreach (['development', 'production'] as $env) {
- $command = "cd '$dir' && " . Build::getVueCliServiceBin() . ' build --target app --mode ' . $env . ' --name MatomoPolyfills ./src/index.ts --dest ./dist';
+ $command = "cd '$dir' && BROWSERSLIST_IGNORE_OLD_DATA=1 FORCE_COLOR=1 " . Build::getVueCliServiceBin()
+ . ' build --target app --mode ' . $env . ' --name MatomoPolyfills ./src/index.ts --dest ./dist';
if ($env == 'production') {
$command .= ' --no-clean';
}
diff --git a/plugins/CoreVue/Commands/GenerateVueComponent.php b/plugins/CoreVue/Commands/GenerateVueComponent.php
index af091360d5..35849a397b 100644
--- a/plugins/CoreVue/Commands/GenerateVueComponent.php
+++ b/plugins/CoreVue/Commands/GenerateVueComponent.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\CoreVue\Commands;
-use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugin\Manager;
use Piwik\Plugins\CoreConsole\Commands\GenerateAngularConstructBase;
use Symfony\Component\Console\Input\InputInterface;
diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
index 3a672ee29f..4f6b0ae8be 100644
--- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
+++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.js
@@ -440,6 +440,17 @@ eval("var has = __webpack_require__(/*! ../internals/has */ \"./node_modules/cor
/***/ }),
+/***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js":
+/*!*******************************************************************!*\
+ !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***!
+ \*******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/correct-is-regexp-logic.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/correct-prototype-getter.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
@@ -873,6 +884,17 @@ eval("module.exports = false;\n\n\n//# sourceURL=webpack:///node_modules/core-js
/***/ }),
+/***/ "./node_modules/core-js/internals/is-regexp.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/core-js/internals/is-regexp.js ***!
+ \*****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/is-regexp.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/is-symbol.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-symbol.js ***!
@@ -985,6 +1007,17 @@ eval("\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./n
/***/ }),
+/***/ "./node_modules/core-js/internals/not-a-regexp.js":
+/*!********************************************************!*\
+ !*** ./node_modules/core-js/internals/not-a-regexp.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n\n\n//# sourceURL=webpack:///node_modules/core-js/internals/not-a-regexp.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/internals/object-assign.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/object-assign.js ***!
@@ -1596,6 +1629,18 @@ eval("var $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/co
/***/ }),
+/***/ "./node_modules/core-js/modules/es.array.includes.js":
+/*!***********************************************************!*\
+ !*** ./node_modules/core-js/modules/es.array.includes.js ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar $includes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\").includes;\nvar addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ \"./node_modules/core-js/internals/add-to-unscopables.js\");\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.array.includes.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.array.iterator.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/modules/es.array.iterator.js ***!
@@ -1723,6 +1768,18 @@ eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/
/***/ }),
+/***/ "./node_modules/core-js/modules/es.string.includes.js":
+/*!************************************************************!*\
+ !*** ./node_modules/core-js/modules/es.string.includes.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ \"./node_modules/core-js/internals/not-a-regexp.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ \"./node_modules/core-js/internals/correct-is-regexp-logic.js\");\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.string.includes.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.string.iterator.js":
/*!************************************************************!*\
!*** ./node_modules/core-js/modules/es.string.iterator.js ***!
@@ -1747,6 +1804,18 @@ eval("\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals
/***/ }),
+/***/ "./node_modules/core-js/modules/es.string.split.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/core-js/modules/es.string.split.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\");\nvar isRegExp = __webpack_require__(/*! ../internals/is-regexp */ \"./node_modules/core-js/internals/is-regexp.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\nvar speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ \"./node_modules/core-js/internals/species-constructor.js\");\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toString = __webpack_require__(/*! ../internals/to-string */ \"./node_modules/core-js/internals/to-string.js\");\nvar callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\nvar regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ \"./node_modules/core-js/internals/regexp-exec.js\");\nvar stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ \"./node_modules/core-js/internals/regexp-sticky-helpers.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n\n\n//# sourceURL=webpack:///node_modules/core-js/modules/es.string.split.js");
+
+/***/ }),
+
/***/ "./node_modules/core-js/modules/es.string.trim.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.trim.js ***!
@@ -1836,7 +1905,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.entries.js */ \"./node_modules/core-js/modules/es.object.entries.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.values.js */ \"./node_modules/core-js/modules/es.object.values.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ \"./node_modules/core-js/modules/es.object.from-entries.js\");\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"./node_modules/core-js/modules/es.array.reduce.js\");\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! abortcontroller-polyfill/dist/abortcontroller-polyfill-only */ \"./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./jqueryNativeEventTrigger */ \"./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_16__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*!\n * Matomo - free/libre analytics platform\n *\n * @link https://matomo.org\n * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later\n */\n\n/* eslint-disable */\n// this is a dummy file used to compile core-js polyfills so we don't have to include them in any\n// other file.\n\n\n\nwindow.tslib = tslib__WEBPACK_IMPORTED_MODULE_14__; // fromEntries does not have a polyfill in @vue/cli-plugin-babel/preset\n\nObject.fromEntries = function fromEntries(it) {\n return Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(it).reduce(function (result, _ref) {\n var _ref2 = Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n result[key] = value;\n return result;\n }, {});\n};\n\n\n\nfunction htmlDecode(value) {\n var textArea = document.createElement('textarea');\n textArea.innerHTML = value;\n return textArea.value;\n}\n\nvar invisibleCharEncoded = htmlDecode('&#8291;'); // modify Vue's escaping functionality to also escape angularjs {{ fields.\n// vue doesn't do this since it doesn't have this problem;\n\nvar oldToDisplayString = window.Vue.toDisplayString;\n\nwindow.Vue.toDisplayString = function matomoToDisplayString(val) {\n var result = oldToDisplayString.call(this, val);\n result = result.replace(/{{/g, \"{\".concat(invisibleCharEncoded, \"{\"));\n return result;\n};\n\nwindow.vueSanitize = function vueSanitize(val) {\n var result = dompurify__WEBPACK_IMPORTED_MODULE_13___default.a.sanitize(val);\n result = result.replace(/{{/g, '{&#8291;{');\n return result;\n};\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/index.ts");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.array.iterator.js */ \"./node_modules/core-js/modules/es.array.iterator.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.js */ \"./node_modules/core-js/modules/es.promise.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.assign.js */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_assign_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.promise.finally.js */ \"./node_modules/core-js/modules/es.promise.finally.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_promise_finally_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.entries.js */ \"./node_modules/core-js/modules/es.object.entries.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_entries_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.object.values.js */ \"./node_modules/core-js/modules/es.object.values.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_object_values_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/core-js/modules/es.string.trim.js */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var _home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_home_dizzy_Projects_matomo_node_modules_core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.object.from-entries.js */ \"./node_modules/core-js/modules/es.object.from-entries.js\");\n/* harmony import */ var core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_from_entries_js__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.array.reduce.js */ \"./node_modules/core-js/modules/es.array.reduce.js\");\n/* harmony import */ var core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reduce_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ \"./node_modules/core-js/modules/es.regexp.exec.js\");\n/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ \"./node_modules/core-js/modules/es.array.includes.js\");\n/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ \"./node_modules/core-js/modules/es.string.includes.js\");\n/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! dompurify */ \"./node_modules/dompurify/dist/purify.js\");\n/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! abortcontroller-polyfill/dist/abortcontroller-polyfill-only */ \"./node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js\");\n/* harmony import */ var abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(abortcontroller_polyfill_dist_abortcontroller_polyfill_only__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./jqueryNativeEventTrigger */ \"./plugins/CoreVue/polyfills/src/jqueryNativeEventTrigger.ts\");\n/* harmony import */ var _jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_jqueryNativeEventTrigger__WEBPACK_IMPORTED_MODULE_19__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*!\n * Matomo - free/libre analytics platform\n *\n * @link https://matomo.org\n * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later\n */\n\n/* eslint-disable */\n// this is a dummy file used to compile core-js polyfills so we don't have to include them in any\n// other file.\n\n\n\nwindow.tslib = tslib__WEBPACK_IMPORTED_MODULE_17__; // fromEntries does not have a polyfill in @vue/cli-plugin-babel/preset\n\nObject.fromEntries = function fromEntries(it) {\n return Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(it).reduce(function (result, _ref) {\n var _ref2 = Object(_home_dizzy_Projects_matomo_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n result[key] = value;\n return result;\n }, {});\n};\n\n\n\nfunction htmlDecode(value) {\n var textArea = document.createElement('textarea');\n textArea.innerHTML = value;\n return textArea.value;\n}\n\nvar invisibleCharEncoded = htmlDecode('&#8291;'); // modify Vue's escaping functionality to also escape angularjs {{ fields.\n// vue doesn't do this since it doesn't have this problem;\n\nvar oldToDisplayString = window.Vue.toDisplayString;\n\nwindow.Vue.toDisplayString = function matomoToDisplayString(val) {\n var result = oldToDisplayString.call(this, val);\n result = result.replace(/{{/g, \"{\".concat(invisibleCharEncoded, \"{\"));\n return result;\n};\n\nfunction hasSafeRel(rel) {\n var parts = rel.split(/\\s+/);\n return parts.includes('noopener') && parts.includes('noreferrer');\n} // remove target=_blank if a link doesn't have noopener noreferrer\n\n\ndompurify__WEBPACK_IMPORTED_MODULE_16___default.a.addHook('afterSanitizeAttributes', function (node) {\n if (node.hasAttribute('target') && node.getAttribute('target') === '_blank' && (!node.hasAttribute('rel') || !hasSafeRel(node.getAttribute('rel')))) {\n node.removeAttribute('target');\n }\n});\n\nwindow.vueSanitize = function vueSanitize(val) {\n var result = dompurify__WEBPACK_IMPORTED_MODULE_16___default.a.sanitize(val, {\n ADD_ATTR: ['target']\n });\n result = result.replace(/{{/g, '{&#8291;{');\n return result;\n};\n\n//# sourceURL=webpack:///plugins/CoreVue/polyfills/src/index.ts");
/***/ }),
diff --git a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
index d5740050dd..385502fa8c 100644
--- a/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
+++ b/plugins/CoreVue/polyfills/dist/MatomoPolyfills.min.js
@@ -1,17 +1,17 @@
-(function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s="452c")})({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"057f":function(t,e,n){var r=n("fc6a"),o=n("241c").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("a04b"),u=n("5135"),f=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=c(e),f)try{return l(t,e)}catch(n){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},"07ac":function(t,e,n){var r=n("23e7"),o=n("6f53").values;r({target:"Object",stat:!0},{values:function(t){return o(t)}})},"0b42":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t){var e;return o(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!o(e.prototype)?r(e)&&(e=e[a],null===e&&(e=void 0)):e=void 0),void 0===e?Array:e}},"0cb2":function(t,e,n){var r=n("7b0b"),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,c=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,u,f,l){var s=n+t.length,p=u.length,d=c;return void 0!==f&&(f=r(f),d=a),i.call(l,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(s);case"<":a=f[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>p){var l=o(c/10);return 0===l?r:l<=p?void 0===u[l-1]?i.charAt(1):u[l-1]+i.charAt(1):r}a=u[c-1]}return void 0===a?"":a}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"107c":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},"13d5":function(t,e,n){"use strict";var r=n("23e7"),o=n("d58f").left,i=n("a640"),a=n("2d00"),c=n("605d"),u=i("reduce"),f=!c&&a>79&&a<83;r({target:"Array",proto:!0,forced:!u||f},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(u){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),u=n("2a62"),f=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,s,p,d,v,y,h,m=n&&n.that,b=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=a(e,m,1+b+x),S=function(t){return l&&u(l),new f(!0,t)},O=function(t){return b?(r(t),x?w(t[0],t[1],S):w(t[0],t[1])):x?w(t,S):w(t)};if(g)l=t;else{if(s=c(t),"function"!=typeof s)throw TypeError("Target is not iterable");if(o(s)){for(p=0,d=i(t.length);d>p;p++)if(v=O(t[p]),v&&v instanceof f)return v;return new f(!1)}l=s.call(t)}y=l.next;while(!(h=y.call(l)).done){try{v=O(h.value)}catch(T){throw u(l),T}if("object"==typeof v&&v&&v instanceof f)return v}return new f(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),u=n("e893"),f=n("94ca");t.exports=function(t,e){var n,l,s,p,d,v,y=t.target,h=t.global,m=t.stat;if(l=h?r:m?r[y]||c(y,{}):(r[y]||{}).prototype,l)for(s in e){if(d=e[s],t.noTargetGet?(v=o(l,s),p=v&&v.value):p=l[s],n=f(h?s:y+(m?".":"#")+s,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(l,s,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"24aa":function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2cf4":function(t,e,n){var r,o,i,a,c=n("da84"),u=n("d039"),f=n("0366"),l=n("1be4"),s=n("cc12"),p=n("1cdc"),d=n("605d"),v=c.setImmediate,y=c.clearImmediate,h=c.process,m=c.MessageChannel,b=c.Dispatch,g=0,x={},w="onreadystatechange";try{r=c.location}catch(A){}var S=function(t){if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},O=function(t){return function(){S(t)}},T=function(t){S(t.data)},_=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};v&&y||(v=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return x[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},y=function(t){delete x[t]},d?o=function(t){h.nextTick(O(t))}:b&&b.now?o=function(t){b.now(O(t))}:m&&!p?(i=new m,a=i.port2,i.port1.onmessage=T,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(_)?(o=_,c.addEventListener("message",T,!1)):o=w in s("script")?function(t){l.appendChild(s("script"))[w]=function(){l.removeChild(this),S(t)}}:function(t){setTimeout(O(t),0)}),t.exports={set:v,clear:y}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,u=i.Deno,f=c&&c.versions||u&&u.version,l=f&&f.v8;l?(r=l.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),c=r.length,u=0;while(c>u)o.f(t,n=r[u++],e[n]);return t}},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),c="String Iterator",u=i.set,f=i.getterFor(c);a(String,"String",(function(t){u(this,{type:c,string:o(t),index:0})}),(function(){var t,e=f(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"452c":function(t,e,n){"use strict";n.r(e);var r={};function o(t){if(Array.isArray(t))return t}n.r(r),n.d(r,"__extends",(function(){return m})),n.d(r,"__assign",(function(){return b})),n.d(r,"__rest",(function(){return g})),n.d(r,"__decorate",(function(){return x})),n.d(r,"__param",(function(){return w})),n.d(r,"__metadata",(function(){return S})),n.d(r,"__awaiter",(function(){return O})),n.d(r,"__generator",(function(){return T})),n.d(r,"__createBinding",(function(){return _})),n.d(r,"__exportStar",(function(){return A})),n.d(r,"__values",(function(){return E})),n.d(r,"__read",(function(){return j})),n.d(r,"__spread",(function(){return R})),n.d(r,"__spreadArrays",(function(){return P})),n.d(r,"__await",(function(){return k})),n.d(r,"__asyncGenerator",(function(){return I})),n.d(r,"__asyncDelegator",(function(){return L})),n.d(r,"__asyncValues",(function(){return M})),n.d(r,"__makeTemplateObject",(function(){return N})),n.d(r,"__importStar",(function(){return D})),n.d(r,"__importDefault",(function(){return C})),n.d(r,"__classPrivateFieldGet",(function(){return F})),n.d(r,"__classPrivateFieldSet",(function(){return U}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function i(t,e){var n=null==t?null:"undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i=[],a=!0,c=!1;try{for(n=n.call(t);!(a=(r=n.next()).done);a=!0)if(i.push(r.value),e&&i.length===e)break}catch(u){c=!0,o=u}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw o}}return i}}n("fb6a"),n("a630");function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){if(t){if("string"===typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}function u(){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 f(t,e){return o(t)||i(t,e)||c(t,e)||u()}function l(t){if(Array.isArray(t))return a(t)}function s(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function p(){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 d(t){return l(t)||s(t)||c(t)||p()}n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad"),n("07ac"),n("498a"),n("c1f9"),n("13d5"),n("ac1f"),n("5319");var v=n("c0c4"),y=n.n(v),h=function(t,e){return h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},h(t,e)};function m(t,e){function n(){this.constructor=t}h(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var b=function(){return b=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n],e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},b.apply(this,arguments)};function g(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n}function x(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function w(t,e){return function(n,r){e(n,r,t)}}function S(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function O(t,e,n,r){function o(t){return t instanceof n?t:new n((function(e){e(t)}))}return new(n||(n=Promise))((function(n,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function c(t){try{u(r["throw"](t))}catch(e){i(e)}}function u(t){t.done?n(t.value):o(t.value).then(a,c)}u((r=r.apply(t,e||[])).next())}))}function T(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"===typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(t){return function(e){return u([t,e])}}function u(i){if(n)throw new TypeError("Generator is already executing.");while(a)try{if(n=1,r&&(o=2&i[0]?r["return"]:i[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(o=a.trys,!(o=o.length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(c){i=[6,c],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}function _(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function A(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function E(t){var e="function"===typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"===typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{while((void 0===e||e-- >0)&&!(r=i.next()).done)a.push(r.value)}catch(c){o={error:c}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}function R(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(j(arguments[e]));return t}function P(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var i=arguments[e],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function k(t){return this instanceof k?(this.v=t,this):new k(t)}function I(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(t,e||[]),i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(t){o[t]&&(r[t]=function(e){return new Promise((function(n,r){i.push([t,e,n,r])>1||c(t,e)}))})}function c(t,e){try{u(o[t](e))}catch(n){s(i[0][3],n)}}function u(t){t.value instanceof k?Promise.resolve(t.value.v).then(f,l):s(i[0][2],t)}function f(t){c("next",t)}function l(t){c("throw",t)}function s(t,e){t(e),i.shift(),i.length&&c(i[0][0],i[0][1])}}function L(t){var e,n;return e={},r("next"),r("throw",(function(t){throw t})),r("return"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:k(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function M(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t="function"===typeof E?E(t):t[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){e=t[n](e),o(r,i,e.done,e.value)}))}}function o(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}}function N(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function D(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function C(t){return t&&t.__esModule?t:{default:t}}function F(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function U(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}n("772f"),n("a572");function z(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value}
+(function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s="452c")})({"00ee":function(t,e,n){var r=n("b622"),o=r("toStringTag"),i={};i[o]="z",t.exports="[object z]"===String(i)},"0366":function(t,e,n){var r=n("1c0b");t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 0:return function(){return t.call(e)};case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},"057f":function(t,e,n){var r=n("fc6a"),o=n("241c").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],c=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?c(t):o(r(t))}},"06cf":function(t,e,n){var r=n("83ab"),o=n("d1e7"),i=n("5c6c"),a=n("fc6a"),c=n("a04b"),u=n("5135"),f=n("0cfb"),l=Object.getOwnPropertyDescriptor;e.f=r?l:function(t,e){if(t=a(t),e=c(e),f)try{return l(t,e)}catch(n){}if(u(t,e))return i(!o.f.call(t,e),t[e])}},"07ac":function(t,e,n){var r=n("23e7"),o=n("6f53").values;r({target:"Object",stat:!0},{values:function(t){return o(t)}})},"0b42":function(t,e,n){var r=n("861d"),o=n("e8b5"),i=n("b622"),a=i("species");t.exports=function(t){var e;return o(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!o(e.prototype)?r(e)&&(e=e[a],null===e&&(e=void 0)):e=void 0),void 0===e?Array:e}},"0cb2":function(t,e,n){var r=n("7b0b"),o=Math.floor,i="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,c=/\$([$&'`]|\d{1,2})/g;t.exports=function(t,e,n,u,f,l){var s=n+t.length,p=u.length,d=c;return void 0!==f&&(f=r(f),d=a),i.call(l,d,(function(r,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,n);case"'":return e.slice(s);case"<":a=f[i.slice(1,-1)];break;default:var c=+i;if(0===c)return r;if(c>p){var l=o(c/10);return 0===l?r:l<=p?void 0===u[l-1]?i.charAt(1):u[l-1]+i.charAt(1):r}a=u[c-1]}return void 0===a?"":a}))}},"0cfb":function(t,e,n){var r=n("83ab"),o=n("d039"),i=n("cc12");t.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},"107c":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")}))},1276:function(t,e,n){"use strict";var r=n("d784"),o=n("44e7"),i=n("825a"),a=n("1d80"),c=n("4840"),u=n("8aa5"),f=n("50c4"),l=n("577e"),s=n("14c3"),p=n("9263"),d=n("9f7f"),v=n("d039"),h=d.UNSUPPORTED_Y,y=[].push,b=Math.min,m=4294967295,g=!v((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));r("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=l(a(this)),i=void 0===n?m:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!o(t))return e.call(r,t,i);var c,u,f,s=[],d=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,h=new RegExp(t.source,d+"g");while(c=p.call(h,r)){if(u=h.lastIndex,u>v&&(s.push(r.slice(v,c.index)),c.length>1&&c.index<r.length&&y.apply(s,c.slice(1)),f=c[0].length,v=u,s.length>=i))break;h.lastIndex===c.index&&h.lastIndex++}return v===r.length?!f&&h.test("")||s.push(""):s.push(r.slice(v)),s.length>i?s.slice(0,i):s}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var o=a(this),i=void 0==e?void 0:e[t];return void 0!==i?i.call(e,o,n):r.call(l(o),e,n)},function(t,o){var a=i(this),p=l(t),d=n(r,a,p,o,r!==e);if(d.done)return d.value;var v=c(a,RegExp),y=a.unicode,g=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(h?"g":"y"),x=new v(h?"^(?:"+a.source+")":a,g),w=void 0===o?m:o>>>0;if(0===w)return[];if(0===p.length)return null===s(x,p)?[p]:[];var S=0,O=0,T=[];while(O<p.length){x.lastIndex=h?0:O;var A,_=s(x,h?p.slice(O):p);if(null===_||(A=b(f(x.lastIndex+(h?O:0)),p.length))===S)O=u(p,O,y);else{if(T.push(p.slice(S,O)),T.length===w)return T;for(var E=1;E<=_.length-1;E++)if(T.push(_[E]),T.length===w)return T;O=S=A}}return T.push(p.slice(S)),T}]}),!g,h)},"13d5":function(t,e,n){"use strict";var r=n("23e7"),o=n("d58f").left,i=n("a640"),a=n("2d00"),c=n("605d"),u=i("reduce"),f=!c&&a>79&&a<83;r({target:"Array",proto:!0,forced:!u||f},{reduce:function(t){return o(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"14c3":function(t,e,n){var r=n("c6b6"),o=n("9263");t.exports=function(t,e){var n=t.exec;if("function"===typeof n){var i=n.call(t,e);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,e)}},"19aa":function(t,e){t.exports=function(t,e,n){if(!(t instanceof e))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return t}},"1be4":function(t,e,n){var r=n("d066");t.exports=r("document","documentElement")},"1c0b":function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},"1c7e":function(t,e,n){var r=n("b622"),o=r("iterator"),i=!1;try{var a=0,c={next:function(){return{done:!!a++}},return:function(){i=!0}};c[o]=function(){return this},Array.from(c,(function(){throw 2}))}catch(u){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var r={};r[o]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(u){}return n}},"1cdc":function(t,e,n){var r=n("342f");t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(r)},"1d80":function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},"1dde":function(t,e,n){var r=n("d039"),o=n("b622"),i=n("2d00"),a=o("species");t.exports=function(t){return i>=51||!r((function(){var e=[],n=e.constructor={};return n[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},2266:function(t,e,n){var r=n("825a"),o=n("e95a"),i=n("50c4"),a=n("0366"),c=n("35a1"),u=n("2a62"),f=function(t,e){this.stopped=t,this.result=e};t.exports=function(t,e,n){var l,s,p,d,v,h,y,b=n&&n.that,m=!(!n||!n.AS_ENTRIES),g=!(!n||!n.IS_ITERATOR),x=!(!n||!n.INTERRUPTED),w=a(e,b,1+m+x),S=function(t){return l&&u(l),new f(!0,t)},O=function(t){return m?(r(t),x?w(t[0],t[1],S):w(t[0],t[1])):x?w(t,S):w(t)};if(g)l=t;else{if(s=c(t),"function"!=typeof s)throw TypeError("Target is not iterable");if(o(s)){for(p=0,d=i(t.length);d>p;p++)if(v=O(t[p]),v&&v instanceof f)return v;return new f(!1)}l=s.call(t)}h=l.next;while(!(y=h.call(l)).done){try{v=O(y.value)}catch(T){throw u(l),T}if("object"==typeof v&&v&&v instanceof f)return v}return new f(!1)}},"23cb":function(t,e,n){var r=n("a691"),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},"23e7":function(t,e,n){var r=n("da84"),o=n("06cf").f,i=n("9112"),a=n("6eeb"),c=n("ce4e"),u=n("e893"),f=n("94ca");t.exports=function(t,e){var n,l,s,p,d,v,h=t.target,y=t.global,b=t.stat;if(l=y?r:b?r[h]||c(h,{}):(r[h]||{}).prototype,l)for(s in e){if(d=e[s],t.noTargetGet?(v=o(l,s),p=v&&v.value):p=l[s],n=f(y?s:h+(b?".":"#")+s,t.forced),!n&&void 0!==p){if(typeof d===typeof p)continue;u(d,p)}(t.sham||p&&p.sham)&&i(d,"sham",!0),a(l,s,d,t)}}},"241c":function(t,e,n){var r=n("ca84"),o=n("7839"),i=o.concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},"24aa":function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}t.exports=n},2532:function(t,e,n){"use strict";var r=n("23e7"),o=n("5a34"),i=n("1d80"),a=n("577e"),c=n("ab13");r({target:"String",proto:!0,forced:!c("includes")},{includes:function(t){return!!~a(i(this)).indexOf(a(o(t)),arguments.length>1?arguments[1]:void 0)}})},2626:function(t,e,n){"use strict";var r=n("d066"),o=n("9bf2"),i=n("b622"),a=n("83ab"),c=i("species");t.exports=function(t){var e=r(t),n=o.f;a&&e&&!e[c]&&n(e,c,{configurable:!0,get:function(){return this}})}},"2a62":function(t,e,n){var r=n("825a");t.exports=function(t){var e=t["return"];if(void 0!==e)return r(e.call(t)).value}},"2cf4":function(t,e,n){var r,o,i,a,c=n("da84"),u=n("d039"),f=n("0366"),l=n("1be4"),s=n("cc12"),p=n("1cdc"),d=n("605d"),v=c.setImmediate,h=c.clearImmediate,y=c.process,b=c.MessageChannel,m=c.Dispatch,g=0,x={},w="onreadystatechange";try{r=c.location}catch(_){}var S=function(t){if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},O=function(t){return function(){S(t)}},T=function(t){S(t.data)},A=function(t){c.postMessage(String(t),r.protocol+"//"+r.host)};v&&h||(v=function(t){var e=[],n=arguments.length,r=1;while(n>r)e.push(arguments[r++]);return x[++g]=function(){("function"==typeof t?t:Function(t)).apply(void 0,e)},o(g),g},h=function(t){delete x[t]},d?o=function(t){y.nextTick(O(t))}:m&&m.now?o=function(t){m.now(O(t))}:b&&!p?(i=new b,a=i.port2,i.port1.onmessage=T,o=f(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts&&r&&"file:"!==r.protocol&&!u(A)?(o=A,c.addEventListener("message",T,!1)):o=w in s("script")?function(t){l.appendChild(s("script"))[w]=function(){l.removeChild(this),S(t)}}:function(t){setTimeout(O(t),0)}),t.exports={set:v,clear:h}},"2d00":function(t,e,n){var r,o,i=n("da84"),a=n("342f"),c=i.process,u=i.Deno,f=c&&c.versions||u&&u.version,l=f&&f.v8;l?(r=l.split("."),o=r[0]<4?1:r[0]+r[1]):a&&(r=a.match(/Edge\/(\d+)/),(!r||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/),r&&(o=r[1]))),t.exports=o&&+o},"342f":function(t,e,n){var r=n("d066");t.exports=r("navigator","userAgent")||""},"35a1":function(t,e,n){var r=n("f5df"),o=n("3f8c"),i=n("b622"),a=i("iterator");t.exports=function(t){if(void 0!=t)return t[a]||t["@@iterator"]||o[r(t)]}},"37e8":function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("825a"),a=n("df75");t.exports=r?Object.defineProperties:function(t,e){i(t);var n,r=a(e),c=r.length,u=0;while(c>u)o.f(t,n=r[u++],e[n]);return t}},"3bbe":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},"3ca3":function(t,e,n){"use strict";var r=n("6547").charAt,o=n("577e"),i=n("69f3"),a=n("7dd0"),c="String Iterator",u=i.set,f=i.getterFor(c);a(String,"String",(function(t){u(this,{type:c,string:o(t),index:0})}),(function(){var t,e=f(this),n=e.string,o=e.index;return o>=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})}))},"3f8c":function(t,e){t.exports={}},"428f":function(t,e,n){var r=n("da84");t.exports=r},"44ad":function(t,e,n){var r=n("d039"),o=n("c6b6"),i="".split;t.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},"44d2":function(t,e,n){var r=n("b622"),o=n("7c73"),i=n("9bf2"),a=r("unscopables"),c=Array.prototype;void 0==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},"44de":function(t,e,n){var r=n("da84");t.exports=function(t,e){var n=r.console;n&&n.error&&(1===arguments.length?n.error(t):n.error(t,e))}},"44e7":function(t,e,n){var r=n("861d"),o=n("c6b6"),i=n("b622"),a=i("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==o(t))}},"452c":function(t,e,n){"use strict";n.r(e);var r={};function o(t){if(Array.isArray(t))return t}n.r(r),n.d(r,"__extends",(function(){return b})),n.d(r,"__assign",(function(){return m})),n.d(r,"__rest",(function(){return g})),n.d(r,"__decorate",(function(){return x})),n.d(r,"__param",(function(){return w})),n.d(r,"__metadata",(function(){return S})),n.d(r,"__awaiter",(function(){return O})),n.d(r,"__generator",(function(){return T})),n.d(r,"__createBinding",(function(){return A})),n.d(r,"__exportStar",(function(){return _})),n.d(r,"__values",(function(){return E})),n.d(r,"__read",(function(){return j})),n.d(r,"__spread",(function(){return R})),n.d(r,"__spreadArrays",(function(){return P})),n.d(r,"__await",(function(){return k})),n.d(r,"__asyncGenerator",(function(){return I})),n.d(r,"__asyncDelegator",(function(){return L})),n.d(r,"__asyncValues",(function(){return M})),n.d(r,"__makeTemplateObject",(function(){return N})),n.d(r,"__importStar",(function(){return D})),n.d(r,"__importDefault",(function(){return C})),n.d(r,"__classPrivateFieldGet",(function(){return F})),n.d(r,"__classPrivateFieldSet",(function(){return U}));n("a4d3"),n("e01a"),n("d3b7"),n("d28b"),n("3ca3"),n("ddb0");function i(t,e){var n=null==t?null:"undefined"!==typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i=[],a=!0,c=!1;try{for(n=n.call(t);!(a=(r=n.next()).done);a=!0)if(i.push(r.value),e&&i.length===e)break}catch(u){c=!0,o=u}finally{try{a||null==n["return"]||n["return"]()}finally{if(c)throw o}}return i}}n("fb6a"),n("a630");function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function c(t,e){if(t){if("string"===typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}function u(){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 f(t,e){return o(t)||i(t,e)||c(t,e)||u()}function l(t){if(Array.isArray(t))return a(t)}function s(t){if("undefined"!==typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function p(){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 d(t){return l(t)||s(t)||c(t)||p()}n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("4fad"),n("07ac"),n("498a"),n("c1f9"),n("13d5"),n("ac1f"),n("5319"),n("1276"),n("caad"),n("2532");var v=n("c0c4"),h=n.n(v),y=function(t,e){return y=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},y(t,e)};function b(t,e){function n(){this.constructor=t}y(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var m=function(){return m=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n],e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},m.apply(this,arguments)};function g(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n}function x(t,e,n,r){var o,i=arguments.length,a=i<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var c=t.length-1;c>=0;c--)(o=t[c])&&(a=(i<3?o(a):i>3?o(e,n,a):o(e,n))||a);return i>3&&a&&Object.defineProperty(e,n,a),a}function w(t,e){return function(n,r){e(n,r,t)}}function S(t,e){if("object"===typeof Reflect&&"function"===typeof Reflect.metadata)return Reflect.metadata(t,e)}function O(t,e,n,r){function o(t){return t instanceof n?t:new n((function(e){e(t)}))}return new(n||(n=Promise))((function(n,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function c(t){try{u(r["throw"](t))}catch(e){i(e)}}function u(t){t.done?n(t.value):o(t.value).then(a,c)}u((r=r.apply(t,e||[])).next())}))}function T(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"===typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(t){return function(e){return u([t,e])}}function u(i){if(n)throw new TypeError("Generator is already executing.");while(a)try{if(n=1,r&&(o=2&i[0]?r["return"]:i[0]?r["throw"]||((o=r["return"])&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(o=a.trys,!(o=o.length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(c){i=[6,c],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}}function A(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}function _(t,e){for(var n in t)"default"===n||e.hasOwnProperty(n)||(e[n]=t[n])}function E(t){var e="function"===typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"===typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function j(t,e){var n="function"===typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{while((void 0===e||e-- >0)&&!(r=i.next()).done)a.push(r.value)}catch(c){o={error:c}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}function R(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(j(arguments[e]));return t}function P(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var i=arguments[e],a=0,c=i.length;a<c;a++,o++)r[o]=i[a];return r}function k(t){return this instanceof k?(this.v=t,this):new k(t)}function I(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=n.apply(t,e||[]),i=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(t){o[t]&&(r[t]=function(e){return new Promise((function(n,r){i.push([t,e,n,r])>1||c(t,e)}))})}function c(t,e){try{u(o[t](e))}catch(n){s(i[0][3],n)}}function u(t){t.value instanceof k?Promise.resolve(t.value.v).then(f,l):s(i[0][2],t)}function f(t){c("next",t)}function l(t){c("throw",t)}function s(t,e){t(e),i.shift(),i.length&&c(i[0][0],i[0][1])}}function L(t){var e,n;return e={},r("next"),r("throw",(function(t){throw t})),r("return"),e[Symbol.iterator]=function(){return this},e;function r(r,o){e[r]=t[r]?function(e){return(n=!n)?{value:k(t[r](e)),done:"return"===r}:o?o(e):e}:o}}function M(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,n=t[Symbol.asyncIterator];return n?n.call(t):(t="function"===typeof E?E(t):t[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(n){e[n]=t[n]&&function(e){return new Promise((function(r,i){e=t[n](e),o(r,i,e.done,e.value)}))}}function o(t,e,n,r){Promise.resolve(r).then((function(e){t({value:e,done:n})}),e)}}function N(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function D(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function C(t){return t&&t.__esModule?t:{default:t}}function F(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function U(t,e,n){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,n),n}n("772f"),n("a572");function z(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.tslib=r,Object.fromEntries=function(t){return d(t).reduce((function(t,e){var n=f(e,2),r=n[0],o=n[1];return t[r]=o,t}),{})};var H=z("&#8291;"),B=window.Vue.toDisplayString;window.Vue.toDisplayString=function(t){var e=B.call(this,t);return e=e.replace(/{{/g,"{".concat(H,"{")),e},window.vueSanitize=function(t){var e=y.a.sanitize(t);return e=e.replace(/{{/g,"{&#8291;{"),e}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},"485a":function(t,e,n){var r=n("861d");t.exports=function(t,e){var n,o;if("string"===e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if("string"!==e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),l=i(a,f);if(t&&n!=n){while(f>l)if(c=u[l++],c!=c)return!0}else for(;f>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4df4":function(t,e,n){"use strict";var r=n("0366"),o=n("7b0b"),i=n("9bdd"),a=n("e95a"),c=n("50c4"),u=n("8418"),f=n("35a1");t.exports=function(t){var e,n,l,s,p,d,v=o(t),y="function"==typeof this?this:Array,h=arguments.length,m=h>1?arguments[1]:void 0,b=void 0!==m,g=f(v),x=0;if(b&&(m=r(m,h>2?arguments[2]:void 0,2)),void 0==g||y==Array&&a(g))for(e=c(v.length),n=new y(e);e>x;x++)d=b?m(v[x],x):v[x],u(n,x,d);else for(s=g.call(v),p=s.next,n=new y;!(l=p.call(s)).done;x++)d=b?i(s,m,[l.value,x],!0):l.value,u(n,x,d);return n.length=x,n}},"4fad":function(t,e,n){var r=n("23e7"),o=n("6f53").entries;r({target:"Object",stat:!0},{entries:function(t){return o(t)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("d039"),i=n("825a"),a=n("a691"),c=n("50c4"),u=n("577e"),f=n("1d80"),l=n("8aa5"),s=n("0cb2"),p=n("14c3"),d=n("b622"),v=d("replace"),y=Math.max,h=Math.min,m=function(t){return void 0===t?t:String(t)},b=function(){return"$0"==="a".replace(/./,"$0")}(),g=function(){return!!/./[v]&&""===/./[v]("a","$0")}(),x=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));r("replace",(function(t,e,n){var r=g?"$":"$0";return[function(t,n){var r=f(this),o=void 0==t?void 0:t[v];return void 0!==o?o.call(t,r,n):e.call(u(r),t,n)},function(t,o){var f=i(this),d=u(t);if("string"===typeof o&&-1===o.indexOf(r)&&-1===o.indexOf("$<")){var v=n(e,f,d,o);if(v.done)return v.value}var b="function"===typeof o;b||(o=u(o));var g=f.global;if(g){var x=f.unicode;f.lastIndex=0}var w=[];while(1){var S=p(f,d);if(null===S)break;if(w.push(S),!g)break;var O=u(S[0]);""===O&&(f.lastIndex=l(d,c(f.lastIndex),x))}for(var T="",_=0,A=0;A<w.length;A++){S=w[A];for(var E=u(S[0]),j=y(h(a(S.index),d.length),0),R=[],P=1;P<S.length;P++)R.push(m(S[P]));var k=S.groups;if(b){var I=[E].concat(R,j,d);void 0!==k&&I.push(k);var L=u(o.apply(void 0,I))}else L=s(E,d,j,R,k,o);j>=_&&(T+=d.slice(_,j)+L,_=j+E.length)}return T+d.slice(_)}]}),!x||!b||g)},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.16.3",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"577e":function(t,e,n){var r=n("d9b5");t.exports=function(t){if(r(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),o=n("577e"),i=n("5899"),a="["+i+"]",c=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),f=function(t){return function(e){var n=o(r(e));return 1&t&&(n=n.replace(c,"")),2&t&&(n=n.replace(u,"")),n}};t.exports={start:f(1),end:f(2),trim:f(3)}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6069:function(t,e){t.exports="object"==typeof window},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),u=n("7b0b"),f=n("44ad"),l=Object.assign,s=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=u(t),o=arguments.length,l=1,s=a.f,p=c.f;while(o>l){var d,v=f(arguments[l++]),y=s?i(v).concat(s(v)):i(v),h=y.length,m=0;while(h>m)d=y[m++],r&&!p.call(v,d)||(n[d]=v[d])}return n}:l},6547:function(t,e,n){var r=n("a691"),o=n("577e"),i=n("1d80"),a=function(t){return function(e,n){var a,c,u=o(i(e)),f=r(n),l=u.length;return f<0||f>=l?t?"":void 0:(a=u.charCodeAt(f),a<55296||a>56319||f+1===l||(c=u.charCodeAt(f+1))<56320||c>57343?t?u.charAt(f):a:t?u.slice(f,f+2):c-56320+(a-55296<<10)+65536)}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65f0":function(t,e,n){var r=n("0b42");t.exports=function(t,e){return new(r(t))(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),u=n("861d"),f=n("9112"),l=n("5135"),s=n("c6cd"),p=n("f772"),d=n("d012"),v="Object already initialized",y=c.WeakMap,h=function(t){return i(t)?o(t):r(t,{})},m=function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||s.state){var b=s.state||(s.state=new y),g=b.get,x=b.has,w=b.set;r=function(t,e){if(x.call(b,t))throw new TypeError(v);return e.facade=t,w.call(b,t,e),e},o=function(t){return g.call(b,t)||{}},i=function(t){return x.call(b,t)}}else{var S=p("state");d[S]=!0,r=function(t,e){if(l(t,S))throw new TypeError(v);return e.facade=t,f(t,S,e),e},o=function(t){return l(t,S)?t[S]:{}},i=function(t){return l(t,S)}}t.exports={set:r,get:o,has:i,enforce:h,getterFor:m}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),u=n("69f3"),f=u.get,l=u.enforce,s=String(String).split("String");(t.exports=function(t,e,n,c){var u,f=!!c&&!!c.unsafe,p=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),u=l(n),u.source||(u.source=s.join("string"==typeof e?e:""))),t!==r?(f?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||c(this)}))},"6f53":function(t,e,n){var r=n("83ab"),o=n("df75"),i=n("fc6a"),a=n("d1e7").f,c=function(t){return function(e){var n,c=i(e),u=o(c),f=u.length,l=0,s=[];while(f>l)n=u[l++],r&&!a.call(c,n)||s.push(t?[n,c[n]]:c[n]);return s}};t.exports={entries:c(!0),values:c(!1)}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"772f":function(t,e,n){(function(r){var o,i;(function(r){o=r,i="function"===typeof o?o.call(e,n,e,t):o,void 0===i||(t.exports=i)})((function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function o(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}function c(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,e){return!e||"object"!==typeof e&&"function"!==typeof e?u(t):e}function l(t){var e=c();return function(){var n,r=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return f(this,n)}}function s(t,e){while(!Object.prototype.hasOwnProperty.call(t,e))if(t=i(t),null===t)break;return t}function p(t,e,n){return p="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=s(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},p(t,e,n||t)}var d=function(){function e(){t(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return n(e,[{key:"addEventListener",value:function(t,e,n){t in this.listeners||(this.listeners[t]=[]),this.listeners[t].push({callback:e,options:n})}},{key:"removeEventListener",value:function(t,e){if(t in this.listeners)for(var n=this.listeners[t],r=0,o=n.length;r<o;r++)if(n[r].callback===e)return void n.splice(r,1)}},{key:"dispatchEvent",value:function(t){if(t.type in this.listeners){for(var e=this.listeners[t.type],n=e.slice(),r=0,o=n.length;r<o;r++){var i=n[r];try{i.callback.call(this,t)}catch(a){Promise.resolve().then((function(){throw a}))}i.options&&i.options.once&&this.removeEventListener(t.type,i.callback)}return!t.defaultPrevented}}}]),e}(),v=function(e){o(a,e);var r=l(a);function a(){var e;return t(this,a),e=r.call(this),e.listeners||d.call(u(e)),Object.defineProperty(u(e),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(u(e),"onabort",{value:null,writable:!0,configurable:!0}),e}return n(a,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(t){"abort"===t.type&&(this.aborted=!0,"function"===typeof this.onabort&&this.onabort.call(this,t)),p(i(a.prototype),"dispatchEvent",this).call(this,t)}}]),a}(d),y=function(){function e(){t(this,e),Object.defineProperty(this,"signal",{value:new v,writable:!0,configurable:!0})}return n(e,[{key:"abort",value:function(){var t;try{t=new Event("abort")}catch(e){"undefined"!==typeof document?document.createEvent?(t=document.createEvent("Event"),t.initEvent("abort",!1,!1)):(t=document.createEventObject(),t.type="abort"):t={type:"abort",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(t)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();function h(t){return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):"function"===typeof t.Request&&!t.Request.prototype.hasOwnProperty("signal")||!t.AbortController}"undefined"!==typeof Symbol&&Symbol.toStringTag&&(y.prototype[Symbol.toStringTag]="AbortController",v.prototype[Symbol.toStringTag]="AbortSignal"),function(t){h(t)&&(t.AbortController=y,t.AbortSignal=v)}("undefined"!==typeof self?self:r)}))}).call(this,n("24aa"))},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),u=n("1be4"),f=n("cc12"),l=n("f772"),s=">",p="<",d="prototype",v="script",y=l("IE_PROTO"),h=function(){},m=function(t){return p+v+s+t+p+"/"+v+s},b=function(t){t.write(m("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+v+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(m("document.F=Object")),t.close(),t.F},x=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}x="undefined"!=typeof document?document.domain&&r?b(r):g():b(r);var t=a.length;while(t--)delete x[d][a[t]];return x()};c[y]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(h[d]=o(t),n=new h,h[d]=null,n[y]=t):n=x(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),c=n("d44e"),u=n("9112"),f=n("6eeb"),l=n("b622"),s=n("c430"),p=n("3f8c"),d=n("ae93"),v=d.IteratorPrototype,y=d.BUGGY_SAFARI_ITERATORS,h=l("iterator"),m="keys",b="values",g="entries",x=function(){return this};t.exports=function(t,e,n,l,d,w,S){o(n,e,l);var O,T,_,A=function(t){if(t===d&&k)return k;if(!y&&t in R)return R[t];switch(t){case m:return function(){return new n(this,t)};case b:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this)}},E=e+" Iterator",j=!1,R=t.prototype,P=R[h]||R["@@iterator"]||d&&R[d],k=!y&&P||A(d),I="Array"==e&&R.entries||P;if(I&&(O=i(I.call(new t)),v!==Object.prototype&&O.next&&(s||i(O)===v||(a?a(O,v):"function"!=typeof O[h]&&u(O,h,x)),c(O,E,!0,!0),s&&(p[E]=x))),d==b&&P&&P.name!==b&&(j=!0,k=function(){return P.call(this)}),s&&!S||R[h]===k||u(R,h,k),p[e]=k,d)if(T={values:A(b),keys:w?k:A(m),entries:A(g)},S)for(_ in T)(y||j||!(_ in R))&&f(R,_,T[_]);else r({target:e,proto:!0,forced:y||j},T);return T}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("a04b"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("577e"),o=n("ad6d"),i=n("9f7f"),a=n("5692"),c=n("7c73"),u=n("69f3").get,f=n("fce3"),l=n("107c"),s=RegExp.prototype.exec,p=a("native-string-replace",String.prototype.replace),d=s,v=function(){var t=/a/,e=/b*/g;return s.call(t,"a"),s.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),y=i.UNSUPPORTED_Y||i.BROKEN_CARET,h=void 0!==/()??/.exec("")[1],m=v||h||y||f||l;m&&(d=function(t){var e,n,i,a,f,l,m,b=this,g=u(b),x=r(t),w=g.raw;if(w)return w.lastIndex=b.lastIndex,e=d.call(w,x),b.lastIndex=w.lastIndex,e;var S=g.groups,O=y&&b.sticky,T=o.call(b),_=b.source,A=0,E=x;if(O&&(T=T.replace("y",""),-1===T.indexOf("g")&&(T+="g"),E=x.slice(b.lastIndex),b.lastIndex>0&&(!b.multiline||b.multiline&&"\n"!==x.charAt(b.lastIndex-1))&&(_="(?: "+_+")",E=" "+E,A++),n=new RegExp("^(?:"+_+")",T)),h&&(n=new RegExp("^"+_+"$(?!\\s)",T)),v&&(i=b.lastIndex),a=s.call(O?n:b,E),O?a?(a.input=a.input.slice(A),a[0]=a[0].slice(A),a.index=b.lastIndex,b.lastIndex+=a[0].length):b.lastIndex=0:v&&a&&(b.lastIndex=b.global?a.index+a[0].length:i),h&&a&&a.length>1&&p.call(a[0],n,(function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(a[f]=void 0)})),a&&S)for(a.groups=l=c(null),f=0;f<S.length;f++)m=S[f],l[m[0]]=a[m[1]];return a}),t.exports=d},"94ca":function(t,e,n){var r=n("d039"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==f||n!=u&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},"9bdd":function(t,e,n){var r=n("825a"),o=n("2a62");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(a){throw o(t),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("a04b"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),c=n("3f8c"),u=function(){return this};t.exports=function(t,e,n){var f=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,f,!1,!0),c[f]=u,t}},"9f7f":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;e.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:String(e)}},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),u=n("4930"),f=n("d039"),l=n("5135"),s=n("e8b5"),p=n("861d"),d=n("d9b5"),v=n("825a"),y=n("7b0b"),h=n("fc6a"),m=n("a04b"),b=n("577e"),g=n("5c6c"),x=n("7c73"),w=n("df75"),S=n("241c"),O=n("057f"),T=n("7418"),_=n("06cf"),A=n("9bf2"),E=n("d1e7"),j=n("9112"),R=n("6eeb"),P=n("5692"),k=n("f772"),I=n("d012"),L=n("90e3"),M=n("b622"),N=n("e538"),D=n("746f"),C=n("d44e"),F=n("69f3"),U=n("b727").forEach,z=k("hidden"),H="Symbol",B="prototype",G=M("toPrimitive"),$=F.set,W=F.getterFor(H),V=Object[B],q=o.Symbol,Y=i("JSON","stringify"),K=_.f,X=A.f,J=O.f,Q=E.f,Z=P("symbols"),tt=P("op-symbols"),et=P("string-to-symbol-registry"),nt=P("symbol-to-string-registry"),rt=P("wks"),ot=o.QObject,it=!ot||!ot[B]||!ot[B].findChild,at=c&&f((function(){return 7!=x(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=K(V,e);r&&delete V[e],X(t,e,n),r&&t!==V&&X(V,e,r)}:X,ct=function(t,e){var n=Z[t]=x(q[B]);return $(n,{type:H,tag:t,description:e}),c||(n.description=e),n},ut=function(t,e,n){t===V&&ut(tt,e,n),v(t);var r=m(e);return v(n),l(Z,r)?(n.enumerable?(l(t,z)&&t[z][r]&&(t[z][r]=!1),n=x(n,{enumerable:g(0,!1)})):(l(t,z)||X(t,z,g(1,{})),t[z][r]=!0),at(t,r,n)):X(t,r,n)},ft=function(t,e){v(t);var n=h(e),r=w(n).concat(vt(n));return U(r,(function(e){c&&!st.call(n,e)||ut(t,e,n[e])})),t},lt=function(t,e){return void 0===e?x(t):ft(x(t),e)},st=function(t){var e=m(t),n=Q.call(this,e);return!(this===V&&l(Z,e)&&!l(tt,e))&&(!(n||!l(this,e)||!l(Z,e)||l(this,z)&&this[z][e])||n)},pt=function(t,e){var n=h(t),r=m(e);if(n!==V||!l(Z,r)||l(tt,r)){var o=K(n,r);return!o||!l(Z,r)||l(n,z)&&n[z][r]||(o.enumerable=!0),o}},dt=function(t){var e=J(h(t)),n=[];return U(e,(function(t){l(Z,t)||l(I,t)||n.push(t)})),n},vt=function(t){var e=t===V,n=J(e?tt:h(t)),r=[];return U(n,(function(t){!l(Z,t)||e&&!l(V,t)||r.push(Z[t])})),r};if(u||(q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?b(arguments[0]):void 0,e=L(t),n=function(t){this===V&&n.call(tt,t),l(this,z)&&l(this[z],e)&&(this[z][e]=!1),at(this,e,g(1,t))};return c&&it&&at(V,e,{configurable:!0,set:n}),ct(e,t)},R(q[B],"toString",(function(){return W(this).tag})),R(q,"withoutSetter",(function(t){return ct(L(t),t)})),E.f=st,A.f=ut,_.f=pt,S.f=O.f=dt,T.f=vt,N.f=function(t){return ct(M(t),t)},c&&(X(q[B],"description",{configurable:!0,get:function(){return W(this).description}}),a||R(V,"propertyIsEnumerable",st,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:q}),U(w(rt),(function(t){D(t)})),r({target:H,stat:!0,forced:!u},{for:function(t){var e=b(t);if(l(et,e))return et[e];var n=q(e);return et[e]=n,nt[n]=e,n},keyFor:function(t){if(!d(t))throw TypeError(t+" is not a symbol");if(l(nt,t))return nt[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:lt,defineProperty:ut,defineProperties:ft,getOwnPropertyDescriptor:pt}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:dt,getOwnPropertySymbols:vt}),r({target:"Object",stat:!0,forced:f((function(){T.f(1)}))},{getOwnPropertySymbols:function(t){return T.f(y(t))}}),Y){var yt=!u||f((function(){var t=q();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))}));r({target:"JSON",stat:!0,forced:yt},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!d(t))return s(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!d(e))return e}),o[1]=e,Y.apply(null,o)}})}q[B][G]||j(q[B],G,q[B].valueOf),C(q,H),I[z]=!0},a572:function(t,e,n){"use strict";
+window.tslib=r,Object.fromEntries=function(t){return d(t).reduce((function(t,e){var n=f(e,2),r=n[0],o=n[1];return t[r]=o,t}),{})};var H=z("&#8291;"),B=window.Vue.toDisplayString;function G(t){var e=t.split(/\s+/);return e.includes("noopener")&&e.includes("noreferrer")}window.Vue.toDisplayString=function(t){var e=B.call(this,t);return e=e.replace(/{{/g,"{".concat(H,"{")),e},h.a.addHook("afterSanitizeAttributes",(function(t){!t.hasAttribute("target")||"_blank"!==t.getAttribute("target")||t.hasAttribute("rel")&&G(t.getAttribute("rel"))||t.removeAttribute("target")})),window.vueSanitize=function(t){var e=h.a.sanitize(t,{ADD_ATTR:["target"]});return e=e.replace(/{{/g,"{&#8291;{"),e}},4840:function(t,e,n){var r=n("825a"),o=n("1c0b"),i=n("b622"),a=i("species");t.exports=function(t,e){var n,i=r(t).constructor;return void 0===i||void 0==(n=r(i)[a])?e:o(n)}},"485a":function(t,e,n){var r=n("861d");t.exports=function(t,e){var n,o;if("string"===e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if("string"!==e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},4930:function(t,e,n){var r=n("2d00"),o=n("d039");t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},"498a":function(t,e,n){"use strict";var r=n("23e7"),o=n("58a8").trim,i=n("c8d2");r({target:"String",proto:!0,forced:i("trim")},{trim:function(){return o(this)}})},"4d64":function(t,e,n){var r=n("fc6a"),o=n("50c4"),i=n("23cb"),a=function(t){return function(e,n,a){var c,u=r(e),f=o(u.length),l=i(a,f);if(t&&n!=n){while(f>l)if(c=u[l++],c!=c)return!0}else for(;f>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},"4df4":function(t,e,n){"use strict";var r=n("0366"),o=n("7b0b"),i=n("9bdd"),a=n("e95a"),c=n("50c4"),u=n("8418"),f=n("35a1");t.exports=function(t){var e,n,l,s,p,d,v=o(t),h="function"==typeof this?this:Array,y=arguments.length,b=y>1?arguments[1]:void 0,m=void 0!==b,g=f(v),x=0;if(m&&(b=r(b,y>2?arguments[2]:void 0,2)),void 0==g||h==Array&&a(g))for(e=c(v.length),n=new h(e);e>x;x++)d=m?b(v[x],x):v[x],u(n,x,d);else for(s=g.call(v),p=s.next,n=new h;!(l=p.call(s)).done;x++)d=m?i(s,b,[l.value,x],!0):l.value,u(n,x,d);return n.length=x,n}},"4fad":function(t,e,n){var r=n("23e7"),o=n("6f53").entries;r({target:"Object",stat:!0},{entries:function(t){return o(t)}})},"50c4":function(t,e,n){var r=n("a691"),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},5135:function(t,e,n){var r=n("7b0b"),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,e){return o.call(r(t),e)}},5319:function(t,e,n){"use strict";var r=n("d784"),o=n("d039"),i=n("825a"),a=n("a691"),c=n("50c4"),u=n("577e"),f=n("1d80"),l=n("8aa5"),s=n("0cb2"),p=n("14c3"),d=n("b622"),v=d("replace"),h=Math.max,y=Math.min,b=function(t){return void 0===t?t:String(t)},m=function(){return"$0"==="a".replace(/./,"$0")}(),g=function(){return!!/./[v]&&""===/./[v]("a","$0")}(),x=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));r("replace",(function(t,e,n){var r=g?"$":"$0";return[function(t,n){var r=f(this),o=void 0==t?void 0:t[v];return void 0!==o?o.call(t,r,n):e.call(u(r),t,n)},function(t,o){var f=i(this),d=u(t);if("string"===typeof o&&-1===o.indexOf(r)&&-1===o.indexOf("$<")){var v=n(e,f,d,o);if(v.done)return v.value}var m="function"===typeof o;m||(o=u(o));var g=f.global;if(g){var x=f.unicode;f.lastIndex=0}var w=[];while(1){var S=p(f,d);if(null===S)break;if(w.push(S),!g)break;var O=u(S[0]);""===O&&(f.lastIndex=l(d,c(f.lastIndex),x))}for(var T="",A=0,_=0;_<w.length;_++){S=w[_];for(var E=u(S[0]),j=h(y(a(S.index),d.length),0),R=[],P=1;P<S.length;P++)R.push(b(S[P]));var k=S.groups;if(m){var I=[E].concat(R,j,d);void 0!==k&&I.push(k);var L=u(o.apply(void 0,I))}else L=s(E,d,j,R,k,o);j>=A&&(T+=d.slice(A,j)+L,A=j+E.length)}return T+d.slice(A)}]}),!x||!m||g)},5692:function(t,e,n){var r=n("c430"),o=n("c6cd");(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.16.3",mode:r?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"56ef":function(t,e,n){var r=n("d066"),o=n("241c"),i=n("7418"),a=n("825a");t.exports=r("Reflect","ownKeys")||function(t){var e=o.f(a(t)),n=i.f;return n?e.concat(n(t)):e}},"577e":function(t,e,n){var r=n("d9b5");t.exports=function(t){if(r(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}},5899:function(t,e){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(t,e,n){var r=n("1d80"),o=n("577e"),i=n("5899"),a="["+i+"]",c=RegExp("^"+a+a+"*"),u=RegExp(a+a+"*$"),f=function(t){return function(e){var n=o(r(e));return 1&t&&(n=n.replace(c,"")),2&t&&(n=n.replace(u,"")),n}};t.exports={start:f(1),end:f(2),trim:f(3)}},"5a34":function(t,e,n){var r=n("44e7");t.exports=function(t){if(r(t))throw TypeError("The method doesn't accept regular expressions");return t}},"5c6c":function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},"605d":function(t,e,n){var r=n("c6b6"),o=n("da84");t.exports="process"==r(o.process)},6069:function(t,e){t.exports="object"==typeof window},"60da":function(t,e,n){"use strict";var r=n("83ab"),o=n("d039"),i=n("df75"),a=n("7418"),c=n("d1e7"),u=n("7b0b"),f=n("44ad"),l=Object.assign,s=Object.defineProperty;t.exports=!l||o((function(){if(r&&1!==l({b:1},l(s({},"a",{enumerable:!0,get:function(){s(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),o="abcdefghijklmnopqrst";return t[n]=7,o.split("").forEach((function(t){e[t]=t})),7!=l({},t)[n]||i(l({},e)).join("")!=o}))?function(t,e){var n=u(t),o=arguments.length,l=1,s=a.f,p=c.f;while(o>l){var d,v=f(arguments[l++]),h=s?i(v).concat(s(v)):i(v),y=h.length,b=0;while(y>b)d=h[b++],r&&!p.call(v,d)||(n[d]=v[d])}return n}:l},6547:function(t,e,n){var r=n("a691"),o=n("577e"),i=n("1d80"),a=function(t){return function(e,n){var a,c,u=o(i(e)),f=r(n),l=u.length;return f<0||f>=l?t?"":void 0:(a=u.charCodeAt(f),a<55296||a>56319||f+1===l||(c=u.charCodeAt(f+1))<56320||c>57343?t?u.charAt(f):a:t?u.slice(f,f+2):c-56320+(a-55296<<10)+65536)}};t.exports={codeAt:a(!1),charAt:a(!0)}},"65f0":function(t,e,n){var r=n("0b42");t.exports=function(t,e){return new(r(t))(0===e?0:e)}},"69f3":function(t,e,n){var r,o,i,a=n("7f9a"),c=n("da84"),u=n("861d"),f=n("9112"),l=n("5135"),s=n("c6cd"),p=n("f772"),d=n("d012"),v="Object already initialized",h=c.WeakMap,y=function(t){return i(t)?o(t):r(t,{})},b=function(t){return function(e){var n;if(!u(e)||(n=o(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}};if(a||s.state){var m=s.state||(s.state=new h),g=m.get,x=m.has,w=m.set;r=function(t,e){if(x.call(m,t))throw new TypeError(v);return e.facade=t,w.call(m,t,e),e},o=function(t){return g.call(m,t)||{}},i=function(t){return x.call(m,t)}}else{var S=p("state");d[S]=!0,r=function(t,e){if(l(t,S))throw new TypeError(v);return e.facade=t,f(t,S,e),e},o=function(t){return l(t,S)?t[S]:{}},i=function(t){return l(t,S)}}t.exports={set:r,get:o,has:i,enforce:y,getterFor:b}},"6eeb":function(t,e,n){var r=n("da84"),o=n("9112"),i=n("5135"),a=n("ce4e"),c=n("8925"),u=n("69f3"),f=u.get,l=u.enforce,s=String(String).split("String");(t.exports=function(t,e,n,c){var u,f=!!c&&!!c.unsafe,p=!!c&&!!c.enumerable,d=!!c&&!!c.noTargetGet;"function"==typeof n&&("string"!=typeof e||i(n,"name")||o(n,"name",e),u=l(n),u.source||(u.source=s.join("string"==typeof e?e:""))),t!==r?(f?!d&&t[e]&&(p=!0):delete t[e],p?t[e]=n:o(t,e,n)):p?t[e]=n:a(e,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&f(this).source||c(this)}))},"6f53":function(t,e,n){var r=n("83ab"),o=n("df75"),i=n("fc6a"),a=n("d1e7").f,c=function(t){return function(e){var n,c=i(e),u=o(c),f=u.length,l=0,s=[];while(f>l)n=u[l++],r&&!a.call(c,n)||s.push(t?[n,c[n]]:c[n]);return s}};t.exports={entries:c(!0),values:c(!1)}},7418:function(t,e){e.f=Object.getOwnPropertySymbols},"746f":function(t,e,n){var r=n("428f"),o=n("5135"),i=n("e538"),a=n("9bf2").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"772f":function(t,e,n){(function(r){var o,i;(function(r){o=r,i="function"===typeof o?o.call(e,n,e,t):o,void 0===i||(t.exports=i)})((function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function o(t,e){if("function"!==typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}function c(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function u(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,e){return!e||"object"!==typeof e&&"function"!==typeof e?u(t):e}function l(t){var e=c();return function(){var n,r=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return f(this,n)}}function s(t,e){while(!Object.prototype.hasOwnProperty.call(t,e))if(t=i(t),null===t)break;return t}function p(t,e,n){return p="undefined"!==typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=s(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},p(t,e,n||t)}var d=function(){function e(){t(this,e),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return n(e,[{key:"addEventListener",value:function(t,e,n){t in this.listeners||(this.listeners[t]=[]),this.listeners[t].push({callback:e,options:n})}},{key:"removeEventListener",value:function(t,e){if(t in this.listeners)for(var n=this.listeners[t],r=0,o=n.length;r<o;r++)if(n[r].callback===e)return void n.splice(r,1)}},{key:"dispatchEvent",value:function(t){if(t.type in this.listeners){for(var e=this.listeners[t.type],n=e.slice(),r=0,o=n.length;r<o;r++){var i=n[r];try{i.callback.call(this,t)}catch(a){Promise.resolve().then((function(){throw a}))}i.options&&i.options.once&&this.removeEventListener(t.type,i.callback)}return!t.defaultPrevented}}}]),e}(),v=function(e){o(a,e);var r=l(a);function a(){var e;return t(this,a),e=r.call(this),e.listeners||d.call(u(e)),Object.defineProperty(u(e),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(u(e),"onabort",{value:null,writable:!0,configurable:!0}),e}return n(a,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(t){"abort"===t.type&&(this.aborted=!0,"function"===typeof this.onabort&&this.onabort.call(this,t)),p(i(a.prototype),"dispatchEvent",this).call(this,t)}}]),a}(d),h=function(){function e(){t(this,e),Object.defineProperty(this,"signal",{value:new v,writable:!0,configurable:!0})}return n(e,[{key:"abort",value:function(){var t;try{t=new Event("abort")}catch(e){"undefined"!==typeof document?document.createEvent?(t=document.createEvent("Event"),t.initEvent("abort",!1,!1)):(t=document.createEventObject(),t.type="abort"):t={type:"abort",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(t)}},{key:"toString",value:function(){return"[object AbortController]"}}]),e}();function y(t){return t.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):"function"===typeof t.Request&&!t.Request.prototype.hasOwnProperty("signal")||!t.AbortController}"undefined"!==typeof Symbol&&Symbol.toStringTag&&(h.prototype[Symbol.toStringTag]="AbortController",v.prototype[Symbol.toStringTag]="AbortSignal"),function(t){y(t)&&(t.AbortController=h,t.AbortSignal=v)}("undefined"!==typeof self?self:r)}))}).call(this,n("24aa"))},7839:function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},"7b0b":function(t,e,n){var r=n("1d80");t.exports=function(t){return Object(r(t))}},"7c73":function(t,e,n){var r,o=n("825a"),i=n("37e8"),a=n("7839"),c=n("d012"),u=n("1be4"),f=n("cc12"),l=n("f772"),s=">",p="<",d="prototype",v="script",h=l("IE_PROTO"),y=function(){},b=function(t){return p+v+s+t+p+"/"+v+s},m=function(t){t.write(b("")),t.close();var e=t.parentWindow.Object;return t=null,e},g=function(){var t,e=f("iframe"),n="java"+v+":";return e.style.display="none",u.appendChild(e),e.src=String(n),t=e.contentWindow.document,t.open(),t.write(b("document.F=Object")),t.close(),t.F},x=function(){try{r=new ActiveXObject("htmlfile")}catch(e){}x="undefined"!=typeof document?document.domain&&r?m(r):g():m(r);var t=a.length;while(t--)delete x[d][a[t]];return x()};c[h]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(y[d]=o(t),n=new y,y[d]=null,n[h]=t):n=x(),void 0===e?n:i(n,e)}},"7dd0":function(t,e,n){"use strict";var r=n("23e7"),o=n("9ed3"),i=n("e163"),a=n("d2bb"),c=n("d44e"),u=n("9112"),f=n("6eeb"),l=n("b622"),s=n("c430"),p=n("3f8c"),d=n("ae93"),v=d.IteratorPrototype,h=d.BUGGY_SAFARI_ITERATORS,y=l("iterator"),b="keys",m="values",g="entries",x=function(){return this};t.exports=function(t,e,n,l,d,w,S){o(n,e,l);var O,T,A,_=function(t){if(t===d&&k)return k;if(!h&&t in R)return R[t];switch(t){case b:return function(){return new n(this,t)};case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this)}},E=e+" Iterator",j=!1,R=t.prototype,P=R[y]||R["@@iterator"]||d&&R[d],k=!h&&P||_(d),I="Array"==e&&R.entries||P;if(I&&(O=i(I.call(new t)),v!==Object.prototype&&O.next&&(s||i(O)===v||(a?a(O,v):"function"!=typeof O[y]&&u(O,y,x)),c(O,E,!0,!0),s&&(p[E]=x))),d==m&&P&&P.name!==m&&(j=!0,k=function(){return P.call(this)}),s&&!S||R[y]===k||u(R,y,k),p[e]=k,d)if(T={values:_(m),keys:w?k:_(b),entries:_(g)},S)for(A in T)(h||j||!(A in R))&&f(R,A,T[A]);else r({target:e,proto:!0,forced:h||j},T);return T}},"7f9a":function(t,e,n){var r=n("da84"),o=n("8925"),i=r.WeakMap;t.exports="function"===typeof i&&/native code/.test(o(i))},"825a":function(t,e,n){var r=n("861d");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},"83ab":function(t,e,n){var r=n("d039");t.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},8418:function(t,e,n){"use strict";var r=n("a04b"),o=n("9bf2"),i=n("5c6c");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},"861d":function(t,e){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},8925:function(t,e,n){var r=n("c6cd"),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(t){return o.call(t)}),t.exports=r.inspectSource},"8aa5":function(t,e,n){"use strict";var r=n("6547").charAt;t.exports=function(t,e,n){return e+(n?r(t,e).length:1)}},"90e3":function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+r).toString(36)}},9112:function(t,e,n){var r=n("83ab"),o=n("9bf2"),i=n("5c6c");t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9263:function(t,e,n){"use strict";var r=n("577e"),o=n("ad6d"),i=n("9f7f"),a=n("5692"),c=n("7c73"),u=n("69f3").get,f=n("fce3"),l=n("107c"),s=RegExp.prototype.exec,p=a("native-string-replace",String.prototype.replace),d=s,v=function(){var t=/a/,e=/b*/g;return s.call(t,"a"),s.call(e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),h=i.UNSUPPORTED_Y||i.BROKEN_CARET,y=void 0!==/()??/.exec("")[1],b=v||y||h||f||l;b&&(d=function(t){var e,n,i,a,f,l,b,m=this,g=u(m),x=r(t),w=g.raw;if(w)return w.lastIndex=m.lastIndex,e=d.call(w,x),m.lastIndex=w.lastIndex,e;var S=g.groups,O=h&&m.sticky,T=o.call(m),A=m.source,_=0,E=x;if(O&&(T=T.replace("y",""),-1===T.indexOf("g")&&(T+="g"),E=x.slice(m.lastIndex),m.lastIndex>0&&(!m.multiline||m.multiline&&"\n"!==x.charAt(m.lastIndex-1))&&(A="(?: "+A+")",E=" "+E,_++),n=new RegExp("^(?:"+A+")",T)),y&&(n=new RegExp("^"+A+"$(?!\\s)",T)),v&&(i=m.lastIndex),a=s.call(O?n:m,E),O?a?(a.input=a.input.slice(_),a[0]=a[0].slice(_),a.index=m.lastIndex,m.lastIndex+=a[0].length):m.lastIndex=0:v&&a&&(m.lastIndex=m.global?a.index+a[0].length:i),y&&a&&a.length>1&&p.call(a[0],n,(function(){for(f=1;f<arguments.length-2;f++)void 0===arguments[f]&&(a[f]=void 0)})),a&&S)for(a.groups=l=c(null),f=0;f<S.length;f++)b=S[f],l[b[0]]=a[b[1]];return a}),t.exports=d},"94ca":function(t,e,n){var r=n("d039"),o=/#|\.prototype\./,i=function(t,e){var n=c[a(t)];return n==f||n!=u&&("function"==typeof e?r(e):!!e)},a=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},c=i.data={},u=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},"9bdd":function(t,e,n){var r=n("825a"),o=n("2a62");t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(a){throw o(t),a}}},"9bf2":function(t,e,n){var r=n("83ab"),o=n("0cfb"),i=n("825a"),a=n("a04b"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"9ed3":function(t,e,n){"use strict";var r=n("ae93").IteratorPrototype,o=n("7c73"),i=n("5c6c"),a=n("d44e"),c=n("3f8c"),u=function(){return this};t.exports=function(t,e,n){var f=e+" Iterator";return t.prototype=o(r,{next:i(1,n)}),a(t,f,!1,!0),c[f]=u,t}},"9f7f":function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;e.UNSUPPORTED_Y=r((function(){var t=i("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=i("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},a04b:function(t,e,n){var r=n("c04e"),o=n("d9b5");t.exports=function(t){var e=r(t,"string");return o(e)?e:String(e)}},a4b4:function(t,e,n){var r=n("342f");t.exports=/web0s(?!.*chrome)/i.test(r)},a4d3:function(t,e,n){"use strict";var r=n("23e7"),o=n("da84"),i=n("d066"),a=n("c430"),c=n("83ab"),u=n("4930"),f=n("d039"),l=n("5135"),s=n("e8b5"),p=n("861d"),d=n("d9b5"),v=n("825a"),h=n("7b0b"),y=n("fc6a"),b=n("a04b"),m=n("577e"),g=n("5c6c"),x=n("7c73"),w=n("df75"),S=n("241c"),O=n("057f"),T=n("7418"),A=n("06cf"),_=n("9bf2"),E=n("d1e7"),j=n("9112"),R=n("6eeb"),P=n("5692"),k=n("f772"),I=n("d012"),L=n("90e3"),M=n("b622"),N=n("e538"),D=n("746f"),C=n("d44e"),F=n("69f3"),U=n("b727").forEach,z=k("hidden"),H="Symbol",B="prototype",G=M("toPrimitive"),$=F.set,W=F.getterFor(H),V=Object[B],q=o.Symbol,Y=i("JSON","stringify"),K=A.f,X=_.f,J=O.f,Q=E.f,Z=P("symbols"),tt=P("op-symbols"),et=P("string-to-symbol-registry"),nt=P("symbol-to-string-registry"),rt=P("wks"),ot=o.QObject,it=!ot||!ot[B]||!ot[B].findChild,at=c&&f((function(){return 7!=x(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=K(V,e);r&&delete V[e],X(t,e,n),r&&t!==V&&X(V,e,r)}:X,ct=function(t,e){var n=Z[t]=x(q[B]);return $(n,{type:H,tag:t,description:e}),c||(n.description=e),n},ut=function(t,e,n){t===V&&ut(tt,e,n),v(t);var r=b(e);return v(n),l(Z,r)?(n.enumerable?(l(t,z)&&t[z][r]&&(t[z][r]=!1),n=x(n,{enumerable:g(0,!1)})):(l(t,z)||X(t,z,g(1,{})),t[z][r]=!0),at(t,r,n)):X(t,r,n)},ft=function(t,e){v(t);var n=y(e),r=w(n).concat(vt(n));return U(r,(function(e){c&&!st.call(n,e)||ut(t,e,n[e])})),t},lt=function(t,e){return void 0===e?x(t):ft(x(t),e)},st=function(t){var e=b(t),n=Q.call(this,e);return!(this===V&&l(Z,e)&&!l(tt,e))&&(!(n||!l(this,e)||!l(Z,e)||l(this,z)&&this[z][e])||n)},pt=function(t,e){var n=y(t),r=b(e);if(n!==V||!l(Z,r)||l(tt,r)){var o=K(n,r);return!o||!l(Z,r)||l(n,z)&&n[z][r]||(o.enumerable=!0),o}},dt=function(t){var e=J(y(t)),n=[];return U(e,(function(t){l(Z,t)||l(I,t)||n.push(t)})),n},vt=function(t){var e=t===V,n=J(e?tt:y(t)),r=[];return U(n,(function(t){!l(Z,t)||e&&!l(V,t)||r.push(Z[t])})),r};if(u||(q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?m(arguments[0]):void 0,e=L(t),n=function(t){this===V&&n.call(tt,t),l(this,z)&&l(this[z],e)&&(this[z][e]=!1),at(this,e,g(1,t))};return c&&it&&at(V,e,{configurable:!0,set:n}),ct(e,t)},R(q[B],"toString",(function(){return W(this).tag})),R(q,"withoutSetter",(function(t){return ct(L(t),t)})),E.f=st,_.f=ut,A.f=pt,S.f=O.f=dt,T.f=vt,N.f=function(t){return ct(M(t),t)},c&&(X(q[B],"description",{configurable:!0,get:function(){return W(this).description}}),a||R(V,"propertyIsEnumerable",st,{unsafe:!0}))),r({global:!0,wrap:!0,forced:!u,sham:!u},{Symbol:q}),U(w(rt),(function(t){D(t)})),r({target:H,stat:!0,forced:!u},{for:function(t){var e=m(t);if(l(et,e))return et[e];var n=q(e);return et[e]=n,nt[n]=e,n},keyFor:function(t){if(!d(t))throw TypeError(t+" is not a symbol");if(l(nt,t))return nt[t]},useSetter:function(){it=!0},useSimple:function(){it=!1}}),r({target:"Object",stat:!0,forced:!u,sham:!c},{create:lt,defineProperty:ut,defineProperties:ft,getOwnPropertyDescriptor:pt}),r({target:"Object",stat:!0,forced:!u},{getOwnPropertyNames:dt,getOwnPropertySymbols:vt}),r({target:"Object",stat:!0,forced:f((function(){T.f(1)}))},{getOwnPropertySymbols:function(t){return T.f(h(t))}}),Y){var ht=!u||f((function(){var t=q();return"[null]"!=Y([t])||"{}"!=Y({a:t})||"{}"!=Y(Object(t))}));r({target:"JSON",stat:!0,forced:ht},{stringify:function(t,e,n){var r,o=[t],i=1;while(arguments.length>i)o.push(arguments[i++]);if(r=e,(p(e)||void 0!==t)&&!d(t))return s(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!d(e))return e}),o[1]=e,Y.apply(null,o)}})}q[B][G]||j(q[B],G,q[B].valueOf),C(q,H),I[z]=!0},a572:function(t,e,n){"use strict";
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var r=window.$.fn.trigger;function o(t,e){var n=!0,o=t.type||t,i="on".concat(o);function a(t){if(!(n&&(n=!1,t[i]||t[o]instanceof Function&&("click"!==o||"A"!==t.tagName.toUpperCase())))&&(!(window.$._data(t,"events")||{})[o]||!window.$._data(t,"handle"))&&t.dispatchEvent){var e=new Event(o,{bubbles:!1,cancelable:!0});t.dispatchEvent(e)}}function c(t){a(t);var e=t.parentElement;e&&c(e)}var u=r.call(this,t,e);return"focus"===o||"blur"===o||this.each((function(){c(this)})),u}window.$.fn.trigger=o},a630:function(t,e,n){var r=n("23e7"),o=n("4df4"),i=n("1c7e"),a=!i((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:a},{from:o})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),u=n("4840"),f=n("cdf9"),l=n("6eeb"),s=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:s},{finally:function(t){var e=u(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return f(e,t()).then((function(){return n}))}:t,n?function(n){return f(e,t()).then((function(){throw n}))}:t)}}),!o&&"function"==typeof i){var p=c("Promise").prototype["finally"];i.prototype["finally"]!==p&&l(i.prototype,"finally",p,{unsafe:!0})}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),u=n("9112"),f=n("5135"),l=n("b622"),s=n("c430"),p=l("iterator"),d=!1,v=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var y=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));y&&(r={}),s&&!y||f(r,p)||u(r,p,v),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b575:function(t,e,n){var r,o,i,a,c,u,f,l,s=n("da84"),p=n("06cf").f,d=n("2cf4").set,v=n("1cdc"),y=n("d4c3"),h=n("a4b4"),m=n("605d"),b=s.MutationObserver||s.WebKitMutationObserver,g=s.document,x=s.process,w=s.Promise,S=p(s,"queueMicrotask"),O=S&&S.value;O||(r=function(){var t,e;m&&(t=x.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},v||m||h||!b||!g?!y&&w&&w.resolve?(f=w.resolve(void 0),f.constructor=w,l=f.then,a=function(){l.call(f,r)}):a=m?function(){x.nextTick(r)}:function(){d.call(s,r)}:(c=!0,u=g.createTextNode(""),new b(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=O||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),u=n("fdbf"),f=o("wks"),l=r.Symbol,s=u?l:l&&l.withoutSetter||a;t.exports=function(t){return i(f,t)&&(c||"string"==typeof f[t])||(c&&i(l,t)?f[t]=l[t]:f[t]=s("Symbol."+t)),f[t]}},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),u=[].push,f=function(t){var e=1==t,n=2==t,f=3==t,l=4==t,s=6==t,p=7==t,d=5==t||s;return function(v,y,h,m){for(var b,g,x=i(v),w=o(x),S=r(y,h,3),O=a(w.length),T=0,_=m||c,A=e?_(v,O):n||p?_(v,0):void 0;O>T;T++)if((d||T in w)&&(b=w[T],g=S(b,T,x),t))if(e)A[T]=g;else if(g)switch(t){case 3:return!0;case 5:return b;case 6:return T;case 2:u.call(A,b)}else switch(t){case 4:return!1;case 7:u.call(A,b)}return s?-1:f||l?l:A}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},c04e:function(t,e,n){var r=n("861d"),o=n("d9b5"),i=n("485a"),a=n("b622"),c=a("toPrimitive");t.exports=function(t,e){if(!r(t)||o(t))return t;var n,a=t[c];if(void 0!==a){if(void 0===e&&(e="default"),n=a.call(t,e),!r(n)||o(n))return n;throw TypeError("Can't convert object to primitive value")}return void 0===e&&(e="number"),i(t,e)}},c0c4:function(t,e,n){
+ */var r=window.$.fn.trigger;function o(t,e){var n=!0,o=t.type||t,i="on".concat(o);function a(t){if(!(n&&(n=!1,t[i]||t[o]instanceof Function&&("click"!==o||"A"!==t.tagName.toUpperCase())))&&(!(window.$._data(t,"events")||{})[o]||!window.$._data(t,"handle"))&&t.dispatchEvent){var e=new Event(o,{bubbles:!1,cancelable:!0});t.dispatchEvent(e)}}function c(t){a(t);var e=t.parentElement;e&&c(e)}var u=r.call(this,t,e);return"focus"===o||"blur"===o||this.each((function(){c(this)})),u}window.$.fn.trigger=o},a630:function(t,e,n){var r=n("23e7"),o=n("4df4"),i=n("1c7e"),a=!i((function(t){Array.from(t)}));r({target:"Array",stat:!0,forced:a},{from:o})},a640:function(t,e,n){"use strict";var r=n("d039");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},a691:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},a79d:function(t,e,n){"use strict";var r=n("23e7"),o=n("c430"),i=n("fea9"),a=n("d039"),c=n("d066"),u=n("4840"),f=n("cdf9"),l=n("6eeb"),s=!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}));if(r({target:"Promise",proto:!0,real:!0,forced:s},{finally:function(t){var e=u(this,c("Promise")),n="function"==typeof t;return this.then(n?function(n){return f(e,t()).then((function(){return n}))}:t,n?function(n){return f(e,t()).then((function(){throw n}))}:t)}}),!o&&"function"==typeof i){var p=c("Promise").prototype["finally"];i.prototype["finally"]!==p&&l(i.prototype,"finally",p,{unsafe:!0})}},ab13:function(t,e,n){var r=n("b622"),o=r("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[o]=!1,"/./"[t](e)}catch(r){}}return!1}},ac1f:function(t,e,n){"use strict";var r=n("23e7"),o=n("9263");r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},ad6d:function(t,e,n){"use strict";var r=n("825a");t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},ae93:function(t,e,n){"use strict";var r,o,i,a=n("d039"),c=n("e163"),u=n("9112"),f=n("5135"),l=n("b622"),s=n("c430"),p=l("iterator"),d=!1,v=function(){return this};[].keys&&(i=[].keys(),"next"in i?(o=c(c(i)),o!==Object.prototype&&(r=o)):d=!0);var h=void 0==r||a((function(){var t={};return r[p].call(t)!==t}));h&&(r={}),s&&!h||f(r,p)||u(r,p,v),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},b041:function(t,e,n){"use strict";var r=n("00ee"),o=n("f5df");t.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},b575:function(t,e,n){var r,o,i,a,c,u,f,l,s=n("da84"),p=n("06cf").f,d=n("2cf4").set,v=n("1cdc"),h=n("d4c3"),y=n("a4b4"),b=n("605d"),m=s.MutationObserver||s.WebKitMutationObserver,g=s.document,x=s.process,w=s.Promise,S=p(s,"queueMicrotask"),O=S&&S.value;O||(r=function(){var t,e;b&&(t=x.domain)&&t.exit();while(o){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},v||b||y||!m||!g?!h&&w&&w.resolve?(f=w.resolve(void 0),f.constructor=w,l=f.then,a=function(){l.call(f,r)}):a=b?function(){x.nextTick(r)}:function(){d.call(s,r)}:(c=!0,u=g.createTextNode(""),new m(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c})),t.exports=O||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},b622:function(t,e,n){var r=n("da84"),o=n("5692"),i=n("5135"),a=n("90e3"),c=n("4930"),u=n("fdbf"),f=o("wks"),l=r.Symbol,s=u?l:l&&l.withoutSetter||a;t.exports=function(t){return i(f,t)&&(c||"string"==typeof f[t])||(c&&i(l,t)?f[t]=l[t]:f[t]=s("Symbol."+t)),f[t]}},b727:function(t,e,n){var r=n("0366"),o=n("44ad"),i=n("7b0b"),a=n("50c4"),c=n("65f0"),u=[].push,f=function(t){var e=1==t,n=2==t,f=3==t,l=4==t,s=6==t,p=7==t,d=5==t||s;return function(v,h,y,b){for(var m,g,x=i(v),w=o(x),S=r(h,y,3),O=a(w.length),T=0,A=b||c,_=e?A(v,O):n||p?A(v,0):void 0;O>T;T++)if((d||T in w)&&(m=w[T],g=S(m,T,x),t))if(e)_[T]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return T;case 2:u.call(_,m)}else switch(t){case 4:return!1;case 7:u.call(_,m)}return s?-1:f||l?l:_}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},c04e:function(t,e,n){var r=n("861d"),o=n("d9b5"),i=n("485a"),a=n("b622"),c=a("toPrimitive");t.exports=function(t,e){if(!r(t)||o(t))return t;var n,a=t[c];if(void 0!==a){if(void 0===e&&(e="default"),n=a.call(t,e),!r(n)||o(n))return n;throw TypeError("Can't convert object to primitive value")}return void 0===e&&(e="number"),i(t,e)}},c0c4:function(t,e,n){
/*! @license DOMPurify 2.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.3/LICENSE */
-(function(e,n){t.exports=n()})(0,(function(){"use strict";function t(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var e=Object.hasOwnProperty,n=Object.setPrototypeOf,r=Object.isFrozen,o=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,c=Object.seal,u=Object.create,f="undefined"!==typeof Reflect&&Reflect,l=f.apply,s=f.construct;l||(l=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),c||(c=function(t){return t}),s||(s=function(e,n){return new(Function.prototype.bind.apply(e,[null].concat(t(n))))});var p=S(Array.prototype.forEach),d=S(Array.prototype.pop),v=S(Array.prototype.push),y=S(String.prototype.toLowerCase),h=S(String.prototype.match),m=S(String.prototype.replace),b=S(String.prototype.indexOf),g=S(String.prototype.trim),x=S(RegExp.prototype.test),w=O(TypeError);function S(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return l(t,e,r)}}function O(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return s(t,n)}}function T(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=y(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function _(t){var n=u(null),r=void 0;for(r in t)l(e,t,[r])&&(n[r]=t[r]);return n}function A(t,e){while(null!==t){var n=i(t,e);if(n){if(n.get)return S(n.get);if("function"===typeof n.value)return S(n.value)}t=o(t)}function r(t){return console.warn("fallback value for",t),null}return r}var E=a(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),j=a(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),R=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),P=a(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),k=a(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),I=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),L=a(["#text"]),M=a(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),N=a(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),D=a(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),F=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=c(/<%[\s\S]*|[\s\S]*%>/gm),z=c(/^data-[\-\w.\u00B7-\uFFFF]/),H=c(/^aria-[\-\w]+$/),B=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),G=c(/^(?:\w+script|data):/i),$=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function V(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var q=function(){return"undefined"===typeof window?null:window},Y=function(t,e){if("object"!==("undefined"===typeof t?"undefined":W(t))||"function"!==typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";e.currentScript&&e.currentScript.hasAttribute(r)&&(n=e.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(t){return t}})}catch(i){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q(),e=function(t){return K(t)};if(e.version="2.3.3",e.removed=[],!t||!t.document||9!==t.document.nodeType)return e.isSupported=!1,e;var n=t.document,r=t.document,o=t.DocumentFragment,i=t.HTMLTemplateElement,c=t.Node,u=t.Element,f=t.NodeFilter,l=t.NamedNodeMap,s=void 0===l?t.NamedNodeMap||t.MozNamedAttrMap:l,S=t.Text,O=t.Comment,X=t.DOMParser,J=t.trustedTypes,Q=u.prototype,Z=A(Q,"cloneNode"),tt=A(Q,"nextSibling"),et=A(Q,"childNodes"),nt=A(Q,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=Y(J,n),it=ot&&Ct?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,lt=at.getElementsByTagName,st=n.importNode,pt={};try{pt=_(r).documentMode?r.documentMode:{}}catch(Se){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var vt=F,yt=U,ht=z,mt=H,bt=G,gt=$,xt=B,wt=null,St=T({},[].concat(V(E),V(j),V(R),V(k),V(L))),Ot=null,Tt=T({},[].concat(V(M),V(N),V(D),V(C))),_t=null,At=null,Et=!0,jt=!0,Rt=!1,Pt=!1,kt=!1,It=!1,Lt=!1,Mt=!1,Nt=!1,Dt=!0,Ct=!1,Ft=!0,Ut=!0,zt=!1,Ht={},Bt=null,Gt=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),$t=null,Wt=T({},["audio","video","img","source","image","track"]),Vt=null,qt=T({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Yt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Jt=Xt,Qt=!1,Zt=void 0,te=["application/xhtml+xml","text/html"],ee="text/html",ne=void 0,re=null,oe=r.createElement("form"),ie=function(t){re&&re===t||(t&&"object"===("undefined"===typeof t?"undefined":W(t))||(t={}),t=_(t),wt="ALLOWED_TAGS"in t?T({},t.ALLOWED_TAGS):St,Ot="ALLOWED_ATTR"in t?T({},t.ALLOWED_ATTR):Tt,Vt="ADD_URI_SAFE_ATTR"in t?T(_(qt),t.ADD_URI_SAFE_ATTR):qt,$t="ADD_DATA_URI_TAGS"in t?T(_(Wt),t.ADD_DATA_URI_TAGS):Wt,Bt="FORBID_CONTENTS"in t?T({},t.FORBID_CONTENTS):Gt,_t="FORBID_TAGS"in t?T({},t.FORBID_TAGS):{},At="FORBID_ATTR"in t?T({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,jt=!1!==t.ALLOW_DATA_ATTR,Rt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=t.SAFE_FOR_TEMPLATES||!1,kt=t.WHOLE_DOCUMENT||!1,Mt=t.RETURN_DOM||!1,Nt=t.RETURN_DOM_FRAGMENT||!1,Dt=!1!==t.RETURN_DOM_IMPORT,Ct=t.RETURN_TRUSTED_TYPE||!1,Lt=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Ut=!1!==t.KEEP_CONTENT,zt=t.IN_PLACE||!1,xt=t.ALLOWED_URI_REGEXP||xt,Jt=t.NAMESPACE||Xt,Zt=Zt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Zt?function(t){return t}:y,Pt&&(jt=!1),Nt&&(Mt=!0),Ht&&(wt=T({},[].concat(V(L))),Ot=[],!0===Ht.html&&(T(wt,E),T(Ot,M)),!0===Ht.svg&&(T(wt,j),T(Ot,N),T(Ot,C)),!0===Ht.svgFilters&&(T(wt,R),T(Ot,N),T(Ot,C)),!0===Ht.mathMl&&(T(wt,k),T(Ot,D),T(Ot,C))),t.ADD_TAGS&&(wt===St&&(wt=_(wt)),T(wt,t.ADD_TAGS)),t.ADD_ATTR&&(Ot===Tt&&(Ot=_(Ot)),T(Ot,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&T(Vt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=_(Bt)),T(Bt,t.FORBID_CONTENTS)),Ut&&(wt["#text"]=!0),kt&&T(wt,["html","head","body"]),wt.table&&(T(wt,["tbody"]),delete _t.tbody),a&&a(t),re=t)},ae=T({},["mi","mo","mn","ms","mtext"]),ce=T({},["foreignobject","desc","title","annotation-xml"]),ue=T({},j);T(ue,R),T(ue,P);var fe=T({},k);T(fe,I);var le=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var n=y(t.tagName),r=y(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Xt?"svg"===n:e.namespaceURI===Yt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Yt)return e.namespaceURI===Xt?"math"===n:e.namespaceURI===Kt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===Xt){if(e.namespaceURI===Kt&&!ce[r])return!1;if(e.namespaceURI===Yt&&!ae[r])return!1;var o=T({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},se=function(t){v(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Se){try{t.outerHTML=it}catch(Se){t.remove()}}},pe=function(t,n){try{v(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Se){v(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!Ot[t])if(Mt||Nt)try{se(n)}catch(Se){}else try{n.setAttribute(t,"")}catch(Se){}},de=function(t){var e=void 0,n=void 0;if(Lt)t="<remove></remove>"+t;else{var o=h(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Zt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Jt===Xt)try{e=(new X).parseFromString(i,Zt)}catch(Se){}if(!e||!e.documentElement){e=ct.createDocument(Jt,"template",null);try{e.documentElement.innerHTML=Qt?"":i}catch(Se){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Jt===Xt?lt.call(e,kt?"html":"body")[0]:kt?e.documentElement:a},ve=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},ye=function(t){return!(t instanceof S||t instanceof O)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof s&&"function"===typeof t.removeAttribute&&"function"===typeof t.setAttribute&&"string"===typeof t.namespaceURI&&"function"===typeof t.insertBefore)},he=function(t){return"object"===("undefined"===typeof c?"undefined":W(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":W(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},me=function(t,n,r){dt[t]&&p(dt[t],(function(t){t.call(e,n,r,re)}))},be=function(t){var n=void 0;if(me("beforeSanitizeElements",t,null),ye(t))return se(t),!0;if(h(t.nodeName,/[\u0080-\uFFFF]/))return se(t),!0;var r=ne(t.nodeName);if(me("uponSanitizeElement",t,{tagName:r,allowedTags:wt}),!he(t.firstElementChild)&&(!he(t.content)||!he(t.content.firstElementChild))&&x(/<[/\w]/g,t.innerHTML)&&x(/<[/\w]/g,t.textContent))return se(t),!0;if("select"===r&&x(/<template/i,t.innerHTML))return se(t),!0;if(!wt[r]||_t[r]){if(Ut&&!Bt[r]){var o=nt(t)||t.parentNode,i=et(t)||t.childNodes;if(i&&o)for(var a=i.length,c=a-1;c>=0;--c)o.insertBefore(Z(i[c],!0),tt(t))}return se(t),!0}return t instanceof u&&!le(t)?(se(t),!0):"noscript"!==r&&"noembed"!==r||!x(/<\/no(script|embed)/i,t.innerHTML)?(Pt&&3===t.nodeType&&(n=t.textContent,n=m(n,vt," "),n=m(n,yt," "),t.textContent!==n&&(v(e.removed,{element:t.cloneNode()}),t.textContent=n)),me("afterSanitizeElements",t,null),!1):(se(t),!0)},ge=function(t,e,n){if(Ft&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(jt&&!At[e]&&x(ht,e));else if(Et&&x(mt,e));else{if(!Ot[e]||At[e])return!1;if(Vt[e]);else if(x(xt,m(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==b(n,"data:")||!$t[t]){if(Rt&&!x(bt,m(n,gt,"")));else if(n)return!1}else;}return!0},xe=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;me("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ot};i=a.length;while(i--){n=a[i];var u=n,f=u.name,l=u.namespaceURI;if(r=g(n.value),o=ne(f),c.attrName=o,c.attrValue=r,c.keepAttr=!0,c.forceKeepAttr=void 0,me("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(x(/\/>/i,r))pe(f,t);else{Pt&&(r=m(r,vt," "),r=m(r,yt," "));var s=ne(t.nodeName);if(ge(s,o,r))try{l?t.setAttributeNS(l,f,r):t.setAttribute(f,r),d(e.removed)}catch(Se){}}}me("afterSanitizeAttributes",t,null)}},we=function t(e){var n=void 0,r=ve(e);me("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())me("uponSanitizeShadowNode",n,null),be(n)||(n.content instanceof o&&t(n.content),xe(n));me("afterSanitizeShadowDOM",e,null)};return e.sanitize=function(r,i){var a=void 0,u=void 0,f=void 0,l=void 0,s=void 0;if(Qt=!r,Qt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!he(r)){if("function"!==typeof r.toString)throw w("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw w("dirty is not a string, aborting")}if(!e.isSupported){if("object"===W(t.toStaticHTML)||"function"===typeof t.toStaticHTML){if("string"===typeof r)return t.toStaticHTML(r);if(he(r))return t.toStaticHTML(r.outerHTML)}return r}if(It||ie(i),e.removed=[],"string"===typeof r&&(zt=!1),zt);else if(r instanceof c)a=de("\x3c!----\x3e"),u=a.ownerDocument.importNode(r,!0),1===u.nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?a=u:a.appendChild(u);else{if(!Mt&&!Pt&&!kt&&-1===r.indexOf("<"))return ot&&Ct?ot.createHTML(r):r;if(a=de(r),!a)return Mt?null:it}a&&Lt&&se(a.firstChild);var p=ve(zt?r:a);while(f=p.nextNode())3===f.nodeType&&f===l||be(f)||(f.content instanceof o&&we(f.content),xe(f),l=f);if(l=null,zt)return r;if(Mt){if(Nt){s=ft.call(a.ownerDocument);while(a.firstChild)s.appendChild(a.firstChild)}else s=a;return Dt&&(s=st.call(n,s,!0)),s}var d=kt?a.outerHTML:a.innerHTML;return Pt&&(d=m(d,vt," "),d=m(d,yt," ")),ot&&Ct?ot.createHTML(d):d},e.setConfig=function(t){ie(t),It=!0},e.clearConfig=function(){re=null,It=!1},e.isValidAttribute=function(t,e,n){re||ie({});var r=ne(t),o=ne(e);return ge(r,o,n)},e.addHook=function(t,e){"function"===typeof e&&(dt[t]=dt[t]||[],v(dt[t],e))},e.removeHook=function(t){dt[t]&&d(dt[t])},e.removeHooks=function(t){dt[t]&&(dt[t]=[])},e.removeAllHooks=function(){dt={}},e}var X=K();return X}))},c1f9:function(t,e,n){var r=n("23e7"),o=n("2266"),i=n("8418");r({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){i(e,t,n)}),{AS_ENTRIES:!0}),e}})},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)!r(a,n)&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84");t.exports=function(t,e){try{Object.defineProperty(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d28b:function(t,e,n){var r=n("746f");r("iterator")},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d4c3:function(t,e,n){var r=n("342f"),o=n("da84");t.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==o.Pebble},d58f:function(t,e,n){var r=n("1c0b"),o=n("7b0b"),i=n("44ad"),a=n("50c4"),c=function(t){return function(e,n,c,u){r(n);var f=o(e),l=i(f),s=a(f.length),p=t?s-1:0,d=t?-1:1;if(c<2)while(1){if(p in l){u=l[p],p+=d;break}if(p+=d,t?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:s>p;p+=d)p in l&&(u=n(u,l[p],p,f));return u}};t.exports={left:c(!1),right:c(!0)}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),u=a("species"),f=RegExp.prototype;t.exports=function(t,e,n,l){var s=a(t),p=!i((function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})),d=p&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[u]=function(){return n},n.flags="",n[s]=/./[s]),n.exec=function(){return e=!0,null},n[s](""),!e}));if(!p||!d||n){var v=/./[s],y=e(s,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===f.exec?p&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}));r(String.prototype,t,y[0]),r(f,s,y[1])}l&&c(f[s],"sham",!0)}},d9b5:function(t,e,n){var r=n("d066"),o=n("fdbf");t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return"function"==typeof e&&Object(t)instanceof e}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("24aa"))},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),c=n("b622"),u=c("iterator"),f=c("toStringTag"),l=i.values;for(var s in o){var p=r[s],d=p&&p.prototype;if(d){if(d[u]!==l)try{a(d,u,l)}catch(y){d[u]=l}if(d[f]||a(d,f,s),o[s])for(var v in i)if(d[v]!==i[v])try{a(d,v,i[v])}catch(y){d[v]=i[v]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),c=n("861d"),u=n("9bf2").f,f=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var s={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new l(t):void 0===t?l():l(t);return""===t&&(s[e]=!0),e};f(p,l);var d=p.prototype=l.prototype;d.constructor=p;var v=d.toString,y="Symbol(test)"==String(l("test")),h=/^Symbol\((.*)\)[^)]+$/;u(d,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=v.call(t);if(a(s,t))return"";var n=y?e.slice(7,-1):e.replace(h,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),c=n("7dd0"),u="Array Iterator",f=a.set,l=a.getterFor(u);t.exports=c(Array,"Array",(function(t,e){f(this,{type:u,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),u=n("c430"),f=n("da84"),l=n("d066"),s=n("fea9"),p=n("6eeb"),d=n("e2cc"),v=n("d2bb"),y=n("d44e"),h=n("2626"),m=n("861d"),b=n("1c0b"),g=n("19aa"),x=n("8925"),w=n("2266"),S=n("1c7e"),O=n("4840"),T=n("2cf4").set,_=n("b575"),A=n("cdf9"),E=n("44de"),j=n("f069"),R=n("e667"),P=n("69f3"),k=n("94ca"),I=n("b622"),L=n("6069"),M=n("605d"),N=n("2d00"),D=I("species"),C="Promise",F=P.get,U=P.set,z=P.getterFor(C),H=s&&s.prototype,B=s,G=H,$=f.TypeError,W=f.document,V=f.process,q=j.f,Y=q,K=!!(W&&W.createEvent&&f.dispatchEvent),X="function"==typeof PromiseRejectionEvent,J="unhandledrejection",Q="rejectionhandled",Z=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=k(C,(function(){var t=x(B),e=t!==String(B);if(!e&&66===N)return!0;if(u&&!G["finally"])return!0;if(N>=51&&/native code/.test(t))return!1;var n=new B((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))},o=n.constructor={};return o[D]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&L&&!X})),at=it||!S((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!m(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;_((function(){var r=t.value,o=t.state==tt,i=0;while(n.length>i){var a,c,u,f=n[i++],l=o?f.ok:f.fail,s=f.resolve,p=f.reject,d=f.domain;try{l?(o||(t.rejection===rt&&pt(t),t.rejection=nt),!0===l?a=r:(d&&d.enter(),a=l(r),d&&(d.exit(),u=!0)),a===f.promise?p($("Promise-chain cycle")):(c=ct(a))?c.call(a,s,p):s(a)):p(r)}catch(v){d&&!u&&d.exit(),p(v)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&lt(t)}))}},ft=function(t,e,n){var r,o;K?(r=W.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),f.dispatchEvent(r)):r={promise:e,reason:n},!X&&(o=f["on"+t])?o(r):t===J&&E("Unhandled promise rejection",n)},lt=function(t){T.call(f,(function(){var e,n=t.facade,r=t.value,o=st(t);if(o&&(e=R((function(){M?V.emit("unhandledRejection",r,n):ft(J,n,r)})),t.rejection=M||st(t)?rt:nt,e.error))throw e.value}))},st=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){T.call(f,(function(){var e=t.facade;M?V.emit("rejectionHandled",e):ft(Q,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},vt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},yt=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw $("Promise can't be resolved itself");var r=ct(e);r?_((function(){var n={done:!1};try{r.call(e,dt(yt,n,t),dt(vt,n,t))}catch(o){vt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){vt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,C),b(t),r.call(this);var e=F(this);try{t(dt(yt,e),dt(vt,e))}catch(n){vt(e,n)}},G=B.prototype,r=function(t){U(this,{type:C,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Z,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=z(this),r=q(O(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?V.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Z&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=F(t);this.promise=t,this.resolve=dt(yt,e),this.reject=dt(vt,e)},j.f=q=function(t){return t===B||t===i?new o(t):Y(t)},!u&&"function"==typeof s&&H!==Object.prototype)){a=H.then,ot||(p(H,"then",(function(t,e){var n=this;return new B((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),p(H,"catch",G["catch"],{unsafe:!0}));try{delete H.constructor}catch(ht){}v&&v(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),y(B,C,!1,!0),h(C),i=l(C),c({target:C,stat:!0,forced:it},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),c({target:C,stat:!0,forced:u||it},{resolve:function(t){return A(u&&this===i?B:this,t)}}),c({target:C,stat:!0,forced:at},{all:function(t){var e=this,n=q(e),r=n.resolve,o=n.reject,i=R((function(){var n=b(e.resolve),i=[],a=0,c=1;w(t,(function(t){var u=a++,f=!1;i.push(void 0),c++,n.call(e,t).then((function(t){f||(f=!0,i[u]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,o=R((function(){var o=b(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,u=i.f,f=0;f<n.length;f++){var l=n[f];r(t,l)||c(t,l,u(e,l))}}},e8b5:function(t,e,n){var r=n("c6b6");t.exports=Array.isArray||function(t){return"Array"==r(t)}},e95a:function(t,e,n){var r=n("b622"),o=n("3f8c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),u=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=u(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),c=n("50c4"),u=n("fc6a"),f=n("8418"),l=n("b622"),s=n("1dde"),p=s("slice"),d=l("species"),v=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(t,e){var n,r,l,s=u(this),p=c(s.length),h=a(t,p),m=a(void 0===e?p:e,p);if(i(s)&&(n=s.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[d],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return v.call(s,h,m);for(r=new(void 0===n?Array:n)(y(m-h,0)),l=0;h<m;h++,l++)h in s&&f(r,l,s[h]);return r.length=l,r}})},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fce3:function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}});
+(function(e,n){t.exports=n()})(0,(function(){"use strict";function t(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var e=Object.hasOwnProperty,n=Object.setPrototypeOf,r=Object.isFrozen,o=Object.getPrototypeOf,i=Object.getOwnPropertyDescriptor,a=Object.freeze,c=Object.seal,u=Object.create,f="undefined"!==typeof Reflect&&Reflect,l=f.apply,s=f.construct;l||(l=function(t,e,n){return t.apply(e,n)}),a||(a=function(t){return t}),c||(c=function(t){return t}),s||(s=function(e,n){return new(Function.prototype.bind.apply(e,[null].concat(t(n))))});var p=S(Array.prototype.forEach),d=S(Array.prototype.pop),v=S(Array.prototype.push),h=S(String.prototype.toLowerCase),y=S(String.prototype.match),b=S(String.prototype.replace),m=S(String.prototype.indexOf),g=S(String.prototype.trim),x=S(RegExp.prototype.test),w=O(TypeError);function S(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];return l(t,e,r)}}function O(t){return function(){for(var e=arguments.length,n=Array(e),r=0;r<e;r++)n[r]=arguments[r];return s(t,n)}}function T(t,e){n&&n(t,null);var o=e.length;while(o--){var i=e[o];if("string"===typeof i){var a=h(i);a!==i&&(r(e)||(e[o]=a),i=a)}t[i]=!0}return t}function A(t){var n=u(null),r=void 0;for(r in t)l(e,t,[r])&&(n[r]=t[r]);return n}function _(t,e){while(null!==t){var n=i(t,e);if(n){if(n.get)return S(n.get);if("function"===typeof n.value)return S(n.value)}t=o(t)}function r(t){return console.warn("fallback value for",t),null}return r}var E=a(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),j=a(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),R=a(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),P=a(["animate","color-profile","cursor","discard","fedropshadow","feimage","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),k=a(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),I=a(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),L=a(["#text"]),M=a(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),N=a(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),D=a(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),C=a(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),F=c(/\{\{[\s\S]*|[\s\S]*\}\}/gm),U=c(/<%[\s\S]*|[\s\S]*%>/gm),z=c(/^data-[\-\w.\u00B7-\uFFFF]/),H=c(/^aria-[\-\w]+$/),B=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),G=c(/^(?:\w+script|data):/i),$=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),W="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"===typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};function V(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var q=function(){return"undefined"===typeof window?null:window},Y=function(t,e){if("object"!==("undefined"===typeof t?"undefined":W(t))||"function"!==typeof t.createPolicy)return null;var n=null,r="data-tt-policy-suffix";e.currentScript&&e.currentScript.hasAttribute(r)&&(n=e.currentScript.getAttribute(r));var o="dompurify"+(n?"#"+n:"");try{return t.createPolicy(o,{createHTML:function(t){return t}})}catch(i){return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function K(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:q(),e=function(t){return K(t)};if(e.version="2.3.3",e.removed=[],!t||!t.document||9!==t.document.nodeType)return e.isSupported=!1,e;var n=t.document,r=t.document,o=t.DocumentFragment,i=t.HTMLTemplateElement,c=t.Node,u=t.Element,f=t.NodeFilter,l=t.NamedNodeMap,s=void 0===l?t.NamedNodeMap||t.MozNamedAttrMap:l,S=t.Text,O=t.Comment,X=t.DOMParser,J=t.trustedTypes,Q=u.prototype,Z=_(Q,"cloneNode"),tt=_(Q,"nextSibling"),et=_(Q,"childNodes"),nt=_(Q,"parentNode");if("function"===typeof i){var rt=r.createElement("template");rt.content&&rt.content.ownerDocument&&(r=rt.content.ownerDocument)}var ot=Y(J,n),it=ot&&Ct?ot.createHTML(""):"",at=r,ct=at.implementation,ut=at.createNodeIterator,ft=at.createDocumentFragment,lt=at.getElementsByTagName,st=n.importNode,pt={};try{pt=A(r).documentMode?r.documentMode:{}}catch(Se){}var dt={};e.isSupported="function"===typeof nt&&ct&&"undefined"!==typeof ct.createHTMLDocument&&9!==pt;var vt=F,ht=U,yt=z,bt=H,mt=G,gt=$,xt=B,wt=null,St=T({},[].concat(V(E),V(j),V(R),V(k),V(L))),Ot=null,Tt=T({},[].concat(V(M),V(N),V(D),V(C))),At=null,_t=null,Et=!0,jt=!0,Rt=!1,Pt=!1,kt=!1,It=!1,Lt=!1,Mt=!1,Nt=!1,Dt=!0,Ct=!1,Ft=!0,Ut=!0,zt=!1,Ht={},Bt=null,Gt=T({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),$t=null,Wt=T({},["audio","video","img","source","image","track"]),Vt=null,qt=T({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Yt="http://www.w3.org/1998/Math/MathML",Kt="http://www.w3.org/2000/svg",Xt="http://www.w3.org/1999/xhtml",Jt=Xt,Qt=!1,Zt=void 0,te=["application/xhtml+xml","text/html"],ee="text/html",ne=void 0,re=null,oe=r.createElement("form"),ie=function(t){re&&re===t||(t&&"object"===("undefined"===typeof t?"undefined":W(t))||(t={}),t=A(t),wt="ALLOWED_TAGS"in t?T({},t.ALLOWED_TAGS):St,Ot="ALLOWED_ATTR"in t?T({},t.ALLOWED_ATTR):Tt,Vt="ADD_URI_SAFE_ATTR"in t?T(A(qt),t.ADD_URI_SAFE_ATTR):qt,$t="ADD_DATA_URI_TAGS"in t?T(A(Wt),t.ADD_DATA_URI_TAGS):Wt,Bt="FORBID_CONTENTS"in t?T({},t.FORBID_CONTENTS):Gt,At="FORBID_TAGS"in t?T({},t.FORBID_TAGS):{},_t="FORBID_ATTR"in t?T({},t.FORBID_ATTR):{},Ht="USE_PROFILES"in t&&t.USE_PROFILES,Et=!1!==t.ALLOW_ARIA_ATTR,jt=!1!==t.ALLOW_DATA_ATTR,Rt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pt=t.SAFE_FOR_TEMPLATES||!1,kt=t.WHOLE_DOCUMENT||!1,Mt=t.RETURN_DOM||!1,Nt=t.RETURN_DOM_FRAGMENT||!1,Dt=!1!==t.RETURN_DOM_IMPORT,Ct=t.RETURN_TRUSTED_TYPE||!1,Lt=t.FORCE_BODY||!1,Ft=!1!==t.SANITIZE_DOM,Ut=!1!==t.KEEP_CONTENT,zt=t.IN_PLACE||!1,xt=t.ALLOWED_URI_REGEXP||xt,Jt=t.NAMESPACE||Xt,Zt=Zt=-1===te.indexOf(t.PARSER_MEDIA_TYPE)?ee:t.PARSER_MEDIA_TYPE,ne="application/xhtml+xml"===Zt?function(t){return t}:h,Pt&&(jt=!1),Nt&&(Mt=!0),Ht&&(wt=T({},[].concat(V(L))),Ot=[],!0===Ht.html&&(T(wt,E),T(Ot,M)),!0===Ht.svg&&(T(wt,j),T(Ot,N),T(Ot,C)),!0===Ht.svgFilters&&(T(wt,R),T(Ot,N),T(Ot,C)),!0===Ht.mathMl&&(T(wt,k),T(Ot,D),T(Ot,C))),t.ADD_TAGS&&(wt===St&&(wt=A(wt)),T(wt,t.ADD_TAGS)),t.ADD_ATTR&&(Ot===Tt&&(Ot=A(Ot)),T(Ot,t.ADD_ATTR)),t.ADD_URI_SAFE_ATTR&&T(Vt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&(Bt===Gt&&(Bt=A(Bt)),T(Bt,t.FORBID_CONTENTS)),Ut&&(wt["#text"]=!0),kt&&T(wt,["html","head","body"]),wt.table&&(T(wt,["tbody"]),delete At.tbody),a&&a(t),re=t)},ae=T({},["mi","mo","mn","ms","mtext"]),ce=T({},["foreignobject","desc","title","annotation-xml"]),ue=T({},j);T(ue,R),T(ue,P);var fe=T({},k);T(fe,I);var le=function(t){var e=nt(t);e&&e.tagName||(e={namespaceURI:Xt,tagName:"template"});var n=h(t.tagName),r=h(e.tagName);if(t.namespaceURI===Kt)return e.namespaceURI===Xt?"svg"===n:e.namespaceURI===Yt?"svg"===n&&("annotation-xml"===r||ae[r]):Boolean(ue[n]);if(t.namespaceURI===Yt)return e.namespaceURI===Xt?"math"===n:e.namespaceURI===Kt?"math"===n&&ce[r]:Boolean(fe[n]);if(t.namespaceURI===Xt){if(e.namespaceURI===Kt&&!ce[r])return!1;if(e.namespaceURI===Yt&&!ae[r])return!1;var o=T({},["title","style","font","a","script"]);return!fe[n]&&(o[n]||!ue[n])}return!1},se=function(t){v(e.removed,{element:t});try{t.parentNode.removeChild(t)}catch(Se){try{t.outerHTML=it}catch(Se){t.remove()}}},pe=function(t,n){try{v(e.removed,{attribute:n.getAttributeNode(t),from:n})}catch(Se){v(e.removed,{attribute:null,from:n})}if(n.removeAttribute(t),"is"===t&&!Ot[t])if(Mt||Nt)try{se(n)}catch(Se){}else try{n.setAttribute(t,"")}catch(Se){}},de=function(t){var e=void 0,n=void 0;if(Lt)t="<remove></remove>"+t;else{var o=y(t,/^[\r\n\t ]+/);n=o&&o[0]}"application/xhtml+xml"===Zt&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var i=ot?ot.createHTML(t):t;if(Jt===Xt)try{e=(new X).parseFromString(i,Zt)}catch(Se){}if(!e||!e.documentElement){e=ct.createDocument(Jt,"template",null);try{e.documentElement.innerHTML=Qt?"":i}catch(Se){}}var a=e.body||e.documentElement;return t&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Jt===Xt?lt.call(e,kt?"html":"body")[0]:kt?e.documentElement:a},ve=function(t){return ut.call(t.ownerDocument||t,t,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},he=function(t){return!(t instanceof S||t instanceof O)&&!("string"===typeof t.nodeName&&"string"===typeof t.textContent&&"function"===typeof t.removeChild&&t.attributes instanceof s&&"function"===typeof t.removeAttribute&&"function"===typeof t.setAttribute&&"string"===typeof t.namespaceURI&&"function"===typeof t.insertBefore)},ye=function(t){return"object"===("undefined"===typeof c?"undefined":W(c))?t instanceof c:t&&"object"===("undefined"===typeof t?"undefined":W(t))&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},be=function(t,n,r){dt[t]&&p(dt[t],(function(t){t.call(e,n,r,re)}))},me=function(t){var n=void 0;if(be("beforeSanitizeElements",t,null),he(t))return se(t),!0;if(y(t.nodeName,/[\u0080-\uFFFF]/))return se(t),!0;var r=ne(t.nodeName);if(be("uponSanitizeElement",t,{tagName:r,allowedTags:wt}),!ye(t.firstElementChild)&&(!ye(t.content)||!ye(t.content.firstElementChild))&&x(/<[/\w]/g,t.innerHTML)&&x(/<[/\w]/g,t.textContent))return se(t),!0;if("select"===r&&x(/<template/i,t.innerHTML))return se(t),!0;if(!wt[r]||At[r]){if(Ut&&!Bt[r]){var o=nt(t)||t.parentNode,i=et(t)||t.childNodes;if(i&&o)for(var a=i.length,c=a-1;c>=0;--c)o.insertBefore(Z(i[c],!0),tt(t))}return se(t),!0}return t instanceof u&&!le(t)?(se(t),!0):"noscript"!==r&&"noembed"!==r||!x(/<\/no(script|embed)/i,t.innerHTML)?(Pt&&3===t.nodeType&&(n=t.textContent,n=b(n,vt," "),n=b(n,ht," "),t.textContent!==n&&(v(e.removed,{element:t.cloneNode()}),t.textContent=n)),be("afterSanitizeElements",t,null),!1):(se(t),!0)},ge=function(t,e,n){if(Ft&&("id"===e||"name"===e)&&(n in r||n in oe))return!1;if(jt&&!_t[e]&&x(yt,e));else if(Et&&x(bt,e));else{if(!Ot[e]||_t[e])return!1;if(Vt[e]);else if(x(xt,b(n,gt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==m(n,"data:")||!$t[t]){if(Rt&&!x(mt,b(n,gt,"")));else if(n)return!1}else;}return!0},xe=function(t){var n=void 0,r=void 0,o=void 0,i=void 0;be("beforeSanitizeAttributes",t,null);var a=t.attributes;if(a){var c={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ot};i=a.length;while(i--){n=a[i];var u=n,f=u.name,l=u.namespaceURI;if(r=g(n.value),o=ne(f),c.attrName=o,c.attrValue=r,c.keepAttr=!0,c.forceKeepAttr=void 0,be("uponSanitizeAttribute",t,c),r=c.attrValue,!c.forceKeepAttr&&(pe(f,t),c.keepAttr))if(x(/\/>/i,r))pe(f,t);else{Pt&&(r=b(r,vt," "),r=b(r,ht," "));var s=ne(t.nodeName);if(ge(s,o,r))try{l?t.setAttributeNS(l,f,r):t.setAttribute(f,r),d(e.removed)}catch(Se){}}}be("afterSanitizeAttributes",t,null)}},we=function t(e){var n=void 0,r=ve(e);be("beforeSanitizeShadowDOM",e,null);while(n=r.nextNode())be("uponSanitizeShadowNode",n,null),me(n)||(n.content instanceof o&&t(n.content),xe(n));be("afterSanitizeShadowDOM",e,null)};return e.sanitize=function(r,i){var a=void 0,u=void 0,f=void 0,l=void 0,s=void 0;if(Qt=!r,Qt&&(r="\x3c!--\x3e"),"string"!==typeof r&&!ye(r)){if("function"!==typeof r.toString)throw w("toString is not a function");if(r=r.toString(),"string"!==typeof r)throw w("dirty is not a string, aborting")}if(!e.isSupported){if("object"===W(t.toStaticHTML)||"function"===typeof t.toStaticHTML){if("string"===typeof r)return t.toStaticHTML(r);if(ye(r))return t.toStaticHTML(r.outerHTML)}return r}if(It||ie(i),e.removed=[],"string"===typeof r&&(zt=!1),zt);else if(r instanceof c)a=de("\x3c!----\x3e"),u=a.ownerDocument.importNode(r,!0),1===u.nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?a=u:a.appendChild(u);else{if(!Mt&&!Pt&&!kt&&-1===r.indexOf("<"))return ot&&Ct?ot.createHTML(r):r;if(a=de(r),!a)return Mt?null:it}a&&Lt&&se(a.firstChild);var p=ve(zt?r:a);while(f=p.nextNode())3===f.nodeType&&f===l||me(f)||(f.content instanceof o&&we(f.content),xe(f),l=f);if(l=null,zt)return r;if(Mt){if(Nt){s=ft.call(a.ownerDocument);while(a.firstChild)s.appendChild(a.firstChild)}else s=a;return Dt&&(s=st.call(n,s,!0)),s}var d=kt?a.outerHTML:a.innerHTML;return Pt&&(d=b(d,vt," "),d=b(d,ht," ")),ot&&Ct?ot.createHTML(d):d},e.setConfig=function(t){ie(t),It=!0},e.clearConfig=function(){re=null,It=!1},e.isValidAttribute=function(t,e,n){re||ie({});var r=ne(t),o=ne(e);return ge(r,o,n)},e.addHook=function(t,e){"function"===typeof e&&(dt[t]=dt[t]||[],v(dt[t],e))},e.removeHook=function(t){dt[t]&&d(dt[t])},e.removeHooks=function(t){dt[t]&&(dt[t]=[])},e.removeAllHooks=function(){dt={}},e}var X=K();return X}))},c1f9:function(t,e,n){var r=n("23e7"),o=n("2266"),i=n("8418");r({target:"Object",stat:!0},{fromEntries:function(t){var e={};return o(t,(function(t,n){i(e,t,n)}),{AS_ENTRIES:!0}),e}})},c430:function(t,e){t.exports=!1},c6b6:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},c6cd:function(t,e,n){var r=n("da84"),o=n("ce4e"),i="__core-js_shared__",a=r[i]||o(i,{});t.exports=a},c8d2:function(t,e,n){var r=n("d039"),o=n("5899"),i="​…᠎";t.exports=function(t){return r((function(){return!!o[t]()||i[t]()!=i||o[t].name!==t}))}},ca84:function(t,e,n){var r=n("5135"),o=n("fc6a"),i=n("4d64").indexOf,a=n("d012");t.exports=function(t,e){var n,c=o(t),u=0,f=[];for(n in c)!r(a,n)&&r(c,n)&&f.push(n);while(e.length>u)r(c,n=e[u++])&&(~i(f,n)||f.push(n));return f}},caad:function(t,e,n){"use strict";var r=n("23e7"),o=n("4d64").includes,i=n("44d2");r({target:"Array",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},cc12:function(t,e,n){var r=n("da84"),o=n("861d"),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},cca6:function(t,e,n){var r=n("23e7"),o=n("60da");r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},cdf9:function(t,e,n){var r=n("825a"),o=n("861d"),i=n("f069");t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t),a=n.resolve;return a(e),n.promise}},ce4e:function(t,e,n){var r=n("da84");t.exports=function(t,e){try{Object.defineProperty(r,t,{value:e,configurable:!0,writable:!0})}catch(n){r[t]=e}return e}},d012:function(t,e){t.exports={}},d039:function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},d066:function(t,e,n){var r=n("da84"),o=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?o(r[t]):r[t]&&r[t][e]}},d1e7:function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},d28b:function(t,e,n){var r=n("746f");r("iterator")},d2bb:function(t,e,n){var r=n("825a"),o=n("3bbe");t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{t=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,t.call(n,[]),e=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),e?t.call(n,i):n.__proto__=i,n}}():void 0)},d3b7:function(t,e,n){var r=n("00ee"),o=n("6eeb"),i=n("b041");r||o(Object.prototype,"toString",i,{unsafe:!0})},d44e:function(t,e,n){var r=n("9bf2").f,o=n("5135"),i=n("b622"),a=i("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},d4c3:function(t,e,n){var r=n("342f"),o=n("da84");t.exports=/ipad|iphone|ipod/i.test(r)&&void 0!==o.Pebble},d58f:function(t,e,n){var r=n("1c0b"),o=n("7b0b"),i=n("44ad"),a=n("50c4"),c=function(t){return function(e,n,c,u){r(n);var f=o(e),l=i(f),s=a(f.length),p=t?s-1:0,d=t?-1:1;if(c<2)while(1){if(p in l){u=l[p],p+=d;break}if(p+=d,t?p<0:s<=p)throw TypeError("Reduce of empty array with no initial value")}for(;t?p>=0:s>p;p+=d)p in l&&(u=n(u,l[p],p,f));return u}};t.exports={left:c(!1),right:c(!0)}},d784:function(t,e,n){"use strict";n("ac1f");var r=n("6eeb"),o=n("9263"),i=n("d039"),a=n("b622"),c=n("9112"),u=a("species"),f=RegExp.prototype;t.exports=function(t,e,n,l){var s=a(t),p=!i((function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})),d=p&&!i((function(){var e=!1,n=/a/;return"split"===t&&(n={},n.constructor={},n.constructor[u]=function(){return n},n.flags="",n[s]=/./[s]),n.exec=function(){return e=!0,null},n[s](""),!e}));if(!p||!d||n){var v=/./[s],h=e(s,""[t],(function(t,e,n,r,i){var a=e.exec;return a===o||a===f.exec?p&&!i?{done:!0,value:v.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}));r(String.prototype,t,h[0]),r(f,s,h[1])}l&&c(f[s],"sham",!0)}},d9b5:function(t,e,n){var r=n("d066"),o=n("fdbf");t.exports=o?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return"function"==typeof e&&Object(t)instanceof e}},da84:function(t,e,n){(function(e){var n=function(t){return t&&t.Math==Math&&t};t.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||function(){return this}()||Function("return this")()}).call(this,n("24aa"))},ddb0:function(t,e,n){var r=n("da84"),o=n("fdbc"),i=n("e260"),a=n("9112"),c=n("b622"),u=c("iterator"),f=c("toStringTag"),l=i.values;for(var s in o){var p=r[s],d=p&&p.prototype;if(d){if(d[u]!==l)try{a(d,u,l)}catch(h){d[u]=l}if(d[f]||a(d,f,s),o[s])for(var v in i)if(d[v]!==i[v])try{a(d,v,i[v])}catch(h){d[v]=i[v]}}}},df75:function(t,e,n){var r=n("ca84"),o=n("7839");t.exports=Object.keys||function(t){return r(t,o)}},e01a:function(t,e,n){"use strict";var r=n("23e7"),o=n("83ab"),i=n("da84"),a=n("5135"),c=n("861d"),u=n("9bf2").f,f=n("e893"),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||void 0!==l().description)){var s={},p=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),e=this instanceof p?new l(t):void 0===t?l():l(t);return""===t&&(s[e]=!0),e};f(p,l);var d=p.prototype=l.prototype;d.constructor=p;var v=d.toString,h="Symbol(test)"==String(l("test")),y=/^Symbol\((.*)\)[^)]+$/;u(d,"description",{configurable:!0,get:function(){var t=c(this)?this.valueOf():this,e=v.call(t);if(a(s,t))return"";var n=h?e.slice(7,-1):e.replace(y,"$1");return""===n?void 0:n}}),r({global:!0,forced:!0},{Symbol:p})}},e163:function(t,e,n){var r=n("5135"),o=n("7b0b"),i=n("f772"),a=n("e177"),c=i("IE_PROTO"),u=Object.prototype;t.exports=a?Object.getPrototypeOf:function(t){return t=o(t),r(t,c)?t[c]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},e177:function(t,e,n){var r=n("d039");t.exports=!r((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},e260:function(t,e,n){"use strict";var r=n("fc6a"),o=n("44d2"),i=n("3f8c"),a=n("69f3"),c=n("7dd0"),u="Array Iterator",f=a.set,l=a.getterFor(u);t.exports=c(Array,"Array",(function(t,e){f(this,{type:u,target:r(t),index:0,kind:e})}),(function(){var t=l(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},e2cc:function(t,e,n){var r=n("6eeb");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},e538:function(t,e,n){var r=n("b622");e.f=r},e667:function(t,e){t.exports=function(t){try{return{error:!1,value:t()}}catch(e){return{error:!0,value:e}}}},e6cf:function(t,e,n){"use strict";var r,o,i,a,c=n("23e7"),u=n("c430"),f=n("da84"),l=n("d066"),s=n("fea9"),p=n("6eeb"),d=n("e2cc"),v=n("d2bb"),h=n("d44e"),y=n("2626"),b=n("861d"),m=n("1c0b"),g=n("19aa"),x=n("8925"),w=n("2266"),S=n("1c7e"),O=n("4840"),T=n("2cf4").set,A=n("b575"),_=n("cdf9"),E=n("44de"),j=n("f069"),R=n("e667"),P=n("69f3"),k=n("94ca"),I=n("b622"),L=n("6069"),M=n("605d"),N=n("2d00"),D=I("species"),C="Promise",F=P.get,U=P.set,z=P.getterFor(C),H=s&&s.prototype,B=s,G=H,$=f.TypeError,W=f.document,V=f.process,q=j.f,Y=q,K=!!(W&&W.createEvent&&f.dispatchEvent),X="function"==typeof PromiseRejectionEvent,J="unhandledrejection",Q="rejectionhandled",Z=0,tt=1,et=2,nt=1,rt=2,ot=!1,it=k(C,(function(){var t=x(B),e=t!==String(B);if(!e&&66===N)return!0;if(u&&!G["finally"])return!0;if(N>=51&&/native code/.test(t))return!1;var n=new B((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))},o=n.constructor={};return o[D]=r,ot=n.then((function(){}))instanceof r,!ot||!e&&L&&!X})),at=it||!S((function(t){B.all(t)["catch"]((function(){}))})),ct=function(t){var e;return!(!b(t)||"function"!=typeof(e=t.then))&&e},ut=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;A((function(){var r=t.value,o=t.state==tt,i=0;while(n.length>i){var a,c,u,f=n[i++],l=o?f.ok:f.fail,s=f.resolve,p=f.reject,d=f.domain;try{l?(o||(t.rejection===rt&&pt(t),t.rejection=nt),!0===l?a=r:(d&&d.enter(),a=l(r),d&&(d.exit(),u=!0)),a===f.promise?p($("Promise-chain cycle")):(c=ct(a))?c.call(a,s,p):s(a)):p(r)}catch(v){d&&!u&&d.exit(),p(v)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&lt(t)}))}},ft=function(t,e,n){var r,o;K?(r=W.createEvent("Event"),r.promise=e,r.reason=n,r.initEvent(t,!1,!0),f.dispatchEvent(r)):r={promise:e,reason:n},!X&&(o=f["on"+t])?o(r):t===J&&E("Unhandled promise rejection",n)},lt=function(t){T.call(f,(function(){var e,n=t.facade,r=t.value,o=st(t);if(o&&(e=R((function(){M?V.emit("unhandledRejection",r,n):ft(J,n,r)})),t.rejection=M||st(t)?rt:nt,e.error))throw e.value}))},st=function(t){return t.rejection!==nt&&!t.parent},pt=function(t){T.call(f,(function(){var e=t.facade;M?V.emit("rejectionHandled",e):ft(Q,e,t.value)}))},dt=function(t,e,n){return function(r){t(e,r,n)}},vt=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=et,ut(t,!0))},ht=function(t,e,n){if(!t.done){t.done=!0,n&&(t=n);try{if(t.facade===e)throw $("Promise can't be resolved itself");var r=ct(e);r?A((function(){var n={done:!1};try{r.call(e,dt(ht,n,t),dt(vt,n,t))}catch(o){vt(n,o,t)}})):(t.value=e,t.state=tt,ut(t,!1))}catch(o){vt({done:!1},o,t)}}};if(it&&(B=function(t){g(this,B,C),m(t),r.call(this);var e=F(this);try{t(dt(ht,e),dt(vt,e))}catch(n){vt(e,n)}},G=B.prototype,r=function(t){U(this,{type:C,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:Z,value:void 0})},r.prototype=d(G,{then:function(t,e){var n=z(this),r=q(O(this,B));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?V.domain:void 0,n.parent=!0,n.reactions.push(r),n.state!=Z&&ut(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r,e=F(t);this.promise=t,this.resolve=dt(ht,e),this.reject=dt(vt,e)},j.f=q=function(t){return t===B||t===i?new o(t):Y(t)},!u&&"function"==typeof s&&H!==Object.prototype)){a=H.then,ot||(p(H,"then",(function(t,e){var n=this;return new B((function(t,e){a.call(n,t,e)})).then(t,e)}),{unsafe:!0}),p(H,"catch",G["catch"],{unsafe:!0}));try{delete H.constructor}catch(yt){}v&&v(H,G)}c({global:!0,wrap:!0,forced:it},{Promise:B}),h(B,C,!1,!0),y(C),i=l(C),c({target:C,stat:!0,forced:it},{reject:function(t){var e=q(this);return e.reject.call(void 0,t),e.promise}}),c({target:C,stat:!0,forced:u||it},{resolve:function(t){return _(u&&this===i?B:this,t)}}),c({target:C,stat:!0,forced:at},{all:function(t){var e=this,n=q(e),r=n.resolve,o=n.reject,i=R((function(){var n=m(e.resolve),i=[],a=0,c=1;w(t,(function(t){var u=a++,f=!1;i.push(void 0),c++,n.call(e,t).then((function(t){f||(f=!0,i[u]=t,--c||r(i))}),o)})),--c||r(i)}));return i.error&&o(i.value),n.promise},race:function(t){var e=this,n=q(e),r=n.reject,o=R((function(){var o=m(e.resolve);w(t,(function(t){o.call(e,t).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},e893:function(t,e,n){var r=n("5135"),o=n("56ef"),i=n("06cf"),a=n("9bf2");t.exports=function(t,e){for(var n=o(e),c=a.f,u=i.f,f=0;f<n.length;f++){var l=n[f];r(t,l)||c(t,l,u(e,l))}}},e8b5:function(t,e,n){var r=n("c6b6");t.exports=Array.isArray||function(t){return"Array"==r(t)}},e95a:function(t,e,n){var r=n("b622"),o=n("3f8c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},f069:function(t,e,n){"use strict";var r=n("1c0b"),o=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)};t.exports.f=function(t){return new o(t)}},f5df:function(t,e,n){var r=n("00ee"),o=n("c6b6"),i=n("b622"),a=i("toStringTag"),c="Arguments"==o(function(){return arguments}()),u=function(t,e){try{return t[e]}catch(n){}};t.exports=r?o:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=u(e=Object(t),a))?n:c?o(e):"Object"==(r=o(e))&&"function"==typeof e.callee?"Arguments":r}},f772:function(t,e,n){var r=n("5692"),o=n("90e3"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},fb6a:function(t,e,n){"use strict";var r=n("23e7"),o=n("861d"),i=n("e8b5"),a=n("23cb"),c=n("50c4"),u=n("fc6a"),f=n("8418"),l=n("b622"),s=n("1dde"),p=s("slice"),d=l("species"),v=[].slice,h=Math.max;r({target:"Array",proto:!0,forced:!p},{slice:function(t,e){var n,r,l,s=u(this),p=c(s.length),y=a(t,p),b=a(void 0===e?p:e,p);if(i(s)&&(n=s.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)?o(n)&&(n=n[d],null===n&&(n=void 0)):n=void 0,n===Array||void 0===n))return v.call(s,y,b);for(r=new(void 0===n?Array:n)(h(b-y,0)),l=0;y<b;y++,l++)y in s&&f(r,l,s[y]);return r.length=l,r}})},fc6a:function(t,e,n){var r=n("44ad"),o=n("1d80");t.exports=function(t){return r(o(t))}},fce3:function(t,e,n){var r=n("d039"),o=n("da84"),i=o.RegExp;t.exports=r((function(){var t=i(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)}))},fdbc:function(t,e){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},fdbf:function(t,e,n){var r=n("4930");t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},fea9:function(t,e,n){var r=n("da84");t.exports=r.Promise}});
//# sourceMappingURL=MatomoPolyfills.min.js.map \ No newline at end of file
diff --git a/plugins/CoreVue/polyfills/src/index.ts b/plugins/CoreVue/polyfills/src/index.ts
index 2b16439410..56a48ae823 100644
--- a/plugins/CoreVue/polyfills/src/index.ts
+++ b/plugins/CoreVue/polyfills/src/index.ts
@@ -43,8 +43,24 @@ window.Vue.toDisplayString = function matomoToDisplayString(val: unknown): strin
return result;
};
+function hasSafeRel(rel: string) {
+ const parts = rel.split(/\s+/);
+ return parts.includes('noopener') && parts.includes('noreferrer');
+}
+
+// remove target=_blank if a link doesn't have noopener noreferrer
+DOMPurify.addHook('afterSanitizeAttributes', (node: Element) => {
+ if (node.hasAttribute('target')
+ && node.getAttribute('target') === '_blank'
+ && (!node.hasAttribute('rel')
+ || !hasSafeRel(node.getAttribute('rel')))
+ ) {
+ node.removeAttribute('target');
+ }
+});
+
window.vueSanitize = function vueSanitize(val: unknown): string {
- let result = DOMPurify.sanitize(val);
+ let result = DOMPurify.sanitize(val, { ADD_ATTR: ['target'] });
result = result.replace(/{{/g, '{&#8291;{');
return result;
};
diff --git a/plugins/CoreVue/types/index.d.ts b/plugins/CoreVue/types/index.d.ts
index 9c1461cee0..784ee26969 100644
--- a/plugins/CoreVue/types/index.d.ts
+++ b/plugins/CoreVue/types/index.d.ts
@@ -87,6 +87,9 @@ declare global {
lazyScrollToContent(): void;
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;
+ calculateEvolution(currentValue: number, pastValue?: number|null): number;
+ sendContentAsDownload(filename: string, content: any, mimeType?: string): void;
}
let piwikHelper: PiwikHelperGlobal;
@@ -163,6 +166,8 @@ declare global {
interface WidgetsHelper {
availableWidgets?: unknown[];
getAvailableWidgets(callback?: (widgets: Record<string, unknown[]>) => unknown);
+
+ firstGetAvailableWidgetsCall?: Promise<void>;
}
let widgetsHelper: WidgetsHelper;
@@ -189,6 +194,7 @@ declare global {
require(p: string): any;
initTopControls(): void;
vueSanitize(content: string): string;
+ showEmptyDashboardNotification(): void;
}
}
diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts
-Subproject 96eae0d9da9b2cd93eed657c715336f08ec2fa0
+Subproject a63b5401fc9a330e9fed9eb651c3f3cb9f48354
diff --git a/plugins/CustomDimensions/API.php b/plugins/CustomDimensions/API.php
index d2ef2f4983..1e93914520 100644
--- a/plugins/CustomDimensions/API.php
+++ b/plugins/CustomDimensions/API.php
@@ -9,12 +9,10 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\Common;
-use Piwik\DataTable\Row;
use Piwik\Archive;
use Piwik\DataTable;
use Piwik\Filesystem;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
diff --git a/plugins/CustomDimensions/Archiver.php b/plugins/CustomDimensions/Archiver.php
index 262c7807ec..ebb781cd8b 100644
--- a/plugins/CustomDimensions/Archiver.php
+++ b/plugins/CustomDimensions/Archiver.php
@@ -257,6 +257,10 @@ class Archiver extends \Piwik\Plugin\Archiver
$this->dataArray->sumMetricsActions($label, $row);
+ if (empty($row['url'])) {
+ continue;
+ }
+
// make sure we always work with normalized URL no matter how the individual action stores it
$normalized = Tracker\PageUrl::normalizeUrl($row['url']);
$row['url'] = $normalized['url'];
diff --git a/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php b/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
index cd298d6a7c..a6f11f890b 100644
--- a/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
+++ b/plugins/CustomDimensions/Columns/Metrics/AverageTimeOnDimension.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Plugins\CustomDimensions\Columns\Metrics;
-use Piwik\DataTable\Row;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugins\Actions\Columns\Metrics\AverageTimeOnPage;
diff --git a/plugins/CustomDimensions/Commands/AddCustomDimension.php b/plugins/CustomDimensions/Commands/AddCustomDimension.php
index 44aee50ac2..1b67650627 100644
--- a/plugins/CustomDimensions/Commands/AddCustomDimension.php
+++ b/plugins/CustomDimensions/Commands/AddCustomDimension.php
@@ -13,7 +13,6 @@ use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Tracker\Cache;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomDimensions/Commands/Info.php b/plugins/CustomDimensions/Commands/Info.php
index a72e2f87c6..ce43bc074c 100644
--- a/plugins/CustomDimensions/Commands/Info.php
+++ b/plugins/CustomDimensions/Commands/Info.php
@@ -12,9 +12,7 @@ namespace Piwik\Plugins\CustomDimensions\Commands;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/**
diff --git a/plugins/CustomDimensions/Commands/RemoveCustomDimension.php b/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
index e571fb8dc7..dda9da4127 100644
--- a/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
+++ b/plugins/CustomDimensions/Commands/RemoveCustomDimension.php
@@ -14,7 +14,6 @@ use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Tracker\Cache;
-use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomDimensions/Controller.php b/plugins/CustomDimensions/Controller.php
index bc7fec5738..6defa629cc 100644
--- a/plugins/CustomDimensions/Controller.php
+++ b/plugins/CustomDimensions/Controller.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\View;
class Controller extends \Piwik\Plugin\ControllerAdmin
{
diff --git a/plugins/CustomDimensions/Dao/AutoSuggest.php b/plugins/CustomDimensions/Dao/AutoSuggest.php
index 6b6c35c3b5..320a43e20a 100644
--- a/plugins/CustomDimensions/Dao/AutoSuggest.php
+++ b/plugins/CustomDimensions/Dao/AutoSuggest.php
@@ -10,10 +10,8 @@
namespace Piwik\Plugins\CustomDimensions\Dao;
use Piwik\API\Request;
-use Piwik\Common;
use Piwik\DataTable;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\CustomDimensions\Archiver;
class AutoSuggest
diff --git a/plugins/CustomDimensions/Dao/Configuration.php b/plugins/CustomDimensions/Dao/Configuration.php
index d6894a72b8..03aa4eac85 100644
--- a/plugins/CustomDimensions/Dao/Configuration.php
+++ b/plugins/CustomDimensions/Dao/Configuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\Dao;
-use Piwik\API\Request;
use Piwik\Common;
use Piwik\Db;
use Piwik\DbHelper;
diff --git a/plugins/CustomDimensions/Dao/LogTable.php b/plugins/CustomDimensions/Dao/LogTable.php
index 57b0e29575..d932af5d16 100644
--- a/plugins/CustomDimensions/Dao/LogTable.php
+++ b/plugins/CustomDimensions/Dao/LogTable.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\CustomDimensions\Dao;
use Piwik\Common;
use Piwik\DataAccess\TableMetadata;
-use Piwik\DataTable;
use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
diff --git a/plugins/CustomDimensions/DataArray.php b/plugins/CustomDimensions/DataArray.php
index 5e87c07954..c5c8565b5d 100644
--- a/plugins/CustomDimensions/DataArray.php
+++ b/plugins/CustomDimensions/DataArray.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\CustomDimensions;
-use Piwik\Metrics;
/**
* The DataArray is a data structure used to aggregate datasets,
diff --git a/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php b/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
index 759c148c9c..fe07f4b461 100644
--- a/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
+++ b/plugins/CustomDimensions/DataTable/Filter/AddSegmentMetadata.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\CustomDimensions\Archiver;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
diff --git a/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php b/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
index a6ecdd779f..3d8897e294 100644
--- a/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
+++ b/plugins/CustomDimensions/DataTable/Filter/AddSubtableSegmentMetadata.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\CustomDimensions\Archiver;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
-use Piwik\Tracker\PageUrl;
class AddSubtableSegmentMetadata extends BaseFilter
{
diff --git a/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php b/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
index dde4985376..d0e36f0a32 100644
--- a/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
+++ b/plugins/CustomDimensions/DataTable/Filter/RemoveUserIfNeeded.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\CoreHome\Columns\UserId;
diff --git a/plugins/CustomDimensions/Dimension/Extraction.php b/plugins/CustomDimensions/Dimension/Extraction.php
index 48b574a98f..e08e66cd70 100644
--- a/plugins/CustomDimensions/Dimension/Extraction.php
+++ b/plugins/CustomDimensions/Dimension/Extraction.php
@@ -12,8 +12,6 @@ namespace Piwik\Plugins\CustomDimensions\Dimension;
use Piwik\Common;
use Piwik\Tracker\Request;
use Piwik\Tracker\Action;
-use Piwik\Url;
-use Piwik\UrlHelper;
use Piwik\Piwik;
use Exception;
use Piwik\Validators\Regex;
diff --git a/plugins/CustomDimensions/Dimension/Scope.php b/plugins/CustomDimensions/Dimension/Scope.php
index affea4b25b..1ea6190cdf 100644
--- a/plugins/CustomDimensions/Dimension/Scope.php
+++ b/plugins/CustomDimensions/Dimension/Scope.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions\Dimension;
-use \Exception;
use Piwik\Plugins\CustomDimensions\CustomDimensions;
class Scope
diff --git a/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php b/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
index c933ad0858..e714eb8051 100644
--- a/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
+++ b/plugins/CustomDimensions/Tracker/CustomDimensionsRequestProcessor.php
@@ -18,7 +18,6 @@ use Piwik\Tracker\Model;
use Piwik\Tracker\Request;
use Piwik\Tracker\RequestProcessor;
use Piwik\Tracker\Visit\VisitProperties;
-use Piwik\Url;
/**
* Handles tracking of custom dimensions
diff --git a/plugins/CustomDimensions/Updates/0.1.2.php b/plugins/CustomDimensions/Updates/0.1.2.php
index 0730338976..ad59a6beda 100644
--- a/plugins/CustomDimensions/Updates/0.1.2.php
+++ b/plugins/CustomDimensions/Updates/0.1.2.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates as PiwikUpdates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/CustomDimensions/VisitorDetails.php b/plugins/CustomDimensions/VisitorDetails.php
index f8834aa9b6..07762a84c4 100644
--- a/plugins/CustomDimensions/VisitorDetails.php
+++ b/plugins/CustomDimensions/VisitorDetails.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\CustomDimensions;
use Piwik\API\Request;
-use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
diff --git a/plugins/CustomDimensions/lang/ca.json b/plugins/CustomDimensions/lang/ca.json
index 0967ef424b..b87f39eb17 100644
--- a/plugins/CustomDimensions/lang/ca.json
+++ b/plugins/CustomDimensions/lang/ca.json
@@ -1 +1,44 @@
-{}
+{
+ "CustomDimensions": {
+ "CannotBeDeleted": "Una dimensió personalitzada no es pot suprimir, només es pot desactivar.",
+ "ColumnAvgTimeOnDimension": "Temps mitjà a la dimensió",
+ "ColumnUniqueActions": "Accions úniques",
+ "ConfigureDimension": "Configura la %1$s dimensió personalitzada %2$s",
+ "ConfigureNewDimension": "Configureu una nova dimensió",
+ "CustomDimensionId": "Dimensió personalitzada (Id %d)",
+ "CustomDimensions": "Dimensions personalitzades",
+ "CustomDimensionsIntro": "En creant %1$sDimensions personalitzades%2$s podeu recollir qualsevol dada personalitzada per a \"%3$s\".",
+ "CustomDimensionsIntroNext": "Matomo crearà un informe per a cada dimensió personalitzada (incloent-hi el percentatge de conversió de cadascun dels vostres objectius), a més de permetre segmentar fàcilment els usuaris en funció d'aquests valors. Les dimensions personalitzades són semblants a les %1$svariables personalitzades%2$s, però hi ha unes quantes %3$sdiferències entre les dimensions personalitzades i les variables personalitzades%4$s.",
+ "DimensionCreated": "Dimensió personalitzada creada",
+ "DimensionUpdated": "Dimensió personalitzada actualitzada",
+ "EmptyValue": "valor buit",
+ "ExampleCreateCustomDimensions": "Per exemple, per crear %s noves dimensions personalitzades a l'acció d'abast, executeu l'ordre següent:",
+ "ExampleValue": "valordimensió",
+ "ExceptionDimensionDoesNotExist": "No existeix la dimensió %1$d per al lloc web %2$d.",
+ "ExceptionDimensionIsNotActive": "La dimensió %1$d per al lloc web %2$d no està activa.",
+ "ExtractValue": "Extreure valor",
+ "Extractions": "Extraccions",
+ "ExtractionsHelp": "Això és opcional. Es pot utilitzar una expressió regular per extreure automàticament el valor d'aquesta dimensió personalitzada d'una URL o d'un títol de pàgina. D'aquesta manera, el valor de la dimensió personalitzada no s'ha d'establir manualment mitjançant un client de seguiment. Un valor encara es pot establir manualment mitjançant l'API Matomo Tracker. Els valors de dimensions establerts manualment als clients de seguiment sempre tenen prioritat sobre les extraccions. Si es defineixen diverses extraccions, s'utilitza la primera extracció que coincideixi. No necessiteu escapar de les barres inclinades, ja que Matomo ho fa automàticament. Per exemple, utilitzeu /news/ en comptes de \\/news\\/.",
+ "HowToCreateCustomDimension": "Per crear una nova dimensió personalitzada, executeu l'ordre següent a la vostra instal·lació de Matomo:",
+ "HowToManyCreateCustomDimensions": "Si voleu crear diverses dimensions personalitzades noves alhora, només cal que afegiu el nombre de dimensions que es crearan. Com que tots els canvis de la base de dades s'executaran en una sola instrucció, és possible que no trigui gaire més a afegir diverses dimensions personalitzades alhora.",
+ "HowToTrackManuallyTitle": "Seguiment d'un valor per a aquesta dimensió manualment",
+ "HowToTrackManuallyViaHttp": "Per fer el seguiment d'un valor mitjançant l'API de seguiment HTTP, utilitzeu el paràmetre de seguiment \"dimensió\" seguit de l'identificador de dimensió personalitzada:",
+ "HowToTrackManuallyViaJs": "Per fer el seguiment d'un valor al rastrejador de JavaScript crideu:",
+ "HowToTrackManuallyViaJsDetails": "Per obtenir més informació llegiu la %1$sguia de seguiment de JavaScript per a les dimensions personalitzades%2$s",
+ "HowToTrackManuallyViaPhp": "Per fer un seguiment d'un valor al PHP Tracker crideu:",
+ "IncreaseAvailableCustomDimensionsTakesLong": "La creació d'una nova dimensió personalitzada pot trigar molt de temps en funció de la mida de la base de dades, ja que requereix canvis d'esquema a la base de dades. Per tant només és possible fer-ho mitjançant una ordre de consola que s'ha d'executar a la línia de comandes.",
+ "IncreaseAvailableCustomDimensionsTitle": "Augmenteu el nombre de dimensions personalitzades disponibles",
+ "NameAllowedCharacters": "Els caràcters permesos són qualsevol lletra, nombre, espai en blanc, guió i subratllat.",
+ "NameIsRequired": "Es necessita un nom.",
+ "NameIsTooLong": "El nom conté massa caràcters, utilitzeu fins a %d caràcters.",
+ "NoCustomDimensionConfigured": "Encara no s'ha configurat cap dimensió personalitzada, configureu-ne una ara.",
+ "NoValue": "cap valor",
+ "PageUrlParam": "Paràmetre de la URL de la pàgina",
+ "PluginDescription": "Amplieu Matomo a les vostres necessitats mitjançant la definició i el seguiment de dimensions personalitzades a l'abast Acció o Visita",
+ "ScopeDescriptionAction": "Les dimensions personalitzades de l'àmbit \"Acció\" es poden enviar amb qualsevol acció (visualització de la pàgina, baixada, esdeveniment, etc.).",
+ "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.",
+ "XofYLeft": "Queden %1$s de %2$s dimensions"
+ }
+}
diff --git a/plugins/CustomDimensions/lang/id.json b/plugins/CustomDimensions/lang/id.json
index 0ddd969c06..c136c14ed6 100644
--- a/plugins/CustomDimensions/lang/id.json
+++ b/plugins/CustomDimensions/lang/id.json
@@ -1,6 +1,7 @@
{
"CustomDimensions": {
+ "ColumnUniqueActions": "Tindakan Unik",
"CustomDimensions": "Dimensi Sesuaian",
"NameIsRequired": "Nama dibutuhkan."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CustomDimensions/lang/nb.json b/plugins/CustomDimensions/lang/nb.json
index 72b3ddb3f3..ad5bf35b06 100644
--- a/plugins/CustomDimensions/lang/nb.json
+++ b/plugins/CustomDimensions/lang/nb.json
@@ -34,6 +34,7 @@
"NoCustomDimensionConfigured": "Ingen tilpassede dimensjoner er konfigurert ennå. Konfigurer en nå.",
"NoValue": "ingen verdi",
"PageUrlParam": "Side-URL-parameter",
+ "PluginDescription": "Utvid Matomo til dine behov ved å definere å spore egendefinerte dimensjoner innenfor rammen «handling» eller «Besøk»",
"ScopeDescriptionAction": "Tilpassede dimensjoner av typen «handling» kan sendes sammen med alle handlinger (sidevisning, nedlasting, hendelse, etc.).",
"ScopeDescriptionActionMoreInfo": "Uttrekk kan defineres slik at verdien til den tilpassede dimensjonen hentes ut fra side-URL, sidetittel eller et spørreparameter i URL-en.",
"ScopeDescriptionVisit": "Tilpassede dimensjoner av typen «Besøk» kan sendes sammen med alle sporingsspørringer og lagres i besøket.",
diff --git a/plugins/CustomDimensions/lang/sq.json b/plugins/CustomDimensions/lang/sq.json
index d32918e204..df7ff13598 100644
--- a/plugins/CustomDimensions/lang/sq.json
+++ b/plugins/CustomDimensions/lang/sq.json
@@ -12,32 +12,32 @@
"DimensionCreated": "Përmasa Vetjake u krijua",
"DimensionUpdated": "Përmasa Vetjake u përditësua",
"EmptyValue": "vlerë e zbrazët",
- "ExampleCreateCustomDimensions": "Për shembull, për krijimin e %s Përmasave të reja Vetjake brenda fushës veprim, përmbushni urdhrin vijues:",
- "ExampleValue": "Vlerë përmase",
- "ExceptionDimensionDoesNotExist": "Përmasa %1$d për sajtin %2$d nuk ekziston.",
+ "ExampleCreateCustomDimensions": "Për shembull, për krijimin e %s Përmasave të reja Vetjake brenda veprim fushëveprimi, përmbushni urdhrin vijues:",
+ "ExampleValue": "vlerëPërmase",
+ "ExceptionDimensionDoesNotExist": "Përmasa %1$d për sajtin %2$d s’ekziston.",
"ExceptionDimensionIsNotActive": "Përmasa %1$d për sajtin %2$d s’është aktive.",
"ExtractValue": "Përfto vlerën",
"Extractions": "Përftime",
- "ExtractionsHelp": "Kjo është opsionale. Mund të përdoret një shprehje e rregullt për të përftuar vetvetiu vlerën për këtë Përmasë Vetjake nga një URL faqeje apo titull faqeje. Në këtë mënyrë, vlera e përmasës vetjake s’ka pse caktohet dorazi përmes një klienti Ndjekjeje. Vlera mund të caktohet edhe dorazi, përmes API-t të Ndjekësitt Matomo. Vlerat e përmasave të caktuara dorazi në klientë ndjekjeje kanë përherë përparësi ndaj atyre të përftuara ndryshe. Nëse janë përcaktuar disa përftime njëherësh, përdoret përftimi i parë për të cilin gjendet përputhje.",
- "HowToCreateCustomDimension": "Që të krijoni një Përmasë të re Vetjake përmbushni urdhrin vijues brenda instalimit tuaj të Matomo-s:",
+ "ExtractionsHelp": "Kjo është opsionale. Mund të përdoret një shprehje e rregullt për të përftuar vetvetiu vlerën për këtë Përmasë Vetjake nga një URL faqeje apo titull faqeje. Në këtë mënyrë, vlera e përmasës vetjake s’ka pse caktohet dorazi përmes një klienti Ndjekjeje. Vlera mund të caktohet edhe dorazi, përmes API-t të Ndjekësit Matomo. Vlerat e përmasave të caktuara dorazi në klientë ndjekjeje kanë përherë përparësi ndaj atyre të përftuara ndryshe. Nëse janë përcaktuar disa përftime njëherësh, përdoret përftimi i parë për të cilin gjendet përputhje. Nuk ju duhet të paraprini me diçka pjerraket përpara, ngaqë Matomo-ja e bën automatikisht këtë për ju. Për shembull, përdorni /lajme/, në vend se \\/lajme\\/.",
+ "HowToCreateCustomDimension": "Që të krijoni një Përmasë të re Vetjake, përmbushni urdhrin vijues brenda instalimit tuaj të Matomo-s:",
"HowToManyCreateCustomDimensions": "Nëse doni të krijoni disa Përmasa të reja Vetjake njëherësh, thjesht shtoni numrin e përmasave që duhen krijuar. Meqë krejt ndryshimet e bazës së të dhënave do të kryhen brenda një here, mund të mos harxhohet kohë e gjatë duke shtuar disa Përmasa Vetjake njëherazi.",
"HowToTrackManuallyTitle": "Ndjekje dorazi e një vlere për këtë përmasë",
"HowToTrackManuallyViaHttp": "Për ndjekjen e një vlere përmes API-t të Ndjekësit HTTP, përdorni parametrin e ndjekjes 'dimension' pasuar nga ID-ja e Përmasës Vetjake:",
"HowToTrackManuallyViaJs": "Për ndjekje të një vlere te Ndjekësi JavaScript jepni:",
"HowToTrackManuallyViaJsDetails": "Për më tepër informacion lexoni %1$sudhërrëfyesin e Ndjekësit JavaScript për Përmasa Vetjake%2$s",
"HowToTrackManuallyViaPhp": "Për ndjekje të një vlere në Ndjekësin PHP jepni:",
- "IncreaseAvailableCustomDimensionsTakesLong": "Krijimi i një Përmase të re Vetjake mund të hajë një kohë të gjatë, varet nga madhësia e bazës suaj të të dhënave, ngaqë kjo lyp ndryshime në skemën e bazës suaj të të dhënave. Ndaj është e mundur që kjo të kryhet vetëm përmes një urdhri që duhet përmbushur te rreshti i urdhrave.",
+ "IncreaseAvailableCustomDimensionsTakesLong": "Krijimi i një Përmase të re Vetjake mund të hajë një kohë të gjatë, varet nga madhësia e bazës suaj të të dhënave, ngaqë kjo lyp ndryshime në skemën e bazës suaj të të dhënave. Ndaj mundet që kjo të kryhet vetëm përmes një urdhri që duhet ekzekutuar te rreshti i urdhrave.",
"IncreaseAvailableCustomDimensionsTitle": "Rrite numrin e Përmasave Vetjake të gatshme",
- "NameAllowedCharacters": "Shenjat e lejuara janë çfarëdo shkronje, numri, hapësirë e zbrazët, vija ndarëse dhe nënvija.",
+ "NameAllowedCharacters": "Shenja të lejuara janë çfarëdo shkronje, numri, hapësirë e zbrazët, vija ndarëse dhe nënvija.",
"NameIsRequired": "Lypset një emër.",
"NameIsTooLong": "Emri përmban shumë shenja, përdorni deri në %d shenja.",
"NoCustomDimensionConfigured": "Ende pa ndonjë Përmasë Vetjake të formësuar, formësoni një tani.",
"NoValue": "s’ka vlerë",
"PageUrlParam": "Parametër URL-je Faqeje",
"PluginDescription": "Zgjerojeni Matomo-n në përputhje me nevojat tuaj, duke përkufizuar dhe ndjekur Përmasa Vetjake në fushëveprimin Veprim ose Vizitë",
- "ScopeDescriptionAction": "Përmasat Vetjake në fushën 'Veprim' mund të dërgohen tok me çfarëdo veprimi (parje faqeje, shkarkim, akt, etj.).",
+ "ScopeDescriptionAction": "Përmasat Vetjake në fushëveprimin 'Veprim' mund të dërgohen tok me çfarëdo veprimi (parje faqeje, shkarkim, akt, etj.).",
"ScopeDescriptionActionMoreInfo": "Përftimi mund të përcaktohet në mënyrë që vlera e përmasës vetjake të përftohet nga URL Faqeje, Titull Faqeje ose nga parametër kërkese ndaj URL Faqeje.",
- "ScopeDescriptionVisit": "Përmasat Vetjake te fusha 'Vizitë' mund të dërgohen tok me çfarëdo kërkese ndjekjeje dhe depozitohen te vizita.",
+ "ScopeDescriptionVisit": "Përmasat Vetjake te fushëveprimi 'Vizitë' mund të dërgohen tok me çfarëdo kërkese ndjekjeje dhe depozitohen te vizita.",
"ScopeDescriptionVisitMoreInfo": "Nëse gjatë kohëzgjatjes së një vizite caktoni vlera të ndryshme për një përmasë të dhënë, do të përdoret vlera e fundit e caktuar.",
"XofYLeft": "Edhe %1$s nga %2$s përmasa"
}
diff --git a/plugins/CustomDimensions/lang/zh-cn.json b/plugins/CustomDimensions/lang/zh-cn.json
index f45010ce85..491725c7a0 100644
--- a/plugins/CustomDimensions/lang/zh-cn.json
+++ b/plugins/CustomDimensions/lang/zh-cn.json
@@ -1,44 +1,44 @@
{
"CustomDimensions": {
+ "CannotBeDeleted": "自定义维度不能被删除,只能停用。",
+ "ColumnAvgTimeOnDimension": "在维度上的平均时间",
+ "ColumnUniqueActions": "单一动作",
+ "ConfigureDimension": "配置%1$s 自定义维度 %2$s",
+ "ConfigureNewDimension": "配置一个新的维度",
+ "CustomDimensionId": "自定义维度(Id%d)",
"CustomDimensions": "自定义维度",
"CustomDimensionsIntro": "通过创建%1$s自定义维度%2$s,您可以收集“%3$s”的任何自定义数据。",
"CustomDimensionsIntroNext": "Matomo会生成每个自定义维度的报告(包括对每个目标的转化率),以便于您可以基于这些值轻松地细分用户。自定义维度类似于%1$s自定义变量%2$s,但自定义维度和自定义变量之间也有一些%3$s差异%4$s。",
- "ScopeDescriptionVisit": "在“访问”范围内自定义维度可以发送任何跟踪请求,并存储在访问中。",
- "ScopeDescriptionVisitMoreInfo": "如果您给访问的生命周期中给定的维度设置不同的值,最后一个值集将被使用。",
- "ScopeDescriptionAction": "自定义维度范围'活动'可以沿着任何行动发送(如页面浏览,下载,事件等)。",
- "ScopeDescriptionActionMoreInfo": "提取物可以被定义,以便自定义维度值从页面网址,网页标题或网页网址中提取查询参数。",
- "IncreaseAvailableCustomDimensionsTitle": "增加可用自定义维度的数量",
- "IncreaseAvailableCustomDimensionsTakesLong": "创建新的自定义维度可以根据您的数据库的大小需要很长的时间,因为它需要你的数据库架构更改。因此,这是唯一可能经由其需要在命令行上执行的控制台命令来做到这一点。",
+ "DimensionCreated": "自定义维度创建",
+ "DimensionUpdated": "自定义维度更新",
+ "EmptyValue": "空值",
+ "ExampleCreateCustomDimensions": "例如,要在活动领域创建%s新自定义维度,可以执行以下命令:",
+ "ExampleValue": "维度值",
+ "ExceptionDimensionDoesNotExist": "%1$d网站 %2$d的维度并不存在!",
+ "ExceptionDimensionIsNotActive": "%1$d 网站 %2$d 的维度并未激活!",
+ "ExtractValue": "获取值",
+ "Extractions": "提取",
+ "ExtractionsHelp": "这是可选的。字符regex可用于自动网页网址或页面标题抽取该自定义维度的值。这样一来,自定义维度值不必被经由追踪客户端手动设定。值仍然可以通过Matomo跟踪API手动设置。在跟踪客户手动设置尺寸值总是优先于拔牙。如果有多个提取定义,将使用匹配的第一个提取。",
"HowToCreateCustomDimension": "要创建新的自定义维度您的Matomo安装中执行以下命令:",
"HowToManyCreateCustomDimensions": "如果你想一次建立多个新的自定义维度,只需追加了应创建的维数。由于所有数据库的更改将在一个语句执行,也未必需要更长的时间来一次添加多个自定义维度。",
- "ExampleCreateCustomDimensions": "例如,要在活动领域创建%s新自定义维度,可以执行以下命令:",
"HowToTrackManuallyTitle": "手动跟踪这个维度值",
+ "HowToTrackManuallyViaHttp": "要通过HTTP API追踪器追踪值使用的跟踪参数'尺寸',然后自定义维度ID:",
"HowToTrackManuallyViaJs": "要跟踪在JavaScript中调用跟踪器的值:",
"HowToTrackManuallyViaJsDetails": "访问%1$s自定义维度的JavaScript跟踪指南%2$s获取更多信息",
"HowToTrackManuallyViaPhp": "要跟踪在PHP跟踪呼叫的值:",
- "HowToTrackManuallyViaHttp": "要通过HTTP API追踪器追踪值使用的跟踪参数'尺寸',然后自定义维度ID:",
- "Extractions": "提取",
- "ExtractionsHelp": "这是可选的。字符regex可用于自动网页网址或页面标题抽取该自定义维度的值。这样一来,自定义维度值不必被经由追踪客户端手动设定。值仍然可以通过Matomo跟踪API手动设置。在跟踪客户手动设置尺寸值总是优先于拔牙。如果有多个提取定义,将使用匹配的第一个提取。",
- "ExtractValue": "获取值",
- "ExampleValue": "维度值",
- "NoCustomDimensionConfigured": "尚未配置自定义维度,现在就配置一个吧。",
- "ConfigureNewDimension": "配置一个新的维度",
- "ConfigureDimension": "配置%1$s 自定义维度 %2$s",
- "XofYLeft": "还剩 %1$s 维度,共 %2$s",
- "CannotBeDeleted": "自定义维度不能被删除,只能停用。",
- "PageUrlParam": "网页URL参数",
+ "IncreaseAvailableCustomDimensionsTakesLong": "创建新的自定义维度可以根据您的数据库的大小需要很长的时间,因为它需要你的数据库架构更改。因此,这是唯一可能经由其需要在命令行上执行的控制台命令来做到这一点。",
+ "IncreaseAvailableCustomDimensionsTitle": "增加可用自定义维度的数量",
"NameAllowedCharacters": "允许的字符是任何字母,数字,空格,破折号和下划线。",
"NameIsRequired": "一个名称是必需的。",
"NameIsTooLong": "名称包含太多字符,最多只能使用 %d 个字符。",
- "ExceptionDimensionDoesNotExist": "%d网站 %d的维度并不存在!",
- "ExceptionDimensionIsNotActive": "%d网站 %d的维度并未激活!",
- "DimensionCreated": "自定义维度创建",
- "DimensionUpdated": "自定义维度更新",
- "ColumnUniqueActions": "单一动作",
- "ColumnAvgTimeOnDimension": "在维度上的平均时间",
- "CustomDimensionId": "自定义维度(Id%d)",
+ "NoCustomDimensionConfigured": "尚未配置自定义维度,现在就配置一个吧。",
"NoValue": "没有价值",
+ "PageUrlParam": "网页URL参数",
"PluginDescription": "通过在作用域或访问范围内定义和跟踪自定义维度,将Matomo扩展到您的需求",
- "EmptyValue": "空值"
+ "ScopeDescriptionAction": "自定义维度范围'活动'可以沿着任何行动发送(如页面浏览,下载,事件等)。",
+ "ScopeDescriptionActionMoreInfo": "提取物可以被定义,以便自定义维度值从页面网址,网页标题或网页网址中提取查询参数。",
+ "ScopeDescriptionVisit": "在“访问”范围内自定义维度可以发送任何跟踪请求,并存储在访问中。",
+ "ScopeDescriptionVisitMoreInfo": "如果您给访问的生命周期中给定的维度设置不同的值,最后一个值集将被使用。",
+ "XofYLeft": "还剩 %1$s 维度,共 %2$s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CustomDimensions/lang/zh-tw.json b/plugins/CustomDimensions/lang/zh-tw.json
index e82a0c5cf1..5e9bf304ef 100644
--- a/plugins/CustomDimensions/lang/zh-tw.json
+++ b/plugins/CustomDimensions/lang/zh-tw.json
@@ -1,43 +1,43 @@
{
"CustomDimensions": {
+ "CannotBeDeleted": "自訂維度無法被刪除,只能停用。",
+ "ColumnAvgTimeOnDimension": "維度上平均停留時間",
+ "ColumnUniqueActions": "不重複活動數",
+ "ConfigureDimension": "%1$s自訂維度 %2$s 設定",
+ "ConfigureNewDimension": "設定新維度",
+ "CustomDimensionId": "自訂維度(Id %d)",
"CustomDimensions": "自訂維度",
"CustomDimensionsIntro": "透過建立%1$s自訂維度%2$s你可以收集任何「%3$s」的自訂資料。",
"CustomDimensionsIntroNext": "Matomo 將為各個自訂維度建立報表(包括每個目標的轉換率),以及讓你簡單的基於這些值來建立區隔。自訂維度類似%1$s自訂變數%2$s,但兩者之間%3$s還是有一些差別%4$s。",
- "ScopeDescriptionVisit": "「訪問」範圍中的自訂維度可以和任何追蹤請求一起傳送,並會儲存在訪問中。",
- "ScopeDescriptionVisitMoreInfo": "如果你在一個訪問期間為維度設定了不同的值,會使用最後設定的值。",
- "ScopeDescriptionAction": "「活動」範圍中的自訂維度可以和任何活動一起傳送(網頁瀏覽、下載、事件等等)。",
- "ScopeDescriptionActionMoreInfo": "提取可以定義以從網頁網址、網頁標題或是網頁網址查詢參數中提取自訂維度值。",
- "IncreaseAvailableCustomDimensionsTitle": "增加自訂維度可用數",
- "IncreaseAvailableCustomDimensionsTakesLong": "建立新的自訂維度會修改資料庫內結構,根據資料庫大小不同可能會花上一段時間。因此只能透過指令列執行指令來達成。",
+ "DimensionCreated": "自訂維度已建立",
+ "DimensionUpdated": "自訂維度已更新",
+ "EmptyValue": "空值",
+ "ExampleCreateCustomDimensions": "例如要在活動範圍建立 %s 個新自訂維度,執行以下指令:",
+ "ExampleValue": "維度的值",
+ "ExceptionDimensionDoesNotExist": "維度 %1$d 在網站 %2$d 上不存在。",
+ "ExceptionDimensionIsNotActive": "維度 %1$d 在網站 %2$d 上未啟用。",
+ "ExtractValue": "要提取的值",
+ "Extractions": "提取",
+ "ExtractionsHelp": "選用。可以為這個自訂維度使用正規表示式從網頁網址或網頁標題自動提取值。透過這方法就不需要從客戶端手動追蹤自訂維度。還是可以透過 Matomo 追蹤 API 手動設定值。在客戶端設定維度的值永遠比自動提取優先紀錄。如果定義了多個提取格式,會使用第一個符合提取格式的值。",
"HowToCreateCustomDimension": "要建立新的自訂維度欄位請在 Matomo 安裝路徑執行以下指令:",
"HowToManyCreateCustomDimensions": "如果你想要一次建立多的自訂維度,簡單地在後方附加要建立的數量。由於執行時會修改所有資料庫,因此一次新增多個自訂維度時可能花上較久的時間。",
- "ExampleCreateCustomDimensions": "例如要在活動範圍建立 %s 個新自訂維度,執行以下指令:",
"HowToTrackManuallyTitle": "手動追蹤這個維度的值",
+ "HowToTrackManuallyViaHttp": "要用追蹤參數「維度」以自訂維度 ID 透過 HTTP 追蹤 API 來追蹤值呼叫:",
"HowToTrackManuallyViaJs": "要以 JavaScript 來追蹤值呼叫:",
"HowToTrackManuallyViaJsDetails": "更多資訊請閱讀%1$s自訂維度 JavaScript 追蹤指南%2$s。",
"HowToTrackManuallyViaPhp": "要以 PHP 來追蹤值呼叫:",
- "HowToTrackManuallyViaHttp": "要用追蹤參數「維度」以自訂維度 ID 透過 HTTP 追蹤 API 來追蹤值呼叫:",
- "Extractions": "提取",
- "ExtractionsHelp": "選用。可以為這個自訂維度使用正規表示式從網頁網址或網頁標題自動提取值。透過這方法就不需要從客戶端手動追蹤自訂維度。還是可以透過 Matomo 追蹤 API 手動設定值。在客戶端設定維度的值永遠比自動提取優先紀錄。如果定義了多個提取格式,會使用第一個符合提取格式的值。",
- "ExtractValue": "要提取的值",
- "ExampleValue": "維度的值",
- "NoCustomDimensionConfigured": "還沒有設定任何自訂維度,立即設定一個。",
- "ConfigureNewDimension": "設定新維度",
- "ConfigureDimension": "%1$s自訂維度 %2$s 設定",
- "XofYLeft": "已建立 %1$s 個維度,剩餘 %2$s 個",
- "CannotBeDeleted": "自訂維度無法被刪除,只能停用。",
- "PageUrlParam": "網頁網址參數",
+ "IncreaseAvailableCustomDimensionsTakesLong": "建立新的自訂維度會修改資料庫內結構,根據資料庫大小不同可能會花上一段時間。因此只能透過指令列執行指令來達成。",
+ "IncreaseAvailableCustomDimensionsTitle": "增加自訂維度可用數",
"NameAllowedCharacters": "允許的字元為英文字母、數字、空白、「-」或「_」。",
"NameIsRequired": "名稱必填。",
"NameIsTooLong": "名稱包含太多字元,最多只能使用 %d 個字元。",
- "ExceptionDimensionDoesNotExist": "維度 %d 在網站 %d 上不存在。",
- "ExceptionDimensionIsNotActive": "維度 %d 在網站 %d 上未啟用。",
- "DimensionCreated": "自訂維度已建立",
- "DimensionUpdated": "自訂維度已更新",
- "ColumnUniqueActions": "不重複活動數",
- "ColumnAvgTimeOnDimension": "維度上平均停留時間",
- "CustomDimensionId": "自訂維度(Id %d)",
+ "NoCustomDimensionConfigured": "還沒有設定任何自訂維度,立即設定一個。",
"NoValue": "無值",
- "EmptyValue": "空值"
+ "PageUrlParam": "網頁網址參數",
+ "ScopeDescriptionAction": "「活動」範圍中的自訂維度可以和任何活動一起傳送(網頁瀏覽、下載、事件等等)。",
+ "ScopeDescriptionActionMoreInfo": "提取可以定義以從網頁網址、網頁標題或是網頁網址查詢參數中提取自訂維度值。",
+ "ScopeDescriptionVisit": "「訪問」範圍中的自訂維度可以和任何追蹤請求一起傳送,並會儲存在訪問中。",
+ "ScopeDescriptionVisitMoreInfo": "如果你在一個訪問期間為維度設定了不同的值,會使用最後設定的值。",
+ "XofYLeft": "已建立 %1$s 個維度,剩餘 %2$s 個"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php b/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
index 0da15e9f16..27673a4482 100644
--- a/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
+++ b/plugins/CustomDimensions/tests/Integration/Tracker/CustomDimensionsRequestProcessorTest.php
@@ -12,7 +12,6 @@ use Piwik\Plugins\CustomDimensions\CustomDimensions;
use Piwik\Plugins\CustomDimensions\Dao\Configuration;
use Piwik\Plugins\CustomDimensions\Dao\LogTable;
use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor as Processor;
-use Piwik\Plugins\CustomDimensions\Tracker\CustomDimensionsRequestProcessor;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\ActionPageview;
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
index 4bebb3b636..1d297bc968 100644
--- a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
@@ -185,7 +185,7 @@
<id>Transitions_Transitions</id>
<name>Transitions</name>
<order>46</order>
- <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -435,7 +435,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -523,7 +523,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -642,7 +642,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1445,7 +1445,7 @@
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1480,7 +1480,7 @@
<id>UserId_UserReportTitle</id>
<name>User IDs</name>
<order>40</order>
- <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
diff --git a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_action_subtable_segmented_visitor_log.png b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_action_subtable_segmented_visitor_log.png
index 04dfd9fea4..4a3942c249 100644
--- a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_action_subtable_segmented_visitor_log.png
+++ b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_action_subtable_segmented_visitor_log.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:83651e12fe20ce784071120d14f6304aca59db76e2d0d71b7814dea2f5ce80d5
-size 83629
+oid sha256:589f2cd2a14365c1fbd62311cc847d78b73cc3657f68126a208e14bf1a98d244
+size 83595
diff --git a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_actions_segmented_visitorlog.png b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_actions_segmented_visitorlog.png
index 6559166c58..2d67dc15ff 100644
--- a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_actions_segmented_visitorlog.png
+++ b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_actions_segmented_visitorlog.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c43ccaa361c22602defc19b854b2319ffb027e7a3e618b4347a86b4b2b797d43
-size 118687
+oid sha256:86854b7e767844affcff9d19103693b0dbb4bf9c209a3915e8761ca9455ea787
+size 118656
diff --git a/plugins/CustomJsTracker/Commands/UpdateTracker.php b/plugins/CustomJsTracker/Commands/UpdateTracker.php
index 0d8005ec76..a5763ee5f9 100644
--- a/plugins/CustomJsTracker/Commands/UpdateTracker.php
+++ b/plugins/CustomJsTracker/Commands/UpdateTracker.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\CustomJsTracker\Commands;
use Piwik\Container\StaticContainer;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\CustomJsTracker\TrackerUpdater;
-use Piwik\Plugins\CustomJsTracker\TrackingCode\PluginTrackerFiles;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/CustomJsTracker/lang/ca.json b/plugins/CustomJsTracker/lang/ca.json
index 0967ef424b..a2a6054f2e 100644
--- a/plugins/CustomJsTracker/lang/ca.json
+++ b/plugins/CustomJsTracker/lang/ca.json
@@ -1 +1,8 @@
-{}
+{
+ "CustomJsTracker": {
+ "DiagnosticPiwikJsMakeWritable": "Us recomanem que %1$s es pugui escriure executant aquesta ordre: %2$s",
+ "DiagnosticPiwikJsNotWritable": "El fitxer de seguiment de JavaScript de Matomo %s no es pot escriure, cosa que significa que altres connectors no poden estendre el seguiment de JavaScript. En el futur fins i tot algunes funcions bàsiques podrien no funcionar com s'espera.",
+ "DiagnosticPiwikJsWritable": "Seguiment de JavaScript que es pot escriure (%s)",
+ "PluginDescription": "Permet a qualsevol connector ampliar el fitxer de seguiment de JavaScript de Matomo (matomo.js) i afegir noves funcionalitats i capacitats de mesurament de llocs web."
+ }
+}
diff --git a/plugins/CustomJsTracker/lang/id.json b/plugins/CustomJsTracker/lang/id.json
index e21e3f9cf5..41ebf8ade4 100644
--- a/plugins/CustomJsTracker/lang/id.json
+++ b/plugins/CustomJsTracker/lang/id.json
@@ -1,5 +1,7 @@
{
"CustomJsTracker": {
+ "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."
}
diff --git a/plugins/CustomJsTracker/lang/sq.json b/plugins/CustomJsTracker/lang/sq.json
index 788f53286b..c4b508bb08 100644
--- a/plugins/CustomJsTracker/lang/sq.json
+++ b/plugins/CustomJsTracker/lang/sq.json
@@ -1,8 +1,8 @@
{
"CustomJsTracker": {
- "PluginDescription": "I lejon cilësdo shtojcë të zgjerojë kartelën Matomo JavaScript Tracking (matomo.js) dhe të shtojë aftësi të reja funksionimi dhe matjesh në sajt.",
- "DiagnosticPiwikJsWritable": "Ndjekës JavaScript i Shkrueshëm (%s)",
+ "DiagnosticPiwikJsMakeWritable": "Këshillojmë bërjen e %1$s të shkrueshme, duke xhiruar urdhrin: %2$s",
"DiagnosticPiwikJsNotWritable": "Kartela e ndjekësit JavaScript të Matomo-s %s s’është e shkrueshme, çka do të thotë se shtojcat e tjera s’mund ta zgjerojnë ndjekësin JavaScript. Në të ardhmen mund të mos punojnë siç pritet madje edhe disa veçori bazë.",
- "DiagnosticPiwikJsMakeWritable": "Këshillojmë bërjen e %1$s të shkrueshme, duke xhiruar urdhrin: %2$s"
+ "DiagnosticPiwikJsWritable": "Ndjekës JavaScript i Shkrueshëm (%s)",
+ "PluginDescription": "I lejon cilësdo shtojcë të zgjerojë kartelën Matomo JavaScript Tracking (matomo.js) dhe të shtojë anë të të reja funksionimi dhe aftësi matjesh të sajtit."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CustomVariables b/plugins/CustomVariables
-Subproject 3e741b7d3a968a85977237ab4edd37e395c3c78
+Subproject ace97e4a23b947c51cedcd210310e889943ab2b
diff --git a/plugins/DBStats/DBStats.php b/plugins/DBStats/DBStats.php
index 63ec603bf6..5bfc97114a 100644
--- a/plugins/DBStats/DBStats.php
+++ b/plugins/DBStats/DBStats.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\DBStats;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\DBStats\tests\Mocks\MockDataAccess;
class DBStats extends \Piwik\Plugin
diff --git a/plugins/DBStats/MySQLMetadataProvider.php b/plugins/DBStats/MySQLMetadataProvider.php
index 90dc50b61b..5ba5b12574 100644
--- a/plugins/DBStats/MySQLMetadataProvider.php
+++ b/plugins/DBStats/MySQLMetadataProvider.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\DBStats;
use Exception;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Db;
use Piwik\DbHelper;
use Piwik\Option;
diff --git a/plugins/DBStats/Reports/GetAdminDataSummary.php b/plugins/DBStats/Reports/GetAdminDataSummary.php
index c3c498e9e1..4edb271b66 100644
--- a/plugins/DBStats/Reports/GetAdminDataSummary.php
+++ b/plugins/DBStats/Reports/GetAdminDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
/**
* Shows a datatable that displays the amount of space each 'admin' table takes
diff --git a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
index eb1b4896dd..fa34a5f870 100644
--- a/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualMetricsSummary.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
* Shows a datatable that displays how many occurrences there are of each individual
diff --git a/plugins/DBStats/Reports/GetIndividualReportsSummary.php b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
index 492eeb1071..c0a703f9a1 100644
--- a/plugins/DBStats/Reports/GetIndividualReportsSummary.php
+++ b/plugins/DBStats/Reports/GetIndividualReportsSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
/**
diff --git a/plugins/DBStats/Reports/GetMetricDataSummary.php b/plugins/DBStats/Reports/GetMetricDataSummary.php
index bbbd4efc62..b51e13e07c 100644
--- a/plugins/DBStats/Reports/GetMetricDataSummary.php
+++ b/plugins/DBStats/Reports/GetMetricDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php b/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
index eb2131a76b..a5aa728de9 100644
--- a/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
+++ b/plugins/DBStats/Reports/GetMetricDataSummaryByYear.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetReportDataSummary.php b/plugins/DBStats/Reports/GetReportDataSummary.php
index 6779fc1d9b..00bb93ab58 100644
--- a/plugins/DBStats/Reports/GetReportDataSummary.php
+++ b/plugins/DBStats/Reports/GetReportDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetReportDataSummaryByYear.php b/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
index 4a59f65d59..6f294272ff 100644
--- a/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
+++ b/plugins/DBStats/Reports/GetReportDataSummaryByYear.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
use Piwik\Plugin\ReportsProvider;
/**
diff --git a/plugins/DBStats/Reports/GetTrackerDataSummary.php b/plugins/DBStats/Reports/GetTrackerDataSummary.php
index c135e438c8..c1b69a1289 100644
--- a/plugins/DBStats/Reports/GetTrackerDataSummary.php
+++ b/plugins/DBStats/Reports/GetTrackerDataSummary.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DBStats\Reports;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
/**
* Shows a datatable that displays the amount of space each individual log table
diff --git a/plugins/DBStats/lang/ca.json b/plugins/DBStats/lang/ca.json
index 6c23c94f1c..b734c9e0c7 100644
--- a/plugins/DBStats/lang/ca.json
+++ b/plugins/DBStats/lang/ca.json
@@ -1,15 +1,16 @@
{
"DBStats": {
- "DatabaseUsage": "Ús de la base de dades",
- "DataSize": "Grandària de les dades",
"DBSize": "Mida de la BD",
+ "DataSize": "Grandària de les dades",
+ "DatabaseUsage": "Ús de la base de dades",
"EstimatedSize": "Mida estimada",
"IndexSize": "Grandària del l'índex",
"LearnMore": "Per obtenir més informació sobre com el Matomo procesa la informació i com fer que el Matomo funcioni correctament en llocs amb un tràfic mitja o elevat, consulteu la següent documentació: %s.",
"MainDescription": "El Matomo desa totes les anàlisis web la base de dades MySQL. Ara per ara, les taules del Matomo fan servir %s.",
- "MetricDataByYear": "Taules de mètriques per any.",
+ "MetricDataByYear": "Taules de mètriques per any",
"MetricTables": "Taules de mètriques",
"OtherTables": "Altres taules",
+ "PluginDescription": "Proporciona informes detallats d'ús de la base de dades MySQL. Disponible per a Superusuaris a Diagnòstics.",
"ReportDataByYear": "Taules d'informes per any",
"ReportTables": "Taules d'informes",
"RowCount": "Nombre de files",
@@ -17,4 +18,4 @@
"TotalSize": "Grandària total",
"TrackerTables": "Taules de rastreig"
}
-} \ No newline at end of file
+}
diff --git a/plugins/DBStats/lang/id.json b/plugins/DBStats/lang/id.json
index 9a63908c45..ce07feab6f 100644
--- a/plugins/DBStats/lang/id.json
+++ b/plugins/DBStats/lang/id.json
@@ -1,8 +1,8 @@
{
"DBStats": {
- "DatabaseUsage": "Penggunaan Basisdata",
- "DataSize": "Ukuran Data",
"DBSize": "Ukuran Basisdat",
+ "DataSize": "Ukuran Data",
+ "DatabaseUsage": "Penggunaan Basisdata",
"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.",
@@ -10,7 +10,7 @@
"MetricDataByYear": "Tabel Metrik berdasarkan Tahun",
"MetricTables": "Tabel Metrik",
"OtherTables": "Tabel Lain",
- "PluginDescription": "Menyediakan laporan rincian penggunaan basis data MySQL. Tersedia untuk Pengguna Super dibawah diagnostik.",
+ "PluginDescription": "Menyediakan laporan penggunaan basis data MySQL yang terperinci. Tersedia untuk Pengguna Super di bawah Diagnostik.",
"ReportDataByYear": "Tabel Laporan berdasarkan Tahun",
"ReportTables": "Tabel Laporan",
"RowCount": "Jumlah Baris",
@@ -18,4 +18,4 @@
"TotalSize": "Ukuran Total",
"TrackerTables": "Tabel pelacak"
}
-} \ No newline at end of file
+}
diff --git a/plugins/DBStats/lang/sq.json b/plugins/DBStats/lang/sq.json
index adab70da45..b734d98a38 100644
--- a/plugins/DBStats/lang/sq.json
+++ b/plugins/DBStats/lang/sq.json
@@ -1,21 +1,21 @@
{
"DBStats": {
- "DatabaseUsage": "Përdorim baze të dhënash",
+ "DBSize": "Madhësi DB-je",
"DataSize": "Madhësi të dhënash",
- "DBSize": "Madhësia e DB-së",
- "EstimatedSize": "Madhësi e vlerësuar",
+ "DatabaseUsage": "Përdorim baze të dhënash",
+ "EstimatedSize": "Madhësi e pritshme",
"IndexSize": "Madhësi treguesi",
- "LearnMore": "Për të mësuar më tepër rreth se si i përpunon të dhënat Matomo-ja dhe se si ta bëni Matomo-n të punojë mirë me sajte me trafik mesatar ose të madh, kontrolloni dokumentimin %s.",
- "MainDescription": "Matomo po i depoziton krejt të dhënat tuaja për analiza web te baza e të dhënave MySQL. Tani për tani, tabelat e Matomo-s po përdorin %s.",
+ "LearnMore": "Për të mësuar më tepër rreth se si i përpunon të dhënat Matomo-ja dhe se si ta bëni Matomo-n të punojë mirë me sajte me trafik mesatar ose të madh, shihni këtë dokumentim: %s.",
+ "MainDescription": "Matomo i depoziton krejt të dhënat tuaja për analiza web në një bazë të dhënash MySQL. Aktualisht, tabelat e Matomo-s zënë %s hapësirë.",
"MetricDataByYear": "Tabela Vlerash Sipas Vitesh",
"MetricTables": "Tabela Vlerash",
"OtherTables": "Tabela të Tjera",
"PluginDescription": "Furnizon raporte të hollësishëm përdorimi baze të dhënash MySQL. Gjendet nën Diagnostikimet, për Superpërdoruesit.",
- "ReportDataByYear": "Tabela Raportesh Sipas Vitit",
+ "ReportDataByYear": "Tabela Raportesh Sipas Vitesh",
"ReportTables": "Tabela Raportesh",
- "RowCount": "Numërim rreshtash",
+ "RowCount": "Numër rreshtash",
"Table": "Tabelë",
"TotalSize": "Madhësi gjithsej",
"TrackerTables": "Tabela Ndjekësi"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Dashboard/API.php b/plugins/Dashboard/API.php
index 77d6cc0a36..83df0c6559 100644
--- a/plugins/Dashboard/API.php
+++ b/plugins/Dashboard/API.php
@@ -67,6 +67,7 @@ class API extends \Piwik\Plugin\API
*/
public function createNewDashboardForUser($login, $dashboardName = '', $addDefaultWidgets = true)
{
+ $this->checkLoginIsNotAnonymous($login);
Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
$layout = '{}';
@@ -95,6 +96,7 @@ class API extends \Piwik\Plugin\API
{
$login = $login ? $login : Piwik::getCurrentUserLogin();
+ $this->checkLoginIsNotAnonymous($login);
Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
$this->model->deleteDashboardForUser($idDashboard, $login);
@@ -150,8 +152,9 @@ class API extends \Piwik\Plugin\API
*/
public function resetDashboardLayout($idDashboard, $login='')
{
- $login = $login ? $login : Piwik::getCurrentUserLogin();
+ $login = $login ?: Piwik::getCurrentUserLogin();
+ $this->checkLoginIsNotAnonymous($login);
Piwik::checkUserHasSuperUserAccessOrIsTheUser($login);
$layout = $this->dashboard->getDefaultLayout();
@@ -216,6 +219,15 @@ class API extends \Piwik\Plugin\API
return $widgets;
}
+ private function checkLoginIsNotAnonymous($login)
+ {
+ Piwik::checkUserIsNotAnonymous();
+
+ if ($login === 'anonymous') {
+ throw new \Exception('This method can\'t be performed for anonymous user');
+ }
+ }
+
private function getColumnsFromDashboard($dashboard)
{
if (empty($dashboard['layout'])) {
diff --git a/plugins/Dashboard/Controller.php b/plugins/Dashboard/Controller.php
index 36ffe9446b..68202f3e00 100644
--- a/plugins/Dashboard/Controller.php
+++ b/plugins/Dashboard/Controller.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Dashboard;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable\Renderer\Json;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Session\SessionNamespace;
use Piwik\View;
diff --git a/plugins/Dashboard/Dashboard.php b/plugins/Dashboard/Dashboard.php
index 652bad1b4f..50898f119c 100644
--- a/plugins/Dashboard/Dashboard.php
+++ b/plugins/Dashboard/Dashboard.php
@@ -288,12 +288,10 @@ class Dashboard extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = "plugins/Dashboard/angularjs/common/services/dashboards-model.js";
$jsFiles[] = "plugins/Dashboard/javascripts/widgetMenu.js";
$jsFiles[] = "plugins/Dashboard/javascripts/dashboardObject.js";
$jsFiles[] = "plugins/Dashboard/javascripts/dashboardWidget.js";
$jsFiles[] = "plugins/Dashboard/javascripts/dashboard.js";
- $jsFiles[] = "plugins/Dashboard/angularjs/dashboard/dashboard.directive.js";
}
public function getStylesheetFiles(&$stylesheets)
diff --git a/plugins/Dashboard/Menu.php b/plugins/Dashboard/Menu.php
index 1158fc8f71..ac3551ac73 100644
--- a/plugins/Dashboard/Menu.php
+++ b/plugins/Dashboard/Menu.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Dashboard;
-use Piwik\Db;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\UserPreferences;
diff --git a/plugins/Dashboard/angularjs/common/services/dashboards-model.js b/plugins/Dashboard/angularjs/common/services/dashboards-model.js
deleted file mode 100644
index 710e57220f..0000000000
--- a/plugins/Dashboard/angularjs/common/services/dashboards-model.js
+++ /dev/null
@@ -1,70 +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('dashboardsModel', dashboardsModel);
-
- dashboardsModel.$inject = ['piwikApi'];
-
- function dashboardsModel (piwikApi) {
-
- var dashboardsPromise = null;
-
- var model = {
- dashboards: [],
- getAllDashboards: getAllDashboards,
- reloadAllDashboards: reloadAllDashboards,
- getDashboard: getDashboard,
- getDashboardLayout: getDashboardLayout
- };
-
- return model;
-
- function getDashboard(dashboardId)
- {
- return getAllDashboards().then(function (dashboards) {
- var dashboard = null;
- angular.forEach(dashboards, function (board) {
- if (parseInt(board.id, 10) === parseInt(dashboardId, 10)) {
- dashboard = board;
- }
- });
- return dashboard;
- });
- }
-
- function getDashboardLayout(dashboardId)
- {
- piwikApi.withTokenInUrl();
-
- return piwikApi.fetch({module: 'Dashboard', action: 'getDashboardLayout', idDashboard: dashboardId});
- }
-
- function reloadAllDashboards()
- {
- if (dashboardsPromise) {
- dashboardsPromise = null;
- }
-
- return getAllDashboards();
- }
-
- function getAllDashboards()
- {
- if (!dashboardsPromise) {
- dashboardsPromise = piwikApi.fetch({method: 'Dashboard.getDashboards', filter_limit: '-1'}).then(function (response) {
- if (response) {
- model.dashboards = response;
- }
-
- return response;
- });
- }
-
- return dashboardsPromise;
- }
- }
-})(); \ No newline at end of file
diff --git a/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js b/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js
deleted file mode 100644
index 092e314140..0000000000
--- a/plugins/Dashboard/angularjs/dashboard/dashboard.directive.js
+++ /dev/null
@@ -1,113 +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
- */
-
-/**
- * <div piwik-dashboard dashboard-id="5"></div>
- */
-(function () {
- angular.module('piwikApp').directive('piwikDashboard', piwikDashboard);
-
- piwikDashboard.$inject = ['dashboardsModel', '$rootScope', '$q'];
-
- function piwikDashboard(dashboardsModel, $rootScope, $q) {
-
- function renderDashboard(dashboardId, dashboard, layout)
- {
- $('.dashboardSettings').show();
- initTopControls();
-
- // Embed dashboard / exported as widget
- if (!$('#topBars').length) {
- $('.dashboardSettings').after($('#Dashboard'));
- $('#Dashboard ul li').removeClass('active');
- $('#Dashboard_embeddedIndex_' + dashboardId).addClass('active');
- }
-
- widgetsHelper.getAvailableWidgets();
-
- $('#dashboardWidgetsArea').off('dashboardempty', showEmptyDashboardNotification);
- $('#dashboardWidgetsArea')
- .on('dashboardempty', showEmptyDashboardNotification)
- .dashboard({
- idDashboard: dashboardId,
- layout: layout,
- name: dashboard ? dashboard.name : ''
- });
-
- var divElements = $('#columnPreview').find('>div');
-
- divElements.each(function () {
- var width = [];
- $('div', this).each(function () {
- width.push(this.className.replace(/width-/, ''));
- });
- $(this).attr('layout', width.join('-'));
- });
-
- divElements.off('click.renderDashboard');
- divElements.on('click.renderDashboard', function () {
- divElements.removeClass('choosen');
- $(this).addClass('choosen');
- });
- }
-
- function fetchDashboard(dashboardId) {
- var dashboardElement = $('#dashboardWidgetsArea');
- dashboardElement.dashboard('destroyWidgets');
- dashboardElement.empty();
- globalAjaxQueue.abort();
-
- var getDashboard = dashboardsModel.getDashboard(dashboardId);
- var getLayout = dashboardsModel.getDashboardLayout(dashboardId);
-
- return $q.all([getDashboard, getLayout]).then(function (response) {
- var dashboard = response[0];
- var layout = response[1];
-
- $(function() {
- renderDashboard(dashboardId, dashboard, layout);
- });
- });
- }
-
- function clearDashboard () {
- $('.top_controls .dashboard-manager').hide();
- $('#dashboardWidgetsArea').dashboard('destroy');
- }
-
- return {
- restrict: 'A',
- scope: {
- dashboardid: '=',
- layout: '='
- },
- link: function (scope, element, attrs) {
-
- scope.$parent.fetchDashboard = function (dashboardId) {
- scope.dashboardId = dashboardId;
- return fetchDashboard(dashboardId)
- };
-
- fetchDashboard(scope.dashboardid);
-
- function onLocationChange(event, newUrl, oldUrl)
- {
- if (broadcast.getValueFromUrl('module') != 'Widgetize' && newUrl !== oldUrl &&
- newUrl.indexOf('category=Dashboard_Dashboard') === -1) {
- // we remove the dashboard only if we no longer show a dashboard.
- clearDashboard();
- }
- }
-
- // should be rather handled in route or so.
- var unbind = $rootScope.$on('$locationChangeSuccess', onLocationChange);
- scope.$on('$destroy', onLocationChange);
- scope.$on('$destroy', unbind);
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Dashboard/javascripts/dashboard.js b/plugins/Dashboard/javascripts/dashboard.js
index 7af6e407b5..cd7c62d5f6 100644
--- a/plugins/Dashboard/javascripts/dashboard.js
+++ b/plugins/Dashboard/javascripts/dashboard.js
@@ -28,9 +28,9 @@ function createDashboard() {
ajaxRequest.setCallback(
function (response) {
var id = response.value;
- angular.element(document).injector().invoke(function ($location, reportingMenuModel, dashboardsModel) {
+ angular.element(document).injector().invoke(function ($location, reportingMenuModel) {
Promise.all([
- dashboardsModel.reloadAllDashboards(),
+ Dashboard.DashboardStore.reloadAllDashboards(),
reportingMenuModel.reloadMenuItems(),
]).then(function () {
$('#dashboardWidgetsArea').dashboard('loadDashboard', id);
@@ -86,7 +86,9 @@ function showChangeDashboardLayoutDialog() {
function showEmptyDashboardNotification() {
piwikHelper.modalConfirm(makeSelectorLastId('dashboardEmptyNotification'), {
resetDashboard: function () { $('#dashboardWidgetsArea').dashboard('resetLayout'); },
- addWidget: function () { $('.dashboardSettings > a').trigger('click'); }
+ addWidget: function () {
+ $('.dashboardSettings > a').trigger('click');
+ }
});
}
diff --git a/plugins/Dashboard/javascripts/dashboardObject.js b/plugins/Dashboard/javascripts/dashboardObject.js
index d7c20ca25b..1308d1a7a3 100644
--- a/plugins/Dashboard/javascripts/dashboardObject.js
+++ b/plugins/Dashboard/javascripts/dashboardObject.js
@@ -94,9 +94,7 @@
$location.search('subcategory', '' + dashboardIdToLoad);
});
} else {
- var element = $('[piwik-dashboard]');
- var scope = angular.element(element).scope();
- scope.fetchDashboard(dashboardIdToLoad);
+ piwik.postEvent('Dashboard.loadDashboard', dashboardIdToLoad);
}
return this;
diff --git a/plugins/Dashboard/javascripts/widgetMenu.js b/plugins/Dashboard/javascripts/widgetMenu.js
index 25d4a779d7..f79365c6a1 100644
--- a/plugins/Dashboard/javascripts/widgetMenu.js
+++ b/plugins/Dashboard/javascripts/widgetMenu.js
@@ -8,6 +8,11 @@
function widgetsHelper() {
}
+// a Promise for the first call to getAvailableWidgets. this should not be aborted,
+// so any code that aborts all ajax requests should make sure this promise is resolved
+// first.
+widgetsHelper.firstGetAvailableWidgetsCall = null;
+
/**
* Returns the available widgets fetched via AJAX (if not already done)
*
@@ -61,41 +66,50 @@ widgetsHelper.getAvailableWidgets = function (callback) {
return moved;
}
- if (!widgetsHelper.availableWidgets) {
+ var promise = new Promise(function (resolve, reject) {
+ if (!widgetsHelper.availableWidgets) {
var ajaxRequest = new ajaxHelper();
ajaxRequest._mixinDefaultGetParams = function (params) {
- return params;
+ return params;
};
ajaxRequest.addParams({
- module: 'API',
- method: 'API.getWidgetMetadata',
- filter_limit: '-1',
- format: 'JSON',
- deep: '1',
- idSite: piwik.idSite || broadcast.getValueFromUrl('idSite')
+ module: 'API',
+ method: 'API.getWidgetMetadata',
+ filter_limit: '-1',
+ format: 'JSON',
+ deep: '1',
+ idSite: piwik.idSite || broadcast.getValueFromUrl('idSite')
}, 'get');
ajaxRequest.setCallback(
- function (data) {
- widgetsHelper.availableWidgets = mergeCategoriesAndSubCategories(data);
+ function (data) {
+ widgetsHelper.availableWidgets = mergeCategoriesAndSubCategories(data);
- if (callback) {
- callback(widgetsHelper.availableWidgets);
- }
- }
+ resolve();
+ }
);
ajaxRequest.setErrorCallback(function (deferred, status) {
- if (status == 'abort' || !deferred || deferred.status < 400 || deferred.status >= 600) {
- return;
- }
- $('#loadingError').show();
+ if (status == 'abort' || !deferred || deferred.status < 400 || deferred.status >= 600) {
+ return;
+ }
+ $('#loadingError').show();
+ reject();
});
ajaxRequest.send();
return;
+ }
+
+ resolve();
+ });
+
+ if (!widgetsHelper.firstGetAvailableWidgetsCall) {
+ widgetsHelper.firstGetAvailableWidgetsCall = promise;
}
- if (callback) {
+ promise.then(function () {
+ if (callback) {
callback(widgetsHelper.availableWidgets);
- }
+ }
+ });
};
/**
diff --git a/plugins/Dashboard/lang/ca.json b/plugins/Dashboard/lang/ca.json
index c7721a0bbe..7c8cde004b 100644
--- a/plugins/Dashboard/lang/ca.json
+++ b/plugins/Dashboard/lang/ca.json
@@ -6,7 +6,8 @@
"CopyDashboardToUser": "Copiar tauler a l'usuari",
"CreateNewDashboard": "Crear un nou tauler",
"Dashboard": "Tauler",
- "DashboardCopied": "S'ha copiat correctament el tauler a l'usuari seleccionat",
+ "DashboardCategoryHelp": "Aquesta és una pàgina de tauler. Els taulers de control són una col·lecció de ginys de Matomo per afegir tu mateix per adaptar-los a les teves necessitats específiques. Barreja i combina qualsevol dels widgets de Matomo per obtenir les dades que %1$s*tu*%2$s necessites veure d'un cop d'ull.",
+ "DashboardCopied": "El tauler de control actual s'ha copiat correctament a l'usuari seleccionat.",
"DashboardEmptyNotification": "El vostre tauler no conté cap giny. Comenceu per afegir alguns ginys o restablieu el tauler a la selecció de ginys per defecte.",
"DashboardName": "Nom del tauler:",
"DashboardOf": "Tauler de %s",
@@ -17,20 +18,21 @@
"ManageDashboard": "Administrar tauler",
"Maximise": "Maximitza",
"Minimise": "Minimitza",
- "NotUndo": "No podreu desfer aquesta operació",
+ "NotUndo": "No podreu desfer aquesta operació.",
"PluginDescription": "El teu taulell d'analítica web. Personalitza el teu taulell afegint nous ginys, arrossega i solta per a moure'ls i canvia l'estructura de columnes. Cada usuari pot tenir el seu taulell personalitzat.",
"RemoveDashboard": "Elimina el tauler",
"RemoveDashboardConfirm": "Esteu segurs que voleu eliminar el tauler \"%s\"?",
+ "RemoveDefaultDashboardNotPossible": "El tauler predeterminat no es pot eliminar",
"RenameDashboard": "Reanomena el tauler",
"ResetDashboard": "Reinicialitza el tauler",
"ResetDashboardConfirm": "Esteu segurs que voleu reiniciar la disposició del vostre tauler a la selecció de ginys per defecte?",
"SelectDashboardLayout": "Seleccioneu la nova disposició del vostre tauler",
"SelectWidget": "Escolliu el giny que voleu afegir a la consola",
- "SetAsDefaultWidgets": "Marca com a selecció de ginys per defecte.",
+ "SetAsDefaultWidgets": "Estableix com a selecció de widgets per defecte",
"SetAsDefaultWidgetsConfirm": "Esteu segurs que voleu definir la selecció de ginys i la disposició del tauler actuals per a la plantilla de tauler per defecte?",
"SetAsDefaultWidgetsConfirmHelp": "Aquesta selecció de ginys i la disposició de columnes del tauler es faran servir quan qualsevol usuari crei un nou tauler o quan s'utiltiza la funció \"%s\".",
"TopLinkTooltip": "Mostra els informes d'analítica web per %s.",
"WidgetNotFound": "Aquest giny no s'ha trobat",
"WidgetPreview": "Previsualitza el giny"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Dashboard/lang/id.json b/plugins/Dashboard/lang/id.json
index 070b219adf..7588863bd3 100644
--- a/plugins/Dashboard/lang/id.json
+++ b/plugins/Dashboard/lang/id.json
@@ -6,6 +6,7 @@
"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:",
@@ -18,8 +19,10 @@
"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\"?",
+ "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?",
@@ -32,4 +35,4 @@
"WidgetNotFound": "Gawit tak ditemukan",
"WidgetPreview": "Pratinjau Gawit"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Dashboard/lang/sq.json b/plugins/Dashboard/lang/sq.json
index 99fe05e3ae..699f187fc2 100644
--- a/plugins/Dashboard/lang/sq.json
+++ b/plugins/Dashboard/lang/sq.json
@@ -1,26 +1,27 @@
{
"Dashboard": {
"AddAWidget": "Shtoni një widget",
- "AddPreviewedWidget": "Klikojeni që të shtohet widget-i te pulti",
+ "AddPreviewedWidget": "Që widget-i të shtohet te pulti, klikojeni",
"ChangeDashboardLayout": "Ndryshoni skemën e pultit",
"CopyDashboardToUser": "Kopjoje pultin te përdoruesi",
"CreateNewDashboard": "Krijoni pult të ri",
"Dashboard": "Pulti",
+ "DashboardCategoryHelp": "Kjo është një faqe pulti. Pultet janë një koleksion widget-esh Matomo që mund t’i shtoni ju vetë, sipas nevojave tuaja. Zgjidhni dhe merrni çfarëdo widget-esh të Matomo-s, që të keni me një shikim të dhënat që %1$s*ju*%2$s keni nevojë.",
"DashboardCopied": "Pulti i tanishëm u kopjua me sukses te përdoruesi i përzgjedhur.",
- "DashboardEmptyNotification": "Pulti juaj nuk përmban ndonjë widget. Fillojani duke shtuar ndonjë të tillë ose thjesht rikthejeni pultin te përzgjedhja parazgjedhje për widget-et.",
+ "DashboardEmptyNotification": "Pulti juaj s’përmban ndonjë “widget”. Fillojani duke shtuar ndonjë të tillë, ose thjesht rikthejeni pultin te përzgjedhja parazgjedhje për widget-et.",
"DashboardName": "Emër pulti:",
"DashboardOf": "Pulti i %s",
"DefaultDashboard": "Pulti parazgjedhje - Përdorim i parazgjedhjeve për përzgjedhje widget-sh dhe skema shtyllash",
- "DeleteWidgetConfirm": "Jeni i sigurt se doni të fshihet ky widget prej pultit?",
+ "DeleteWidgetConfirm": "Jeni i sigurt se doni të fshihet ky “widget” prej pultit?",
"EmptyDashboard": "Pult i zbrazët - Zgjidhni widget-et tuaj të parapëlqyer",
- "LoadingWidget": "Widget-i po ngarkohet, ju lutemi, pritni...",
+ "LoadingWidget": "Widget-i po ngarkohet, ju lutemi, pritni…",
"ManageDashboard": "Administroni pultin",
"Maximise": "Maksimizoje",
"Minimise": "Minimizoje",
"NotUndo": "Nuk do të jeni në gjendje ta zhbëni këtë veprim.",
- "PluginDescription": "Pulti Juaj i Analizave Web. Përshtateni pultin tuaj duke shtuar widget-e të rinj, merrini dhe vërini atje ku doni, dhe ndryshoni skemën e shtyllave të pultit. Çdo përdorues mund ta administrojë pultin e vet ashtu si do.",
+ "PluginDescription": "Pulti Juaj i Analizave Web. Përshtateni pultin tuaj duke shtuar widget-e të rinj, merrini dhe vërini atje ku doni dhe ndryshoni skemën e shtyllave të pultit. Çdo përdorues mund ta administrojë pultin e vet ashtu si do.",
"RemoveDashboard": "Hiqe pultin",
- "RemoveDashboardConfirm": "Jeni i sigurt se doni të hiqet pulti \"%s\"?",
+ "RemoveDashboardConfirm": "Jeni i sigurt se doni të hiqet pulti “%s”?",
"RemoveDefaultDashboardNotPossible": "Pulti parazgjedhje s’mund të hiqet",
"RenameDashboard": "Riemërtoni pultin",
"ResetDashboard": "Riktheje pultin te parazgjedhjet",
@@ -29,10 +30,9 @@
"SelectWidget": "Përzgjidhni widget-in që doni të shtohet te pulti",
"SetAsDefaultWidgets": "Caktojeni si përzgjedhje widget-esh parazgjedhje",
"SetAsDefaultWidgetsConfirm": "Jeni i sigurt se doni të caktohet përzgjedhja e tanishme e widget-eve dhe e skemës për shtyllat si gjedhja parazgjedhje e pultit?",
- "SetAsDefaultWidgetsConfirmHelp": "Kjo përzgjedhje widget-sh dhe shtyllash për pultin do të përdoret kur cilido përdorues krijon një pult të ri, ose kur përdoret veçoria \"%s\".",
+ "SetAsDefaultWidgetsConfirmHelp": "Kjo përzgjedhje widget-sh dhe shtyllash për pultin do të përdoret kur cilido përdorues krijon një pult të ri, ose kur përdoret veçoria “%s”.",
"TopLinkTooltip": "Shihni raporte Analizash Web për %s.",
"WidgetNotFound": "S’u gjet widget-i",
- "WidgetPreview": "Paraparje widget-i",
- "DashboardCategoryHelp": "Kjo është një faqe pulti. Pultet janë një koleksion widget-esh Matomo që mund t’i shtoni ju vetë, sipas nevojave tuaja. Zgjidhni dhe merrni çfarëdo widget-esh të Matomo-s, që të keni me një shikim të dhënat që %1$s*ju*%2$s keni nevojë."
+ "WidgetPreview": "Paraparje widget-i"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Dashboard/tests/Integration/APITest.php b/plugins/Dashboard/tests/Integration/APITest.php
index 1e1cbbd1fa..829b8b8ba4 100644
--- a/plugins/Dashboard/tests/Integration/APITest.php
+++ b/plugins/Dashboard/tests/Integration/APITest.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\Dashboard\tests\Integration;
use Piwik\Plugins\Dashboard\API;
+use Piwik\Plugins\Dashboard\Dashboard;
use Piwik\Plugins\Dashboard\Model;
use Piwik\Plugins\UsersManager;
use Piwik\Tests\Framework\Fixture;
@@ -125,6 +126,30 @@ class APITest extends IntegrationTestCase
$this->api->createNewDashboardForUser('eva', 'name', $layout);
}
+ public function testCreateNewDashboardForAnonymousDoesNotWork()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('General_YouMustBeLoggedIn');
+
+ FakeAccess::$superUser = false;
+ FakeAccess::$identity = 'anonymous';
+
+ $layout ='[[{"uniqueId":"widgetLivewidget","parameters":{"module":"Live","action":"widget"}}]]';
+ $this->api->createNewDashboardForUser('anonymous', 'name', $layout);
+ }
+
+ public function testCreateNewDashboardForAnonymousDoesNotWorkForSuperUser()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('This method can\'t be performed for anonymous user');
+
+ FakeAccess::$superUser = true;
+ FakeAccess::$identity = 'eva';
+
+ $layout ='[[{"uniqueId":"widgetLivewidget","parameters":{"module":"Live","action":"widget"}}]]';
+ $this->api->createNewDashboardForUser('anonymous', 'name', $layout);
+ }
+
public function testCreateNewDashboardForUserHimself()
{
FakeAccess::$superUser = false;
@@ -174,6 +199,28 @@ class APITest extends IntegrationTestCase
$this->api->copyDashboardToUser(5, 'eva', 'new name');
}
+ public function testRemoveDashboardForAnonymousDoesntWork()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('General_YouMustBeLoggedIn');
+
+ FakeAccess::$superUser = false;
+ FakeAccess::$identity = 'anonymous';
+
+ $this->api->removeDashboard(1, 'anonymous');
+ }
+
+ public function testRemoveDashboardForAnonymousDoesntWorkForSuperUser()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('This method can\'t be performed for anonymous user');
+
+ FakeAccess::$superUser = true;
+ FakeAccess::$identity = 'eva';
+
+ $this->api->removeDashboard(1, 'anonymous');
+ }
+
public function testRemoveDashboardForUserHimself()
{
FakeAccess::$superUser = false;
@@ -231,6 +278,45 @@ class APITest extends IntegrationTestCase
$this->assertEmpty($dashboards);
}
+ public function testResetDashboardForAnonymousDoesntWork()
+ {
+ FakeAccess::$superUser = false;
+ FakeAccess::$identity = 'anonymous';
+
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('General_YouMustBeLoggedIn');
+
+ $this->api->resetDashboardLayout(1, 'anonymous');
+ }
+
+ public function testResetDashboardForAnonymousDoesntWorkForSuperUser()
+ {
+ FakeAccess::$superUser = true;
+ FakeAccess::$identity = 'eva';
+
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('This method can\'t be performed for anonymous user');
+
+ $this->api->resetDashboardLayout(1, 'anonymous');
+ }
+
+ public function testResetDashboard()
+ {
+ $db = new Dashboard();
+ $dashboards = $this->model->getAllDashboardsForUser('eva');
+ $this->assertEmpty($dashboards);
+
+ $id = $this->api->createNewDashboardForUser('eva', 'name', false);
+
+ $dashboard = $db->getLayoutForUser('eva', $id);
+ $this->assertEquals('{}', $dashboard);
+
+ $this->api->resetDashboardLayout($id, 'eva');
+
+ $dashboard = $db->getLayoutForUser('eva', $id);
+ $this->assertEquals($db->getDefaultLayout(), $dashboard);
+ }
+
public function provideContainerConfig()
{
return array(
diff --git a/plugins/Dashboard/tests/UI/DashboardManager_spec.js b/plugins/Dashboard/tests/UI/DashboardManager_spec.js
index 4fc6b9d64a..fe6e1d7b13 100644
--- a/plugins/Dashboard/tests/UI/DashboardManager_spec.js
+++ b/plugins/Dashboard/tests/UI/DashboardManager_spec.js
@@ -109,6 +109,9 @@ describe("DashboardManager", function () {
await page.waitForTimeout(500);
await page.waitForNetworkIdle();
+ await page.waitForSelector('.widget');
+ await page.waitForNetworkIdle();
+
expect(await page.screenshot({ fullPage: true })).to.matchImage('removed');
});
});
diff --git a/plugins/Dashboard/tests/UI/Dashboard_spec.js b/plugins/Dashboard/tests/UI/Dashboard_spec.js
index 269f6e4517..2140504911 100644
--- a/plugins/Dashboard/tests/UI/Dashboard_spec.js
+++ b/plugins/Dashboard/tests/UI/Dashboard_spec.js
@@ -130,6 +130,8 @@ describe("Dashboard", function () {
it("should add a widget when a widget is selected in the dashboard manager", async function() {
await page.click('.dashboard-manager .title');
+ await page.waitForSelector('.widgetpreview-categorylist>li');
+
var live = await page.jQuery('.widgetpreview-categorylist>li:contains(Goals)'); // have to mouse move twice... otherwise Live! will just be highlighted
await live.hover();
await live.click();
@@ -233,6 +235,8 @@ describe("Dashboard", function () {
await button.click();
await page.waitForNetworkIdle();
await page.mouse.move(-10, -10);
+ await page.waitForSelector('.widget');
+ await page.waitForNetworkIdle();
expect(await page.screenshot({ fullPage: true })).to.matchImage('reset');
});
@@ -246,6 +250,8 @@ describe("Dashboard", function () {
await page.mouse.move(-10, -10);
await page.waitForTimeout(200);
await page.waitForNetworkIdle();
+ await page.waitForSelector('.widget');
+ await page.waitForNetworkIdle();
expect(await page.screenshot({ fullPage: true })).to.matchImage('removed');
});
@@ -288,11 +294,11 @@ describe("Dashboard", function () {
var button = await page.jQuery('.modal.open .modal-footer a:contains(Ok)');
await button.click();
await page.mouse.move(-10, -10);
+ await page.waitForSelector('.widget');
await page.waitForNetworkIdle();
expect(await page.screenshot({ fullPage: true })).to.matchImage('create_new');
});
-
it("should load segmented dashboard", async function() {
await removeAllExtraDashboards();
await page.goto(url + '&segment=' + encodeURIComponent("browserCode==FF"));
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
index 00e02983e6..d3c1ace2df 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_create_new.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:05f967414b9c08e38d69af6654f5a9e9c1c6647f1d6605c8f7ecbbaeb0b146a7
-size 293652
+oid sha256:ff45a4a5ba70614cd4d0b91e513b406bcbb21c1b9899126fed0f2cef9b82d1d0
+size 293645
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
index 935fca879b..b8f46b1bf3 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/DashboardManager_removed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:73483791bebdb3395d58b5c7d9b6da28dced16054888cfbf82ed3a3eb0408e89
-size 481822
+oid sha256:51828d341919bed0dab33c8d430d822e0bfdb28140aa19bd36aa05db0348bde5
+size 481845
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png
index d3903c08c3..a85afefe06 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a54074df201d596ec7f3e1d43881a58377645c1a58cf1b12d2b753fd0428b8c6
-size 742468
+oid sha256:9ce23f72bf82a2280cffeccd63b9f5829aa834ff1b3fc0d60e67ada992f59292
+size 742383
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_reset.png b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_reset.png
index ee2410187a..f174389f70 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_reset.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_reset.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3f04b1eb354f9652da3d455f108108f2f466175d80f3f34354bd74eb646ec5aa
-size 374740
+oid sha256:d7e91042b81ef8fdb7f67c346d53f53430aa91be6f59840a9c57330811fc6771
+size 374749
diff --git a/plugins/Dashboard/vue/dist/Dashboard.umd.js b/plugins/Dashboard/vue/dist/Dashboard.umd.js
new file mode 100644
index 0000000000..37eff018a6
--- /dev/null
+++ b/plugins/Dashboard/vue/dist/Dashboard.umd.js
@@ -0,0 +1,431 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", ], factory);
+ else if(typeof exports === 'object')
+ exports["Dashboard"] = factory(require("CoreHome"), require("vue"));
+ else
+ root["Dashboard"] = factory(root["CoreHome"], root["Vue"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__) {
+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/Dashboard/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__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "DashboardStore", function() { return /* reexport */ Dashboard_store; });
+__webpack_require__.d(__webpack_exports__, "Dashboard", function() { return /* reexport */ Dashboard; });
+
+// 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: ./plugins/Dashboard/vue/src/Dashboard/Dashboard.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 Dashboard_store_DashboardStore = /*#__PURE__*/function () {
+ function DashboardStore() {
+ var _this = this;
+
+ _classCallCheck(this, DashboardStore);
+
+ _defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
+ dashboards: []
+ }));
+
+ _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, "dashboards", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.dashboards;
+ }));
+
+ _defineProperty(this, "dashboardsPromise", null);
+ }
+
+ _createClass(DashboardStore, [{
+ key: "getDashboard",
+ value: function getDashboard(dashboardId) {
+ return this.getAllDashboards().then(function (dashboards) {
+ return dashboards.find(function (b) {
+ return parseInt("".concat(b.id), 10) === parseInt("".concat(dashboardId), 10);
+ });
+ });
+ }
+ }, {
+ key: "getDashboardLayout",
+ value: function getDashboardLayout(dashboardId) {
+ return external_CoreHome_["AjaxHelper"].fetch({
+ module: 'Dashboard',
+ action: 'getDashboardLayout',
+ idDashboard: dashboardId
+ }, {
+ withTokenInUrl: true
+ });
+ }
+ }, {
+ key: "reloadAllDashboards",
+ value: function reloadAllDashboards() {
+ this.dashboardsPromise = null;
+ return this.getAllDashboards();
+ }
+ }, {
+ key: "getAllDashboards",
+ value: function getAllDashboards() {
+ var _this2 = this;
+
+ if (!this.dashboardsPromise) {
+ this.dashboardsPromise = external_CoreHome_["AjaxHelper"].fetch({
+ method: 'Dashboard.getDashboards',
+ filter_limit: '-1'
+ }).then(function (response) {
+ if (response) {
+ _this2.privateState.dashboards = response;
+ }
+
+ return _this2.dashboards.value;
+ });
+ }
+
+ return this.dashboardsPromise;
+ }
+ }]);
+
+ return DashboardStore;
+}();
+
+/* harmony default export */ var Dashboard_store = (new Dashboard_store_DashboardStore());
+// CONCATENATED MODULE: ./plugins/Dashboard/vue/src/Dashboard/Dashboard.store.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
+ */
+
+window.angular.module('piwikApp.service').factory('dashboardsModel', function () {
+ return Dashboard_store;
+});
+// CONCATENATED MODULE: ./plugins/Dashboard/vue/src/Dashboard/Dashboard.ts
+function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _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 _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 _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; }
+
+/*!
+ * 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,
+ $ = _window.$;
+
+function renderDashboard(dashboardId, dashboard, layout) {
+ var $settings = $('.dashboardSettings');
+ $settings.show();
+ window.initTopControls(); // Embed dashboard / exported as widget
+
+ if (!$('#topBars').length) {
+ $settings.after($('#Dashboard'));
+ $('#Dashboard ul li').removeClass('active');
+ $("#Dashboard_embeddedIndex_".concat(dashboardId)).addClass('active');
+ }
+
+ window.widgetsHelper.getAvailableWidgets(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
+ $('#dashboardWidgetsArea').off('dashboardempty', window.showEmptyDashboardNotification).on('dashboardempty', window.showEmptyDashboardNotification).dashboard({
+ idDashboard: dashboardId,
+ layout: layout,
+ name: dashboard ? dashboard.name : ''
+ });
+ var divElements = $('#columnPreview').find('>div');
+ divElements.each(function eachPreview() {
+ var width = [];
+ $('div', this).each(function eachDiv() {
+ width.push(this.className.replace(/width-/, ''));
+ });
+ $(this).attr('layout', width.join('-'));
+ });
+ divElements.off('click.renderDashboard');
+ divElements.on('click.renderDashboard', function onRenderDashboard() {
+ divElements.removeClass('choosen');
+ $(this).addClass('choosen');
+ });
+}
+
+function fetchDashboard(dashboardId) {
+ window.globalAjaxQueue.abort();
+ return new Promise(function (resolve) {
+ return setTimeout(resolve);
+ }).then(function () {
+ return Promise.resolve(window.widgetsHelper.firstGetAvailableWidgetsCall);
+ }).then(function () {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ var dashboardElement = $('#dashboardWidgetsArea');
+ dashboardElement.dashboard('destroyWidgets');
+ dashboardElement.empty();
+ return Promise.all([Dashboard_store.getDashboard(dashboardId), Dashboard_store.getDashboardLayout(dashboardId)]);
+ }).then(function (_ref) {
+ var _ref2 = _slicedToArray(_ref, 2),
+ dashboard = _ref2[0],
+ layout = _ref2[1];
+
+ return new Promise(function (resolve) {
+ $(function () {
+ renderDashboard(dashboardId, dashboard, layout);
+ resolve();
+ });
+ });
+ });
+}
+
+function clearDashboard() {
+ $('.top_controls .dashboard-manager').hide(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
+
+ $('#dashboardWidgetsArea').dashboard('destroy');
+}
+
+function onLocationChange(parsed) {
+ if (parsed.module !== 'Widgetize' && parsed.category !== 'Dashboard_Dashboard') {
+ // we remove the dashboard only if we no longer show a dashboard.
+ clearDashboard();
+ }
+}
+
+function onLoadPage(params) {
+ if (params.category === 'Dashboard_Dashboard' && $.isNumeric(params.subcategory)) {
+ params.promise = fetchDashboard(parseInt(params.subcategory, 10));
+ }
+}
+
+function onLoadDashboard(idDashboard) {
+ fetchDashboard(idDashboard);
+}
+
+/* harmony default export */ var Dashboard = ({
+ mounted: function mounted(el, binding) {
+ fetchDashboard(binding.value.idDashboard);
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["watch"])(function () {
+ return external_CoreHome_["MatomoUrl"].parsed.value;
+ }, function (parsed) {
+ onLocationChange(parsed);
+ }); // load dashboard directly since it will be faster than going through reporting page API
+
+ external_CoreHome_["Matomo"].on('ReportingPage.loadPage', onLoadPage);
+ external_CoreHome_["Matomo"].on('Dashboard.loadDashboard', onLoadDashboard);
+ },
+ unmounted: function unmounted() {
+ onLocationChange(external_CoreHome_["MatomoUrl"].parsed.value);
+ external_CoreHome_["Matomo"].off('ReportingPage.loadPage', onLoadPage);
+ external_CoreHome_["Matomo"].off('Dashboard.loadDashboard', onLoadDashboard);
+ }
+});
+// CONCATENATED MODULE: ./plugins/Dashboard/vue/src/Dashboard/Dashboard.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 piwikDashboard() {
+ return {
+ restrict: 'A',
+ scope: {
+ dashboardid: '=',
+ layout: '='
+ },
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ link: function expandOnClickLink(scope, element) {
+ var binding = {
+ instance: null,
+ value: {
+ idDashboard: scope.dashboardid,
+ layout: scope.layout
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ Dashboard.mounted(element[0], binding); // using scope destroy instead of element destroy event, since piwik-dashboard elements
+ // are removed manually, outside of angularjs/vue workflow, so element destroy is not
+ // triggered
+
+ scope.$on('$destroy', function () {
+ Dashboard.unmounted();
+ });
+ }
+ };
+}
+window.angular.module('piwikApp').directive('piwikDashboard', piwikDashboard);
+// CONCATENATED MODULE: ./plugins/Dashboard/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=Dashboard.umd.js.map \ No newline at end of file
diff --git a/plugins/Dashboard/vue/dist/Dashboard.umd.min.js b/plugins/Dashboard/vue/dist/Dashboard.umd.min.js
new file mode 100644
index 0000000000..15c79f8b71
--- /dev/null
+++ b/plugins/Dashboard/vue/dist/Dashboard.umd.min.js
@@ -0,0 +1,27 @@
+(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["Dashboard"]=t(require("CoreHome"),require("vue")):e["Dashboard"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="plugins/Dashboard/vue/dist/",r(r.s="fae3")}({"19dc":function(t,r){t.exports=e},"8bbf":function(e,r){e.exports=t},fae3:function(e,t,r){"use strict";if(r.r(t),r.d(t,"DashboardStore",(function(){return f})),r.d(t,"Dashboard",(function(){return S})),"undefined"!==typeof window){var o=window.document.currentScript,n=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);n&&(r.p=n[1])}var a=r("8bbf"),i=r("19dc");function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function s(e,t,r){return t&&d(e.prototype,t),r&&d(e,r),e}function l(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,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;u(this,e),l(this,"privateState",Object(a["reactive"])({dashboards:[]})),l(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),l(this,"dashboards",Object(a["computed"])((function(){return t.state.value.dashboards}))),l(this,"dashboardsPromise",null)}return s(e,[{key:"getDashboard",value:function(e){return this.getAllDashboards().then((function(t){return t.find((function(t){return parseInt("".concat(t.id),10)===parseInt("".concat(e),10)}))}))}},{key:"getDashboardLayout",value:function(e){return i["AjaxHelper"].fetch({module:"Dashboard",action:"getDashboardLayout",idDashboard:e},{withTokenInUrl:!0})}},{key:"reloadAllDashboards",value:function(){return this.dashboardsPromise=null,this.getAllDashboards()}},{key:"getAllDashboards",value:function(){var e=this;return this.dashboardsPromise||(this.dashboardsPromise=i["AjaxHelper"].fetch({method:"Dashboard.getDashboards",filter_limit:"-1"}).then((function(t){return t&&(e.privateState.dashboards=t),e.dashboards.value}))),this.dashboardsPromise}}]),e}(),f=new c;function h(e,t){return v(e)||y(e,t)||p(e,t)||b()}function b(){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 p(e,t){if(e){if("string"===typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r<t;r++)o[r]=e[r];return o}function y(e,t){var r=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,a=[],i=!0,u=!1;try{for(r=r.call(e);!(i=(o=r.next()).done);i=!0)if(a.push(o.value),t&&a.length===t)break}catch(d){u=!0,n=d}finally{try{i||null==r["return"]||r["return"]()}finally{if(u)throw n}}return a}}function v(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
+ */
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+window.angular.module("piwikApp.service").factory("dashboardsModel",(function(){return f}));var g=window,w=g.$;function D(e,t,r){var o=w(".dashboardSettings");o.show(),window.initTopControls(),w("#topBars").length||(o.after(w("#Dashboard")),w("#Dashboard ul li").removeClass("active"),w("#Dashboard_embeddedIndex_".concat(e)).addClass("active")),window.widgetsHelper.getAvailableWidgets(),w("#dashboardWidgetsArea").off("dashboardempty",window.showEmptyDashboardNotification).on("dashboardempty",window.showEmptyDashboardNotification).dashboard({idDashboard:e,layout:r,name:t?t.name:""});var n=w("#columnPreview").find(">div");n.each((function(){var e=[];w("div",this).each((function(){e.push(this.className.replace(/width-/,""))})),w(this).attr("layout",e.join("-"))})),n.off("click.renderDashboard"),n.on("click.renderDashboard",(function(){n.removeClass("choosen"),w(this).addClass("choosen")}))}function j(e){return window.globalAjaxQueue.abort(),new Promise((function(e){return setTimeout(e)})).then((function(){return Promise.resolve(window.widgetsHelper.firstGetAvailableWidgetsCall)})).then((function(){var t=w("#dashboardWidgetsArea");return t.dashboard("destroyWidgets"),t.empty(),Promise.all([f.getDashboard(e),f.getDashboardLayout(e)])})).then((function(t){var r=h(t,2),o=r[0],n=r[1];return new Promise((function(t){w((function(){D(e,o,n),t()}))}))}))}function A(){w(".top_controls .dashboard-manager").hide(),w("#dashboardWidgetsArea").dashboard("destroy")}function P(e){"Widgetize"!==e.module&&"Dashboard_Dashboard"!==e.category&&A()}function x(e){"Dashboard_Dashboard"===e.category&&w.isNumeric(e.subcategory)&&(e.promise=j(parseInt(e.subcategory,10)))}function O(e){j(e)}var S={mounted:function(e,t){j(t.value.idDashboard),Object(a["watch"])((function(){return i["MatomoUrl"].parsed.value}),(function(e){P(e)})),i["Matomo"].on("ReportingPage.loadPage",x),i["Matomo"].on("Dashboard.loadDashboard",O)},unmounted:function(){P(i["MatomoUrl"].parsed.value),i["Matomo"].off("ReportingPage.loadPage",x),i["Matomo"].off("Dashboard.loadDashboard",O)}};
+/*!
+ * 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(){return{restrict:"A",scope:{dashboardid:"=",layout:"="},link:function(e,t){var r={instance:null,value:{idDashboard:e.dashboardid,layout:e.layout},oldValue:null,modifiers:{},dir:{}};S.mounted(t[0],r),e.$on("$destroy",(function(){S.unmounted()}))}}}window.angular.module("piwikApp").directive("piwikDashboard",k)}})}));
+//# sourceMappingURL=Dashboard.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Dashboard/vue/dist/umd.metadata.json b/plugins/Dashboard/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..9ecfcc0456
--- /dev/null
+++ b/plugins/Dashboard/vue/dist/umd.metadata.json
@@ -0,0 +1,5 @@
+{
+ "dependsOn": [
+ "CoreHome"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Dashboard/vue/src/Dashboard/Dashboard.adapter.ts b/plugins/Dashboard/vue/src/Dashboard/Dashboard.adapter.ts
new file mode 100644
index 0000000000..5f31fce6f9
--- /dev/null
+++ b/plugins/Dashboard/vue/src/Dashboard/Dashboard.adapter.ts
@@ -0,0 +1,44 @@
+/*!
+ * 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 Dashboard from './Dashboard';
+import { DashboardLayout } from '../types';
+
+export default function piwikDashboard(): IDirective {
+ return {
+ restrict: 'A',
+ scope: {
+ dashboardid: '=',
+ layout: '=',
+ },
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ link: function expandOnClickLink(scope: any, element: JQuery) {
+ const binding = {
+ instance: null,
+ value: {
+ idDashboard: scope.dashboardid as string,
+ layout: scope.layout as DashboardLayout,
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ Dashboard.mounted(element[0], binding);
+
+ // using scope destroy instead of element destroy event, since piwik-dashboard elements
+ // are removed manually, outside of angularjs/vue workflow, so element destroy is not
+ // triggered
+ scope.$on('$destroy', () => {
+ Dashboard.unmounted();
+ });
+ },
+ };
+}
+
+window.angular.module('piwikApp').directive('piwikDashboard', piwikDashboard);
diff --git a/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.adapter.ts b/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.adapter.ts
new file mode 100644
index 0000000000..0fd299225d
--- /dev/null
+++ b/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.adapter.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 DashboardStore from './Dashboard.store';
+
+window.angular.module('piwikApp.service').factory('dashboardsModel', () => DashboardStore);
diff --git a/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.ts b/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.ts
new file mode 100644
index 0000000000..ed38275b37
--- /dev/null
+++ b/plugins/Dashboard/vue/src/Dashboard/Dashboard.store.ts
@@ -0,0 +1,76 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ computed,
+ readonly,
+ reactive,
+ DeepReadonly,
+} from 'vue';
+import { AjaxHelper } from 'CoreHome';
+import { DashboardLayout, Dashboard } from '../types';
+
+interface DashboardStoreState {
+ dashboards: Dashboard[];
+}
+
+class DashboardStore {
+ private privateState = reactive<DashboardStoreState>({
+ dashboards: [],
+ });
+
+ readonly state = computed(() => readonly(this.privateState));
+
+ readonly dashboards = computed(() => this.state.value.dashboards);
+
+ private dashboardsPromise: Promise<DeepReadonly<Dashboard[]>>|null = null;
+
+ getDashboard(dashboardId: string|number) {
+ return this.getAllDashboards().then(
+ (dashboards) => dashboards.find(
+ (b) => parseInt(`${b.id}`, 10) === parseInt(`${dashboardId}`, 10),
+ ),
+ );
+ }
+
+ getDashboardLayout(dashboardId: string|number): Promise<DashboardLayout> {
+ return AjaxHelper.fetch<DashboardLayout>(
+ {
+ module: 'Dashboard',
+ action: 'getDashboardLayout',
+ idDashboard: dashboardId,
+ },
+ {
+ withTokenInUrl: true,
+ },
+ );
+ }
+
+ reloadAllDashboards(): ReturnType<DashboardStore['getAllDashboards']> {
+ this.dashboardsPromise = null;
+ return this.getAllDashboards();
+ }
+
+ getAllDashboards(): Promise<DeepReadonly<Dashboard[]>> {
+ if (!this.dashboardsPromise) {
+ this.dashboardsPromise = AjaxHelper.fetch<Dashboard[]>({
+ method: 'Dashboard.getDashboards',
+ filter_limit: '-1',
+ }).then((response) => {
+ if (response) {
+ this.privateState.dashboards = response;
+ }
+
+ return this.dashboards.value;
+ });
+ }
+
+ return this.dashboardsPromise;
+ }
+}
+
+export default new DashboardStore();
diff --git a/plugins/Dashboard/vue/src/Dashboard/Dashboard.ts b/plugins/Dashboard/vue/src/Dashboard/Dashboard.ts
new file mode 100644
index 0000000000..d13c8ee3e2
--- /dev/null
+++ b/plugins/Dashboard/vue/src/Dashboard/Dashboard.ts
@@ -0,0 +1,137 @@
+/*!
+ * 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, watch } from 'vue';
+import { Matomo, MatomoUrl } from 'CoreHome';
+import DashboardStore from './Dashboard.store';
+import { Dashboard, DashboardLayout } from '../types';
+
+interface DashboardDirectiveArgs {
+ idDashboard: string|number;
+ layout?: unknown;
+}
+
+const { $ } = window;
+
+function renderDashboard(
+ dashboardId: string|number,
+ dashboard: Dashboard,
+ layout: DashboardLayout,
+) {
+ const $settings = $('.dashboardSettings');
+
+ $settings.show();
+ window.initTopControls();
+
+ // Embed dashboard / exported as widget
+ if (!$('#topBars').length) {
+ $settings.after($('#Dashboard'));
+ $('#Dashboard ul li').removeClass('active');
+ $(`#Dashboard_embeddedIndex_${dashboardId}`).addClass('active');
+ }
+
+ window.widgetsHelper.getAvailableWidgets();
+
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ ($('#dashboardWidgetsArea') as any)
+ .off('dashboardempty', window.showEmptyDashboardNotification)
+ .on('dashboardempty', window.showEmptyDashboardNotification)
+ .dashboard({
+ idDashboard: dashboardId,
+ layout,
+ name: dashboard ? dashboard.name : '',
+ });
+
+ const divElements = $('#columnPreview').find('>div');
+ divElements.each(function eachPreview() {
+ const width: string[] = [];
+ $('div', this).each(function eachDiv() {
+ width.push(this.className.replace(/width-/, ''));
+ });
+ $(this).attr('layout', width.join('-'));
+ });
+
+ divElements.off('click.renderDashboard');
+ divElements.on('click.renderDashboard', function onRenderDashboard() {
+ divElements.removeClass('choosen');
+ $(this).addClass('choosen');
+ });
+}
+
+function fetchDashboard(dashboardId: string|number) {
+ window.globalAjaxQueue.abort();
+
+ return new Promise((resolve) => setTimeout(resolve)).then(
+ () => Promise.resolve(window.widgetsHelper.firstGetAvailableWidgetsCall),
+ ).then(() => {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const dashboardElement = $('#dashboardWidgetsArea') as any;
+ dashboardElement.dashboard('destroyWidgets');
+ dashboardElement.empty();
+
+ return Promise.all([
+ DashboardStore.getDashboard(dashboardId),
+ DashboardStore.getDashboardLayout(dashboardId),
+ ]);
+ }).then(([dashboard, layout]) => new Promise<void>((resolve) => {
+ $(() => {
+ renderDashboard(dashboardId, dashboard as Dashboard, layout as DashboardLayout);
+ resolve();
+ });
+ }));
+}
+
+function clearDashboard() {
+ $('.top_controls .dashboard-manager').hide();
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ ($('#dashboardWidgetsArea') as any).dashboard('destroy');
+}
+
+function onLocationChange(parsed: (typeof MatomoUrl)['urlParsed']['value']) {
+ if (parsed.module !== 'Widgetize' && parsed.category !== 'Dashboard_Dashboard') {
+ // we remove the dashboard only if we no longer show a dashboard.
+ clearDashboard();
+ }
+}
+interface LoadPageArgs {
+ category: string;
+ subcategory: string;
+ promise?: Promise<void>;
+}
+
+function onLoadPage(params: LoadPageArgs) {
+ if (params.category === 'Dashboard_Dashboard'
+ && $.isNumeric(params.subcategory)
+ ) {
+ params.promise = fetchDashboard(parseInt(params.subcategory, 10));
+ }
+}
+
+function onLoadDashboard(idDashboard: string|number) {
+ fetchDashboard(idDashboard);
+}
+
+export default {
+ mounted(el: HTMLElement, binding: DirectiveBinding<DashboardDirectiveArgs>): void {
+ fetchDashboard(binding.value.idDashboard);
+
+ watch(() => MatomoUrl.parsed.value, (parsed) => {
+ onLocationChange(parsed);
+ });
+
+ // load dashboard directly since it will be faster than going through reporting page API
+ Matomo.on('ReportingPage.loadPage', onLoadPage);
+
+ Matomo.on('Dashboard.loadDashboard', onLoadDashboard);
+ },
+ unmounted(): void {
+ onLocationChange(MatomoUrl.parsed.value);
+
+ Matomo.off('ReportingPage.loadPage', onLoadPage);
+ Matomo.off('Dashboard.loadDashboard', onLoadDashboard);
+ },
+};
diff --git a/plugins/Dashboard/vue/src/index.ts b/plugins/Dashboard/vue/src/index.ts
new file mode 100644
index 0000000000..4d8b6c30d4
--- /dev/null
+++ b/plugins/Dashboard/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 './Dashboard/Dashboard.store.adapter';
+import './Dashboard/Dashboard.adapter';
+
+export { default as DashboardStore } from './Dashboard/Dashboard.store';
+export { default as Dashboard } from './Dashboard/Dashboard';
diff --git a/plugins/Dashboard/vue/src/types.ts b/plugins/Dashboard/vue/src/types.ts
new file mode 100644
index 0000000000..ff25f40e6e
--- /dev/null
+++ b/plugins/Dashboard/vue/src/types.ts
@@ -0,0 +1,28 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { WidgetType } from 'CoreHome';
+
+interface WidgetRef {
+ module: string;
+ action: string;
+}
+
+export interface Dashboard {
+ id: string|number;
+ name: string;
+ widgets: WidgetRef[];
+}
+
+interface DashboardLayoutConfig {
+ layout: string;
+}
+
+export interface DashboardLayout {
+ columns: WidgetType[][];
+ config: DashboardLayoutConfig;
+}
diff --git a/plugins/DeviceDetectorCache b/plugins/DeviceDetectorCache
-Subproject cc09ae1e513d6d8026f5b6281aff6b95985df71
+Subproject e783fec72841f6a1ab562a07e7724a42cb4eaa1
diff --git a/plugins/DevicePlugins/Columns/Plugin.php b/plugins/DevicePlugins/Columns/Plugin.php
index 08e748c928..f3e7bf6c0b 100644
--- a/plugins/DevicePlugins/Columns/Plugin.php
+++ b/plugins/DevicePlugins/Columns/Plugin.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\DevicePlugins\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Plugin extends Dimension
{
diff --git a/plugins/DevicePlugins/lang/ca.json b/plugins/DevicePlugins/lang/ca.json
index b097c67e18..0f78779ba8 100644
--- a/plugins/DevicePlugins/lang/ca.json
+++ b/plugins/DevicePlugins/lang/ca.json
@@ -2,8 +2,9 @@
"DevicePlugins": {
"BrowserWithNoPluginsEnabled": "%1$s sense connectors activats",
"BrowserWithPluginsEnabled": "%1$s amb els connectors %2$s activats",
- "PluginDescription": "Mostra la llista de connectors que suporten els navegadors dels visitants",
+ "PluginDescription": "Informa de la llista de connectors compatibles amb els navegadors dels visitants.",
+ "PluginDetectionDoesNotWorkInIE": "Nota: la detecció de connectors no funciona a Internet Explorer abans de l'11. Aquest informe només es basa en navegadors que no són IE i en versions més noves d'IE.",
"WidgetPlugins": "Llistat de connectors",
"WidgetPluginsDocumentation": "Aquest informe mostra quins connectors tenen els vostres visitants activades. Aquesta informació pot ser important per determinar la forma correcta de mostrar el contingut."
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicePlugins/lang/id.json b/plugins/DevicePlugins/lang/id.json
index d84a902671..63f59acc15 100644
--- a/plugins/DevicePlugins/lang/id.json
+++ b/plugins/DevicePlugins/lang/id.json
@@ -2,7 +2,9 @@
"DevicePlugins": {
"BrowserWithNoPluginsEnabled": "%1$s dengan tanpa pengaya diaktifkan",
"BrowserWithPluginsEnabled": "%1$s dengan %2$s pengaya 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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicePlugins/lang/sq.json b/plugins/DevicePlugins/lang/sq.json
index 477e2a2f77..82538ddbc6 100644
--- a/plugins/DevicePlugins/lang/sq.json
+++ b/plugins/DevicePlugins/lang/sq.json
@@ -4,7 +4,7 @@
"BrowserWithPluginsEnabled": "%1$s me shtojca %2$s të aktivizuara",
"PluginDescription": "Raporton listën e shtojcave që mbulohen nga shfletuesit e përdoruesve.",
"PluginDetectionDoesNotWorkInIE": "Shënim: Zbulimi i shtojcave nuk funksionon nën Internet Explorer më të hershëm se 11. Ky raport bazohet vetëm në shfletues jo-IE dhe versione IE më të rinj.",
- "WidgetPlugins": "Listë e Shtojcave",
+ "WidgetPlugins": "Shtojca Shfletuesish",
"WidgetPluginsDocumentation": "Ky raport tregon se cilat shtojca shfletuesi kanë të aktivizuara vizitorët tuaj. Ky informacion mund të jetë i vlefshëm për zgjedhjen e mënyrës më të përshtatshme për ofrimin e lëndës suaj."
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicesDetection/Columns/BrowserName.php b/plugins/DevicesDetection/Columns/BrowserName.php
index 6e2f2ae49b..69ff56a235 100644
--- a/plugins/DevicesDetection/Columns/BrowserName.php
+++ b/plugins/DevicesDetection/Columns/BrowserName.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use DeviceDetector\Parser\Client\Browser;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Common;
use Piwik\Metrics\Formatter;
use Piwik\Plugin\Segment;
use Piwik\Segment\SegmentsList;
diff --git a/plugins/DevicesDetection/Columns/DeviceModel.php b/plugins/DevicesDetection/Columns/DeviceModel.php
index 54b3ab52f3..98f2c9fb18 100644
--- a/plugins/DevicesDetection/Columns/DeviceModel.php
+++ b/plugins/DevicesDetection/Columns/DeviceModel.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Columns;
-use Piwik\Piwik;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/DevicesDetection/Columns/DeviceType.php b/plugins/DevicesDetection/Columns/DeviceType.php
index 30cdb476ba..a59974368d 100644
--- a/plugins/DevicesDetection/Columns/DeviceType.php
+++ b/plugins/DevicesDetection/Columns/DeviceType.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use Piwik\Metrics\Formatter;
use Piwik\Tracker\Request;
-use Exception;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
use DeviceDetector\Parser\Device\AbstractDeviceParser as DeviceParser;
diff --git a/plugins/DevicesDetection/Columns/Os.php b/plugins/DevicesDetection/Columns/Os.php
index 4e5bf84418..63ed9c342e 100644
--- a/plugins/DevicesDetection/Columns/Os.php
+++ b/plugins/DevicesDetection/Columns/Os.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\DevicesDetection\Columns;
use DeviceDetector\Parser\OperatingSystem;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Common;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\Segment;
diff --git a/plugins/DevicesDetection/Controller.php b/plugins/DevicesDetection/Controller.php
index de5424908e..d74ba9d527 100644
--- a/plugins/DevicesDetection/Controller.php
+++ b/plugins/DevicesDetection/Controller.php
@@ -10,10 +10,8 @@ namespace Piwik\Plugins\DevicesDetection;
use DeviceDetector\DeviceDetector;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugin\ControllerAdmin;
-use Piwik\Plugin\Report;
use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
diff --git a/plugins/DevicesDetection/Reports/Base.php b/plugins/DevicesDetection/Reports/Base.php
index 482d6ba3ed..3f773c6a9d 100644
--- a/plugins/DevicesDetection/Reports/Base.php
+++ b/plugins/DevicesDetection/Reports/Base.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Reports;
-use Piwik\Metrics;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/DevicesDetection/Reports/GetType.php b/plugins/DevicesDetection/Reports/GetType.php
index 6ebb6b4b11..ad0dbac319 100644
--- a/plugins/DevicesDetection/Reports/GetType.php
+++ b/plugins/DevicesDetection/Reports/GetType.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\DevicesDetection\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\DevicesDetection\Columns\DeviceType;
diff --git a/plugins/DevicesDetection/Updates/1.14.php b/plugins/DevicesDetection/Updates/1.14.php
index 092f7166f9..d1bf31dcec 100644
--- a/plugins/DevicesDetection/Updates/1.14.php
+++ b/plugins/DevicesDetection/Updates/1.14.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\DevicesDetection;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/DevicesDetection/lang/ca.json b/plugins/DevicesDetection/lang/ca.json
index d30c774e53..98bd81ffd4 100644
--- a/plugins/DevicesDetection/lang/ca.json
+++ b/plugins/DevicesDetection/lang/ca.json
@@ -1,50 +1,69 @@
{
"DevicesDetection": {
+ "BotDetected": "Aquest agent d'usuari es detecta com a %1$s. Les visites d'aquest agent d'usuari no seran seguides a Matomo de manera predeterminada.",
+ "BrowserCode": "Codi de navegador",
"BrowserEngine": "Navegador",
"BrowserEngineDocumentation": "Aquest gràfic mostra els navegadors dels vostres visitants dividits en famílies. %s La informació més important per als desenvolupadors web es quin tipus de sistema de renderització estan utilitzant els seus visitants. Les etiquetiquetes contenen els noms dels sistemes, seguit pel navegador més comú utilitzant aquest sistema.",
"BrowserEngines": "motors de navegació",
"BrowserFamily": "Família del navegador",
- "Browsers": "Navegadors",
"BrowserVersion": "Versió del navegador",
"BrowserVersions": "versions del navegador",
+ "Browsers": "Navegadors",
"Camera": "càmera",
"CarBrowser": "navegador de cotxe",
- "Software": "Software",
+ "ClientType": "Tipus de client",
+ "ClientTypes": "Tipus de clients",
"ColumnBrowser": "Navegador",
"ColumnOperatingSystem": "Sistema operatiu",
"ColumnOperatingSystemVersion": "Versió del sistema operatiu",
"Console": "Consola",
- "dataTableLabelBrands": "Marca",
- "dataTableLabelModels": "Model",
- "dataTableLabelSystemVersion": "Versió del sistema operatiu",
- "dataTableLabelTypes": "Tipus",
"Device": "Dispositiu",
"DeviceBrand": "Marca del dispositiu",
+ "DeviceBrandReportDocumentation": "Aquest informe mostra les marques/fabricants dels dispositius que han utilitzat els vostres visitants. En la majoria dels casos aquesta informació només està disponible per a dispositius que no són d'escriptori.",
"DeviceBrands": "Marques de dispositius",
"DeviceDetection": "Detecció de dispositius",
"DeviceModel": "Model del dispositiu",
+ "DeviceModelReportDocumentation": "Aquest informe mostra els dispositius que fan servir els vostres visitants. Cada model es mostra combinat amb la marca del dispositiu ja que alguns noms de models són utilitzats per diverses marques.",
"DeviceModels": "Models de dispositiu",
- "DevicesDetection": "Dispositius del visitant",
"DeviceType": "Tipus de dispositiu",
+ "DeviceTypeReportDocumentation": "Aquest informe mostra els tipus de dispositius que han utilitzat els vostres visitants. Aquest informe mostrarà sempre tots els tipus de dispositius que Matomo pugui detectar, encara que no hi hagi hagut visites amb un tipus específic.",
"DeviceTypes": "Tipus de dispositius",
+ "Devices": "Dispositius",
+ "DevicesDetection": "Dispositius del visitant",
"FeaturePhone": "Característiques del telèfon",
+ "FeedReader": "Lector de notícies",
+ "GenericDevice": "Genèric %s",
+ "Library": "Biblioteca",
+ "MediaPlayer": "Reproductor multimèdia",
+ "MobileApp": "Aplicació mòbil",
+ "MobileDevice": "Dispositiu mòbil",
+ "OperatingSystemCode": "Codi de sistema operatiu",
"OperatingSystemFamilies": "Famílies del sistema operatiu",
+ "OperatingSystemFamiliesReportDocumentation": "Aquest informe us mostra els sistemes operatius que utilitzen els vostres visitants agrupats per família de sistemes operatius. Una família de sistemes operatius consta de diferents versions o distribucions.",
"OperatingSystemFamily": "Família del Sistema Operatiu",
- "OperatingSystems": "Sistemes operatius",
"OperatingSystemVersions": "Versions del sistema operatiu",
+ "OperatingSystemVersionsReportDocumentation": "Aquest informe us mostra els sistemes operatius que utilitzen els vostres visitants. Cada versió i distribució es mostra per separat.",
+ "OperatingSystems": "Sistemes operatius",
+ "Peripheral": "Perifèric",
+ "Phablet": "Taulèfon",
+ "Pim": "PIM",
"PluginDescription": "Proporciona informació extesa sobre els dispositius dels usuaris, tals com marca (fabricant), model (versió del dispositiu), tipus de dispositiu (tv, consola, telèfon intel·ligent, d'escriptori, etc.) i més.",
+ "PortableMediaPlayer": "Reproductor de medis portàtils",
"SmartDisplay": "Pantalla intel·ligent",
+ "SmartSpeaker": "Altaveu intel·ligent",
"Smartphone": "Telèfon intel·ligent",
- "PortableMediaPlayer": "Reproductor de medis portàtils",
- "Devices": "Dispositius",
- "GenericDevice": "Genèric %s",
- "MobileDevice": "Dispositiu mòbil",
- "Tablet": "Tauleta",
- "Phablet": "Phablet",
+ "Software": "Software",
"TV": "Televisió",
+ "Tablet": "Tauleta",
"UserAgent": "Agent d'usuari",
- "XVisitsFromDevices": "%1$s de visites provenen de %2$s dispositius",
+ "Wearable": "Portàtil",
+ "WidgetBrowserVersionsDocumentation": "Aquest informe conté informació sobre quin tipus de navegador està utilitzant els vostres visitants. Cada versió del navegador es llista per separat.",
"WidgetBrowsers": "Navegadors",
- "WidgetBrowserVersionsDocumentation": "Aquest informe conté informació sobre quin tipus de navegador està utilitzant els vostres visitants. Cada versió del navegador es llista per separat."
+ "WidgetBrowsersDocumentation": "Aquest informe conté informació sobre quin tipus de navegador estaven utilitzant els vostres visitants.",
+ "XVisitsFromDevices": "%1$s de visites provenen de %2$s dispositius",
+ "dataTableLabelBrands": "Marca",
+ "dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Versió del sistema operatiu",
+ "dataTableLabelTypes": "Tipus"
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicesDetection/lang/nb.json b/plugins/DevicesDetection/lang/nb.json
index 1f7fbeeb06..7a48785595 100644
--- a/plugins/DevicesDetection/lang/nb.json
+++ b/plugins/DevicesDetection/lang/nb.json
@@ -19,11 +19,14 @@
"Console": "Konsoll",
"Device": "Enhet",
"DeviceBrand": "Enhetsmerke",
+ "DeviceBrandReportDocumentation": "Denne rapportene viser merkene/produsentene av enhetene dine besøkende bruker. I de fleste fall er denne infoen kun tilgjengelig for enheter som ikke er skrivebordsmaskiner.",
"DeviceBrands": "Enhetsmerker",
"DeviceDetection": "Enhetsdeteksjon",
"DeviceModel": "Enhetsmodell",
+ "DeviceModelReportDocumentation": "Denne rapporten viser enhetene dine besøkende bruker. Hver modell vises kombinert med enhetsmerket, siden noen modellnavn brukes av flere merker.",
"DeviceModels": "Enhetsmodeller",
"DeviceType": "Enhetstype",
+ "DeviceTypeReportDocumentation": "Denne rapporten viser hvilke typer enheter dine besøkende bruker. Denne rapporten vil alltid vise enhetstypene Matomo kan oppdage, selv om det ikke er noen besøk av angitt type.",
"DeviceTypes": "Enhetstyper",
"Devices": "Enheter",
"DevicesDetection": "Besøkendes enheter",
@@ -31,13 +34,17 @@
"FeedReader": "Informasjonskanalleser",
"GenericDevice": "Generisk %s",
"Library": "Bibliotek",
+ "MediaPlayer": "Mediaspiller",
"MobileApp": "Mobil-app",
"MobileDevice": "Mobilenhet",
"OperatingSystemCode": "Operativsystemskode",
"OperatingSystemFamilies": "Operativsystem-familier",
+ "OperatingSystemFamiliesReportDocumentation": "Denne rapporten viser operativsystemene dine besøkende bruker, gruppert etter operativsystemsfamilie. En operativsystemsfamilie består av forskjellige versjoner eller distribusjoner.",
"OperatingSystemFamily": "Operativsystemfamilie",
"OperatingSystemVersions": "Operativsystem-versjoner",
+ "OperatingSystemVersionsReportDocumentation": "Denne rapporten viser deg operativsystemene dine besøkere bruker. Hver versjon og distribusjon vises for seg.",
"OperatingSystems": "Operativsystem",
+ "Peripheral": "Tilleggsutstyr",
"Phablet": "Phablet",
"Pim": "Mediaspiller",
"PluginDescription": "Gir utvidet informasjon om brukers enheter, som merke (produsent), modell (enhetsversjon), enhetstype (TV, konsoll, smarttelefon, osv) og mer.",
@@ -52,6 +59,7 @@
"Wearable": "Ikledbar",
"WidgetBrowserVersionsDocumentation": "Denne rapporten inneholder informasjon om hva slags nettleser som dine besøkere bruker. Alle nettleserversjoner er opplistet separat.",
"WidgetBrowsers": "Besøkendes nettlesere",
+ "WidgetBrowsersDocumentation": "Denne rapporten inneholder info om hva slags nettleser dine besøkende brukte.",
"XVisitsFromDevices": "%1$s besøk fra %2$s enheter",
"dataTableLabelBrands": "Merke",
"dataTableLabelModels": "Modell",
diff --git a/plugins/DevicesDetection/lang/ro.json b/plugins/DevicesDetection/lang/ro.json
index bbc4f1c7f2..0e55377f1f 100644
--- a/plugins/DevicesDetection/lang/ro.json
+++ b/plugins/DevicesDetection/lang/ro.json
@@ -1,40 +1,40 @@
{
"DevicesDetection": {
- "BrowserEngine": "Browser",
+ "BrowserEngine": "Motorul browserului",
"BrowserEngineDocumentation": "Acest grafic arată browserele vizitatorilor dvs. defalcate în familii browser. %s Cele mai importante informații pentru dezvoltatori web este ce fel de motor de cautare au utilizat vizitatorii lor . Etichetele conțin numele motoarelor urmate de cele mai comune browsere folosind motorul în paranteze.",
"BrowserFamily": "Browser după familie",
- "Browsers": "Browsere",
"BrowserVersion": "Versiunea browser-ului",
"BrowserVersions": "Versiunile browserului",
+ "Browsers": "Browsere",
"Camera": "Camera",
"CarBrowser": "Browser de masina",
- "Software": "Software",
"ColumnBrowser": "Browser",
"ColumnOperatingSystem": "Sistem de operare",
"Console": "Consola",
- "dataTableLabelBrands": "Brand",
- "dataTableLabelModels": "Model",
- "dataTableLabelSystemVersion": "Versiunea Sistemului de Operare",
- "dataTableLabelTypes": "Tip",
"Device": "Dispozitiv",
"DeviceBrand": "Brandul dispozitivului",
"DeviceDetection": "Detectarea dispozitivului",
"DeviceModel": "Modelul dispozitivului",
- "DevicesDetection": "Dispozitivele Utilizatorilor",
"DeviceType": "Tipul dispozitivului",
+ "Devices": "Dispozitive",
+ "DevicesDetection": "Dispozitivele Utilizatorilor",
"FeaturePhone": "Caracteristica telefon",
+ "MobileApp": "Aplicație mobilă",
"OperatingSystemFamilies": "Familiile Sistemului de Operare",
"OperatingSystemFamily": "Sistem de operare după familie",
- "OperatingSystems": "Sisteme operare",
"OperatingSystemVersions": "Versiunile Sistemului de Operare",
+ "OperatingSystems": "Sisteme operare",
"SmartDisplay": "Display inteligent",
"Smartphone": "Smartphone",
- "Devices": "Dispozitive",
- "Tablet": "Tabletă",
+ "Software": "Software",
"TV": "Tv",
+ "Tablet": "Tabletă",
"UserAgent": "User-Agent",
- "MobileApp": "Aplicație mobilă",
+ "WidgetBrowserVersionsDocumentation": "Acest raport conține informații cu privire la ce fel de browser utilizeaza de vizitatori . Fiecare versiune de browser este listată separat.",
"WidgetBrowsers": "Browsere vizitatori",
- "WidgetBrowserVersionsDocumentation": "Acest raport conține informații cu privire la ce fel de browser utilizeaza de vizitatori . Fiecare versiune de browser este listată separat."
+ "dataTableLabelBrands": "Brand",
+ "dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Versiunea Sistemului de Operare",
+ "dataTableLabelTypes": "Tip"
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicesDetection/lang/sq.json b/plugins/DevicesDetection/lang/sq.json
index 0ead052640..d03462abcf 100644
--- a/plugins/DevicesDetection/lang/sq.json
+++ b/plugins/DevicesDetection/lang/sq.json
@@ -1,67 +1,68 @@
{
"DevicesDetection": {
"BotDetected": "Ky Agjent Përdoruesi është pikasur si %1$s. Si parazgjedhje, vizita me këtë agjent përdoruesi s’do të ndiqen në Matomo.",
+ "BrowserCode": "Kod shfletuesi",
"BrowserEngine": "Motor shfletuesi",
"BrowserEngineDocumentation": "Ky grafik tregon shfletuesit e vizitorëve tuaj, grupuar sipas familjesh shfletuesish. %s Informacioni më i rëndësishëm për programuesit web është lloji i mekanizmit vizatues që përdor shfletuesi. Etiketat përmbajnë emrat e mekanizmave, pasuar në kllapa nga shfletuesit më të zakonshëm që përdorin secilin prej tyre.",
"BrowserEngines": "Motorë shfletuesi",
"BrowserFamily": "Familje shfletuesi",
- "Browsers": "Shfletues",
"BrowserVersion": "Version shfletuesi",
"BrowserVersions": "Versione shfletuesi",
+ "Browsers": "Shfletues",
"Camera": "Kamerë",
- "CarBrowser": "Shfletues automjetesh",
- "Software": "Software",
+ "CarBrowser": "Shfletues për automjete",
+ "ClientType": "Lloj klienti",
+ "ClientTypes": "Lloje klientësh",
"ColumnBrowser": "Shfletues",
- "BrowserCode": "Kod shfletuesi",
"ColumnOperatingSystem": "Sistem operativ",
"ColumnOperatingSystemVersion": "Version sistemi operativ",
"Console": "Konsolë",
- "dataTableLabelBrands": "Markë",
- "dataTableLabelModels": "Model",
- "dataTableLabelSystemVersion": "Version Sistemi Operativ",
- "dataTableLabelTypes": "Lloj",
- "ClientType": "Lloj klienti",
- "ClientTypes": "Lloje klientësh",
"Device": "Pajisje",
"DeviceBrand": "Markë pajisjeje",
+ "DeviceBrandReportDocumentation": "Ky raport shfaq markat / prodhuesit e pajisjeve që përdornin vizitorët tuaj. Në shumicën e rasteve ky informacion është i passhëm vetëm për pajisje jo desktop.",
"DeviceBrands": "Marka pajisjesh",
- "DeviceBrandReportDocumentation": "Ky raport shfaq markat \/ prodhuesit e pajisjeve që përdornin vizitorët tuaj. Në shumicën e rasteve ky informacion është i passhëm vetëm për pajisje jo desktop.",
"DeviceDetection": "Zbulim pajisjeje",
"DeviceModel": "Model pajisjeje",
- "DeviceModels": "Modele pajisjesh",
"DeviceModelReportDocumentation": "Ky raport shfaq pajisjet që përdorin vizitorët tuaj. Secili model shfaqet me markën e pajisjes, ngaqë disa emra modelesh përdoren nga shumë marka.",
- "DevicesDetection": "Pajisje Vizitorësh",
+ "DeviceModels": "Modele pajisjesh",
"DeviceType": "Lloj pajisjeje",
- "DeviceTypes": "Lloje pajisjesh",
"DeviceTypeReportDocumentation": "Ky raport shfaq llojet e pajisjeve që përdornin vizitorët tuaj. Ky raport do të shfaqë përherë krejt llojet e pajisjeve që është në gjendje të pikasë Matomo-ja, edhe pse s’pati vizita me një lloj të caktuar.",
+ "DeviceTypes": "Lloje pajisjesh",
+ "Devices": "Pajisje",
+ "DevicesDetection": "Pajisje Vizitorësh",
"FeaturePhone": "Telefon",
+ "FeedReader": "Lexues Prurjesh",
+ "GenericDevice": "%s elementare",
+ "Library": "Bibliotekë",
+ "MediaPlayer": "Lojtës Mediash",
+ "MobileApp": "Aplikacion Celulari",
+ "MobileDevice": "Pajisje celulare",
+ "OperatingSystemCode": "Kod sistemi operativ",
"OperatingSystemFamilies": "Familje Sistemesh Operativë",
+ "OperatingSystemFamiliesReportDocumentation": "Ky raport shfaq sistemet operative që përdorin vizitorët tuaj, grupuar sipas familjeve të sistemit. Një familje sistemi operativ përbëhet nga versione ose shpërndarje të ndryshme.",
"OperatingSystemFamily": "Familje Sistemi Operativ",
- "OperatingSystemFamiliesReportDocumentation": "Ky raport shfaq sistemet operative që përdorin vizitorët tuaj, grupuar sipas familjeve të sistemit. Një familje sistemi operativ përbëhet nga versioni ose shpërndarje të ndryshme.",
- "OperatingSystemCode": "Kod sistemi operativ",
- "OperatingSystems": "Sisteme operativë",
"OperatingSystemVersions": "Versione Sistemesh Operativë",
"OperatingSystemVersionsReportDocumentation": "Ky raport ju shfaq sistemet operative që po përdorin vizitorët tuaj. Çdo version dhe shpërndarje shfaqet më vete.",
- "PluginDescription": "Furnizon të dhëna të zgjeruara rreth pajisje përdoruesish, të tilla si Marka (prodhuesi), Modeli (version pajisjeje), lloj pajisjeje (tv, konsola, telefon të mençur, desktop, etj) dhe të tjera.",
+ "OperatingSystems": "Sisteme operativë",
+ "Peripheral": "Periferike",
+ "Phablet": "Fablet",
+ "Pim": "PIM",
+ "PluginDescription": "Furnizon të dhëna të zgjeruara rreth pajisjesh përdoruesish, të tilla si Marka (prodhuesi), Modeli (version pajisjeje), lloj pajisjeje (tv, konsola, telefon të mençur, desktop, etj) dhe të tjera.",
+ "PortableMediaPlayer": "Lojtës mediash portativ",
"SmartDisplay": "Ekran i mençur",
- "Smartphone": "Telefon i mençur",
"SmartSpeaker": "Altoparlant i mençur",
- "PortableMediaPlayer": "Lojtës media portativ",
- "Devices": "Pajisje",
- "GenericDevice": "%s e rëndomtë",
- "MobileDevice": "Pajisje celulare",
- "Tablet": "Tablet",
- "Phablet": "Fablet",
+ "Smartphone": "Telefon i mençur",
+ "Software": "Software",
"TV": "Tv",
- "UserAgent": "Agjent përdoruesi",
- "Library": "Bibliotekë",
- "FeedReader": "Lexues Prurjesh",
- "MobileApp": "Aplikacion Celulari",
- "Pim": "PIM",
- "MediaPlayer": "Lojtës Mediash",
- "XVisitsFromDevices": "%1$s vizita nga %2$s pajisje",
+ "Tablet": "Tablet",
+ "UserAgent": "Agjent Përdoruesi",
+ "WidgetBrowserVersionsDocumentation": "Ky raport përmban të dhëna rreth llojeve të shfletuesit që përdornin vizitorët tuaj. Secili version i një shfletuesi tregohet veçmas.",
"WidgetBrowsers": "Shfletues Vizitori",
"WidgetBrowsersDocumentation": "Ky raport përmban të dhëna rreth ç’lloje shfletuesish përdornin vizitorët tuaj.",
- "WidgetBrowserVersionsDocumentation": "Ky raport përmban të dhëna rreth llojeve të shfletuesit që përdornin vizitorët tuaj. Secili version i një shfletuesi tregohet veçmas."
+ "XVisitsFromDevices": "%1$s vizita nga %2$s pajisje",
+ "dataTableLabelBrands": "Markë",
+ "dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Version Sistemi Operativ",
+ "dataTableLabelTypes": "Lloj"
}
-} \ No newline at end of file
+}
diff --git a/plugins/DevicesDetection/lang/tl.json b/plugins/DevicesDetection/lang/tl.json
index 756708b6b8..1936b0210e 100644
--- a/plugins/DevicesDetection/lang/tl.json
+++ b/plugins/DevicesDetection/lang/tl.json
@@ -1,37 +1,38 @@
{
"DevicesDetection": {
+ "BotDetected": "Ang User-Agent na ito ay nakita bilang %1$s. Ang mga pagbisita sa user agent na ito ay hindi masusubaybayan sa Matomo bilang default.",
"BrowserEngine": "Browser",
"BrowserEngineDocumentation": "Ipinapakita ng chart na ito ang magkaka hiwa-hiwalay na pamilya ng browser na gamit ng iyong bisita. %s Ang pinakamahalagang impormasyon na kinakailangan ng web developers ay kung anong klaseng rendering engine ang ginagamit ng bisita. Ang mga label ay naglalaman ng mga pangalan ng mga engines na sinusundan ng mga pang-karaniwang browser na gumagamit ng parehas na engine alinsunod sa mga sumusunod na nasa brackets.",
"BrowserFamily": "Pamilya ng browser",
- "Browsers": "Mga Browser",
"BrowserVersion": "bersyon ng browser",
"BrowserVersions": "mga bersyon ng browser",
+ "Browsers": "Mga Browser",
"Camera": "Camera",
"CarBrowser": "Car browser",
"ColumnBrowser": "Browser",
"Console": "Console",
- "dataTableLabelBrands": "Tatak",
- "dataTableLabelModels": "Modelo",
- "dataTableLabelSystemVersion": "Bersyon ng Operating System",
- "dataTableLabelTypes": "Uri",
"Device": "Aparato",
"DeviceBrand": "Brand ng device",
"DeviceDetection": "Pag detect ng device",
"DeviceModel": "Modelo ng device",
- "DevicesDetection": "Device ng Bisita",
"DeviceType": "Uri ng device",
+ "Devices": "Mga Device",
+ "DevicesDetection": "Device ng Bisita",
"FeaturePhone": "Feature phone",
"OperatingSystemFamilies": "Mga pamilya ng Operating System",
"OperatingSystemFamily": "Pamilya ng Operating system",
- "OperatingSystems": "Operating systems",
"OperatingSystemVersions": "Mga bersyon ng Operating System",
+ "OperatingSystems": "Operating systems",
"SmartDisplay": "Smart display",
"Smartphone": "Smartphone",
- "Devices": "Mga Device",
- "Tablet": "Tableta",
"TV": "Tv",
+ "Tablet": "Tableta",
"UserAgent": "User-Agent",
+ "WidgetBrowserVersionsDocumentation": "Ang ulat na ito ay naglalaman ng mga impormasyon tungkol sa kung anong browser ang gamit ng iyong bisita. Bawat browser bersyon ay magkakahiwalay na naka-lista.",
"WidgetBrowsers": "Browser ng Bisita",
- "WidgetBrowserVersionsDocumentation": "Ang ulat na ito ay naglalaman ng mga impormasyon tungkol sa kung anong browser ang gamit ng iyong bisita. Bawat browser bersyon ay magkakahiwalay na naka-lista."
+ "dataTableLabelBrands": "Tatak",
+ "dataTableLabelModels": "Modelo",
+ "dataTableLabelSystemVersion": "Bersyon ng Operating System",
+ "dataTableLabelTypes": "Uri"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Diagnostics/ConfigReader.php b/plugins/Diagnostics/ConfigReader.php
index db2b715278..a4383efc47 100644
--- a/plugins/Diagnostics/ConfigReader.php
+++ b/plugins/Diagnostics/ConfigReader.php
@@ -11,7 +11,6 @@ use Piwik\Development;
use Matomo\Ini\IniReader;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Settings as PiwikSettings;
-use Piwik\Plugin\Settings as PluginSettings;
/**
* A diagnostic report contains all the results of all the diagnostics.
diff --git a/plugins/Diagnostics/Controller.php b/plugins/Diagnostics/Controller.php
index 72b20ca39d..3cf9c6fe73 100644
--- a/plugins/Diagnostics/Controller.php
+++ b/plugins/Diagnostics/Controller.php
@@ -8,11 +8,8 @@
namespace Piwik\Plugins\Diagnostics;
-use Piwik\Config;
use Piwik\Piwik;
use Piwik\Plugin\SettingsProvider;
-use Piwik\View;
-use Piwik\Settings;
class Controller extends \Piwik\Plugin\ControllerAdmin
{
diff --git a/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php b/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
index 19f76d093d..869fed4ccb 100644
--- a/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
+++ b/plugins/Diagnostics/Diagnostic/AbstractPrivateDirectories.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\Common;
use Piwik\Config;
-use Piwik\Filesystem;
use Piwik\Http;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php b/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
index ad2520377c..6fd98d89b9 100644
--- a/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
+++ b/plugins/Diagnostics/Diagnostic/CronArchivingCheck.php
@@ -10,15 +10,11 @@ namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\ArchiveProcessor\Rules;
use Piwik\CliMulti;
-use Piwik\Config;
use Piwik\CronArchive;
-use Piwik\Date;
-use Piwik\Http;
use Piwik\Metrics\Formatter;
use Piwik\Option;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\Url;
/**
* Check if cron archiving can run through CLI.
diff --git a/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php b/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
index 2a63437d76..98576e6810 100644
--- a/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
+++ b/plugins/Diagnostics/Diagnostic/DbOverSSLCheck.php
@@ -2,7 +2,6 @@
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/DbReaderCheck.php b/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
index faffb662ba..bd08ba3f2f 100644
--- a/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
+++ b/plugins/Diagnostics/Diagnostic/DbReaderCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Db;
use Piwik\Piwik;
diff --git a/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php b/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
index eb0bd50c92..564af1fd03 100644
--- a/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
+++ b/plugins/Diagnostics/Diagnostic/GdExtensionCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/HttpClientCheck.php b/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
index 2c662b8e1b..1809712a88 100644
--- a/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
+++ b/plugins/Diagnostics/Diagnostic/HttpClientCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\Filechecks;
use Piwik\Http;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php b/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
index a77d34a4e2..00c7fad618 100644
--- a/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
+++ b/plugins/Diagnostics/Diagnostic/MemoryLimitCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php b/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
index a10541c723..1c84a9c7f4 100644
--- a/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
+++ b/plugins/Diagnostics/Diagnostic/PageSpeedCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\Http;
use Piwik\Translation\Translator;
use Piwik\Url;
diff --git a/plugins/Diagnostics/Diagnostic/ReportInformational.php b/plugins/Diagnostics/Diagnostic/ReportInformational.php
index e49d51c4aa..d9623f5f14 100644
--- a/plugins/Diagnostics/Diagnostic/ReportInformational.php
+++ b/plugins/Diagnostics/Diagnostic/ReportInformational.php
@@ -8,15 +8,11 @@
namespace Piwik\Plugins\Diagnostics\Diagnostic;
use Piwik\Access;
-use Piwik\Archive\ArchiveInvalidator;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\CronArchive;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Development;
use Piwik\Option;
-use Piwik\Plugin\Manager;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/Diagnostic/TimezoneCheck.php b/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
index f82cc28559..82fe656a20 100644
--- a/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
+++ b/plugins/Diagnostics/Diagnostic/TimezoneCheck.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\Diagnostics\Diagnostic;
-use Piwik\Config;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
diff --git a/plugins/Diagnostics/lang/ca.json b/plugins/Diagnostics/lang/ca.json
index 0967ef424b..bc284cf699 100644
--- a/plugins/Diagnostics/lang/ca.json
+++ b/plugins/Diagnostics/lang/ca.json
@@ -1 +1,38 @@
-{}
+{
+ "Diagnostics": {
+ "AllPrivateDirectoriesAreInaccessible": "Tots els directoris privats són inaccessibles des d'Internet.",
+ "BrowserAndAutoArchivingEnabledComment": "Sembla que tant el navegador com l'arxivat automàtic estan habilitats. L'arxivat automàtic es va iniciar per última vegada fa %3$s. Si %1$sauto arxivat%2$s està habilitat, hauríeu de desactivar l'arxivat del navegador a \"Configuració general\".",
+ "BrowserAndAutoArchivingEnabledLabel": "Navegador i arxivat automàtic activats",
+ "BrowserTriggeredArchivingEnabled": "Per obtenir un rendiment òptim i un Matomo ràpid, és molt recomanable configurar un crontab per arxivar automàticament els vostres informes i desactivar l'activació del navegador a la configuració de Matomo. %1$sMés informació.%2$s",
+ "ConfigFileIntroduction": "Aquí podeu veure la configuració de Matomo. Si esteu executant Matomo en un entorn de càrrega equilibrada, la pàgina pot ser diferent segons el servidor des del qual es carregui aquesta pàgina. Les files amb un color de fons diferent són valors de configuració canviats que s'especifiquen, per exemple, al fitxer %1$s.",
+ "ConfigFileTitle": "Arxiu de configuració",
+ "ConfigIniAccessible": "També hem trobat que el directori de configuració de Matomo és accessible públicament. Tot i que els atacants no poden llegir la configuració ara, si el vostre servidor web deixa d'executar fitxers PHP per algun motiu, les vostres credencials de MySQL i altra informació estaran disponibles per a qualsevol. Comproveu la configuració del vostre servidor web i denegueu l'accés a aquest directori.",
+ "CronArchivingHasNotRun": "L'arxivat encara no s'ha executat amb èxit.",
+ "CronArchivingHasNotRunInAWhile": "La darrera vegada que es va arxivar amb èxit fou el %1$s, fa %2$s.",
+ "CronArchivingLastRunCheck": "Darrer arxivat completat amb èxit",
+ "CronArchivingRanSuccessfullyXAgo": "El procés d'arxivat es va completar amb èxit fa %1$s.",
+ "CronArchivingRunDetails": "Si us plau comproveu que heu configurat un crontab que crida l'ordre de la consola %1$s i que heu configurat un %2$s per rebre errors per correu electrònic si falla l'arxivat. També podeu provar d'executar l'ordre de la consola per arxivar els vostres informes manualment: %3$s. %4$sMés informació.%5$s",
+ "DatabaseReaderConnection": "Connexió del lector de bases de dades",
+ "DatabaseUtf8Requirement": "Això és necessari per poder emmagatzemar caràcters UTF8 de 4 bytes. A menys que utf8mb4 estigui disponible els caràcters especials, com ara emojis, caràcters menys comuns d'idiomes asiàtics, diversos scripts històrics o símbols matemàtics es substituiran per %1$s. Podeu llegir més detalls sobre aquest tema a %2$saquest FAQ%3$s.",
+ "DatabaseUtf8mb4CharsetAvailableButNotUsed": "La vostra base de dades admet el conjunt de caràcters utf8mb4, però les taules de la vostra base de dades encara no s'han convertit. Podeu fer-ho executant l'ordre %1$s o activant la conversió automàtica a la configuració general.",
+ "DatabaseUtf8mb4CharsetRecommended": "La vostra base de dades encara no és compatible amb el conjunt de caràcters utf8mb4.",
+ "EnableRequiredDirectoriesDiagnostic": "Aquesta comprovació s'ha omès perquè aquesta comprovació està desactivada a la configuració. Per habilitar aquesta comprovació, establiu [General] enable_required_directories_diagnostic = 1 al fitxer \"config/config.ini.php\".",
+ "HideUnchanged": "Si voleu veure només els valors canviats, podeu %1$samagar tots els valors sense canvis%2$s.",
+ "HtaccessWarningNginx": "Per garantir que no es pot accedir directament als fitxers sensibles, es recomana configurar el servidor web per restringir l'accés a determinats directoris. Per obtenir més informació, consulteu %1$sla configuració oficial del servidor nginx%2$s",
+ "MysqlMaxPacketSize": "Mida màxima del paquet",
+ "MysqlMaxPacketSizeWarning": "Es recomana configurar una mida 'max_allowed_packet' a la vostra base de dades MySQL d'almenys %1$s. La configuració actualment és %2$s.",
+ "MysqlTemporaryTablesWarning": "És necessari el permís de MySQL CREATE TEMPORARY TABLES perquè el Matomo funcioni correctament.",
+ "MysqlTransactionLevel": "No s'admet el canvi del nivell d'aïllament de la transacció. L'arxivat seguirà funcionant, però pot ser més lent i es recomana canviar, per exemple, el `binlog_format` a `row` si és possible.",
+ "NoDataForReportArchivingNotRun": "L'arxivat dels vostres informes no s'ha executat recentment, %1$sobteniu més informació sobre com generar els vostres informes.%2$s",
+ "PHPFPMWarningApache": "PHP FPM ignorarà les regles .htaccess per als fitxers .php. Per assegurar que no es pot accedir directament als fitxers sensibles, es recomana excloure determinats directoris de ser gestionats per PHP FPM afegint la línia %1$s a la secció %2$s a la configuració d'hoste virtual d'Apache just a sobre de la línia %3$s.",
+ "PHPFPMWarningGeneric": "PHP FPM pot ignorar les regles .htaccess per als fitxers .php. Per assegurar que no es pot accedir directament als fitxers sensibles, es recomana configurar el servidor web per excloure el directori /config de ser gestionat per PHP FPM.",
+ "PHPFPMWarningNginx": "PHP FPM ignorarà les regles .htaccess per als fitxers .php. Per assegurar que no es pot accedir directament als fitxers sensibles, es recomana excloure determinats directoris de ser gestionats per PHP FPM. Per obtenir més informació, consulteu %1$sla configuració oficial del servidor nginx%2$s",
+ "PrivateDirectoryInternetDisabled": "No hem pogut comprovar si les URL següents són accessibles perquè les funcions d'Internet estan desactivades en aquest Matomo.",
+ "PrivateDirectoryIsAccessible": "Hem trobat que les URL anteriors són accessibles mitjançant el navegador i NO haurien de ser-ho. Permetre l'accés pot suposar un risc potencial de seguretat, ja que els continguts poden proporcionar informació sobre el vostre servidor i potencialment els vostres usuaris. Si us plau, restringeix-hi l'accés.",
+ "PrivateDirectoryManualCheck": "Si us plau obriu les URL manualment en un navegador per veure si hi podeu accedir. Si podeu, és possible que hàgiu de modificar la configuració del vostre servidor, ja que aquests fitxers/directoris no haurien de ser accessibles mitjançant un navegador des d'Internet o la intranet.",
+ "RecommendedPrivateDirectories": "Directoris privats recomanats",
+ "RequiredPrivateDirectories": "Directoris privats obligatoris",
+ "Sections": "Seccions",
+ "UrlsAccessibleViaBrowser": "Hem trobat que les URL anteriors són accessibles mitjançant el navegador, però recomanem que no ho siguin. Si és possible, restringeix-hi l'accés."
+ }
+}
diff --git a/plugins/Diagnostics/lang/it.json b/plugins/Diagnostics/lang/it.json
index 7b804a76ab..903df36586 100644
--- a/plugins/Diagnostics/lang/it.json
+++ b/plugins/Diagnostics/lang/it.json
@@ -9,7 +9,7 @@
"ConfigIniAccessible": "Abbiamo anche riscontrato che la directory di configurazione di Matomo è accessibile pubblicamente. Sebbene gli aggressori non possano leggere la configurazione ora, se il tuo server web interrompe l'esecuzione dei file PHP per qualche motivo, le tue credenziali MySQL e altre informazioni saranno disponibili a chiunque. Controlla la configurazione del tuo server web e nega l'accesso a questa directory.",
"CronArchivingHasNotRun": "L'archiviazione non è ancora stata eseguita con successo.",
"CronArchivingHasNotRunInAWhile": "L'ultima archiviazione è stata eseguita con successo il %1$s, cioè %2$s fa.",
- "CronArchivingLastRunCheck": "Ultima Archiviazione Completata con Successo",
+ "CronArchivingLastRunCheck": "Ultima archiviazione completata con successo",
"CronArchivingRanSuccessfullyXAgo": "Il processo di archiviazione è stato completato con successo %1$s fa.",
"CronArchivingRunDetails": "Verifica di aver configurato un crontab per chiamare il comando di console %1$s, e di aver configurato un %2$s per ricevere gli errori via email se l'archiviazione fallisce. Puoi anche provare a eseguire il comando di console per archiviare manualmente i tuoi report: %3$s. %4$sPer saperne di più.%5$s",
"DatabaseReaderConnection": "Connessione al Lettore del Database",
diff --git a/plugins/Diagnostics/lang/pt-br.json b/plugins/Diagnostics/lang/pt-br.json
index c7d9c7d083..8b3f73b1de 100644
--- a/plugins/Diagnostics/lang/pt-br.json
+++ b/plugins/Diagnostics/lang/pt-br.json
@@ -1,20 +1,38 @@
{
"Diagnostics": {
- "ConfigFileTitle": "Arquivo de configuração",
- "MysqlTemporaryTablesWarning": "A permissão CREATE TEMPORARY TABLES do MySQL é requerida para que o Matomo funcione corretamente.",
- "MysqlTransactionLevel": "A alteração do nível de isolamento de transação não é suportada. O arquivamento ainda funcionará mas ele pode ser mais lento e ele é recomendado para alterar, por exemplo, o `binlog_format` para `row` se possível.",
- "MysqlMaxPacketSize": "Tamanho máximo de pacote",
- "MysqlMaxPacketSizeWarning": "É recomendado configurar um tamanho máximo de pacote (max_allowed_packet) no seu banco de dados MySQL de pelo menos %1$s. Atualmente está configurado %2$s.",
+ "AllPrivateDirectoriesAreInaccessible": "Todos os diretórios privados são inacessíveis a partir da Internet.",
+ "BrowserAndAutoArchivingEnabledComment": "Parece que o navegador e o arquivamento automático estão ativados. O arquivamento automático começou pela última vez há %3$s. Se o %1$sauto arquivamento%2$s estiver habilitado, você deve desabilitar o arquivamento do navegador em 'Configurações gerais'.",
+ "BrowserAndAutoArchivingEnabledLabel": "Navegador e arquivamento automático ativados",
+ "BrowserTriggeredArchivingEnabled": "Para uma performance ótima e um Matomo veloz, é altamente recomendável definir um crontab para automaticamente arquivar seus relatórios, e desabilitar o acionamento de navegador nas configurações do Matomo. %1$sSaiba mais.%2$s",
"ConfigFileIntroduction": "Aqui você pode ver a configuração do Matomo. Se você estiver rodando o Matomo em um ambiente com balanceamento de carga, a página pode estar diferente dependendo de qual servidor esta página é carregada. Linhas com diferentes cores de fundo são valores de configuração alterados que estão especificados por exemplo no arquivo %1$s.",
- "HideUnchanged": "Se você quiser ver apenas valores alterados você pode %1$socultar todos os valores inalterados%2$s.",
- "Sections": "Seções",
- "DatabaseReaderConnection": "Conexão do leitor de banco de dados",
- "CronArchivingLastRunCheck": "Última conclusão de arquivamento com sucesso",
+ "ConfigFileTitle": "Arquivo de configuração",
+ "ConfigIniAccessible": "Também descobrimos que o diretório de configuração do Matomo é acessível publicamente. Embora os invasores não possam ler a configuração agora, se seu servidor da Web parar de executar arquivos PHP por algum motivo, suas credenciais do MySQL e outras informações estarão disponíveis para qualquer pessoa. Verifique a configuração do seu servidor web e negue o acesso a este diretório.",
"CronArchivingHasNotRun": "O arquivamento ainda não foi realizado com sucesso.",
"CronArchivingHasNotRunInAWhile": "O último arquivamento realizado com sucesso foi em %1$s que é %2$s atrás.",
- "CronArchivingRunDetails": "Favor checar que há um agendamento crontab chamando o %1$sconsole de comandos, e que há um %2$s configurado para receber erros por email se o arquivamento falhar. Você também pode tentar rodar o console de comandos para arquivar seus relatórios manualmente: %3$s. %4$sSaiba mais.%5$s",
+ "CronArchivingLastRunCheck": "Última conclusão de arquivamento com sucesso",
"CronArchivingRanSuccessfullyXAgo": "O processo de arquivamento foi completado com sucesso %1$s atrás.",
- "BrowserTriggeredArchivingEnabled": "Para uma performance ótima e um Matomo veloz, é altamente recomendável definir um crontab para automaticamente arquivar seus relatórios, e desabilitar o acionamento de navegador nas configurações do Matomo. %1$sSaiba mais.%2$s",
- "NoDataForReportArchivingNotRun": "O arquivamento de seus relatórios não foi executado recentemente. %1$sSaiba mais sobre como gerar seus relatórios.%2$s"
+ "CronArchivingRunDetails": "Favor checar que há um agendamento crontab chamando o %1$sconsole de comandos, e que há um %2$s configurado para receber erros por email se o arquivamento falhar. Você também pode tentar rodar o console de comandos para arquivar seus relatórios manualmente: %3$s. %4$sSaiba mais.%5$s",
+ "DatabaseReaderConnection": "Conexão do leitor de banco de dados",
+ "DatabaseUtf8Requirement": "Isso é necessário para poder armazenar caracteres UTF8 de 4 bytes. A menos que utf8mb4 esteja disponível, caracteres especiais, como emojis, caracteres menos comuns de idiomas asiáticos, vários scripts históricos ou símbolos matemáticos serão substituídos por %1$s. Você pode ler mais detalhes sobre este tópico em %2$sneste FAQ%3$s.",
+ "DatabaseUtf8mb4CharsetAvailableButNotUsed": "Seu banco de dados suporta o conjunto de caracteres utf8mb4, mas suas tabelas de banco de dados ainda não foram convertidas. Você pode fazer isso executando o comando %1$s ou ativando a conversão automática em Configurações Gerais.",
+ "DatabaseUtf8mb4CharsetRecommended": "Seu banco de dados ainda não suporta o conjunto de caracteres utf8mb4.",
+ "EnableRequiredDirectoriesDiagnostic": "Esta verificação foi ignorada porque esta verificação está desabilitada no arquivo config. Para habilitar esta verificação, configure [General] enable_required_directories_diagnostic = 1 no arquivo 'config/config.ini.php'.",
+ "HideUnchanged": "Se você quiser ver apenas valores alterados você pode %1$socultar todos os valores inalterados%2$s.",
+ "HtaccessWarningNginx": "Para garantir que os arquivos confidenciais não possam ser acessados diretamente, é recomendável configurar seu servidor web para restringir o acesso a determinados diretórios. Para obter mais informações, consulte a %1$sconfiguração oficial do servidor nginx %2$s",
+ "MysqlMaxPacketSize": "Tamanho máximo de pacote",
+ "MysqlMaxPacketSizeWarning": "É recomendado configurar um tamanho máximo de pacote (max_allowed_packet) no seu banco de dados MySQL de pelo menos %1$s. Atualmente está configurado %2$s.",
+ "MysqlTemporaryTablesWarning": "A permissão CREATE TEMPORARY TABLES do MySQL é requerida para que o Matomo funcione corretamente.",
+ "MysqlTransactionLevel": "A alteração do nível de isolamento de transação não é suportada. O arquivamento ainda funcionará mas ele pode ser mais lento e ele é recomendado para alterar, por exemplo, o `binlog_format` para `row` se possível.",
+ "NoDataForReportArchivingNotRun": "O arquivamento de seus relatórios não foi executado recentemente. %1$sSaiba mais sobre como gerar seus relatórios.%2$s",
+ "PHPFPMWarningApache": "O PHP FPM irá ignorar as regras .htaccess para arquivos .php. Para garantir que os arquivos confidenciais não possam ser acessados diretamente, é recomendável excluir certos diretórios de serem manipulados pelo PHP FPM adicionando a linha %1$s à seção %2$s na configuração do host virtual do apache logo acima da linha %3$s.",
+ "PHPFPMWarningGeneric": "O PHP FPM pode ignorar as regras .htaccess para arquivos .php. Para garantir que os arquivos confidenciais não possam ser acessados diretamente, é recomendável configurar seu servidor web para excluir o diretório /config de ser manipulado pelo PHP FPM.",
+ "PHPFPMWarningNginx": "O PHP FPM irá ignorar as regras .htaccess para arquivos .php. Para garantir que os arquivos confidenciais não possam ser acessados diretamente, é recomendado excluir certos diretórios de serem manipulados pelo PHP FPM. Para obter mais informações, consulte a %1$s configuração oficial do servidor nginx%2$s",
+ "PrivateDirectoryInternetDisabled": "Não foi possível verificar se as seguintes URLs estão acessíveis porque os recursos da Internet estão desabilitados neste Matomo.",
+ "PrivateDirectoryIsAccessible": "Descobrimos que as URLs acima são acessíveis pelo navegador, mas NÃO deveriam ser. Permitir que elas sejam acessadas pode representar um risco potencial de segurança, pois o conteúdo pode fornecer informações sobre seu servidor e, potencialmente, seus usuários. Por favor, restrinja o acesso a elas.",
+ "PrivateDirectoryManualCheck": "Abra os URLs manualmente em um navegador para ver se você pode acessá-los. Se puder, talvez seja necessário modificar a configuração do servidor, pois esses arquivos/diretórios não devem ser acessíveis por meio de um navegador da Internet ou Intranet.",
+ "RecommendedPrivateDirectories": "Diretórios Privados Recomendados",
+ "RequiredPrivateDirectories": "Diretórios Privados Necessários",
+ "Sections": "Seções",
+ "UrlsAccessibleViaBrowser": "Descobrimos que as URLs acima podem ser acessadas pelo navegador, mas recomendamos que não sejam. Se possível, restrinja o acesso a elas."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Diagnostics/lang/sq.json b/plugins/Diagnostics/lang/sq.json
index 89d0315f2b..35abf87ddb 100644
--- a/plugins/Diagnostics/lang/sq.json
+++ b/plugins/Diagnostics/lang/sq.json
@@ -1,31 +1,38 @@
{
"Diagnostics": {
- "ConfigFileTitle": "Kartelë formësimesh",
- "MysqlTemporaryTablesWarning": "Leja MySQL CREATE TEMPORARY TABLES është e domosdoshme që Matomo të funksionojë si duhet.",
- "MysqlTransactionLevel": "Nuk mbulohet ndryshimi i shkallës së izolimit. Arkivimi do të funksionojë, por mund të jetë më i ngadaltë dhe rekomandohet të ndryshohet, për shembull `binlog_format` në `row`, në qoftë e mundur.",
- "MysqlMaxPacketSize": "Maksimum Madhësie Paketi",
- "MysqlMaxPacketSizeWarning": "Këshillohet të formësoni te baza juaj e të dhënave MySQL një madhësi 'max_allowed_packet' të paktën %1$s. Formësimi i tanishëm për të është %2$s.",
- "ConfigFileIntroduction": "Këtu mund të shihni formësimin e Matomo-s. Nëse Matomo-n e xhironi në një mjedis me ngarkesë të balancuar, faqja mund të jetë ndryshe, varet se nga cili shërbyes ngarkohet faqja. Rreshtat me një ngjyrë tjetër për sfondin përfaqësojnë vlera formësimi që janë dhënë si shembull te kartela %1$s.",
- "HideUnchanged": "Nëse dëshironi të shihni vetëm vlerat e ndryshuara, mund të %1$sfshihni krejt vlerat e pandryshuara%2$s.",
- "Sections": "Ndarje",
+ "AllPrivateDirectoriesAreInaccessible": "Krejt drejtoritë private s’mund të hapen që nga interneti.",
+ "BrowserAndAutoArchivingEnabledComment": "Duket se shfletuesi dhe vetëarkivimi janë aktivizuar. Vetëarkivimi së fundi filloi %3$s më parë. Nëse %1$svetëarkivimi%2$s është i aktivizuar, duhet të çaktivizoni arkivimin nga shfletuesi, te “Rregullime të Përgjithshme”.",
"BrowserAndAutoArchivingEnabledLabel": "Shfletim dhe Vetëarkivim të aktivizuar",
- "BrowserAndAutoArchivingEnabledComment": "Duket se shfletuesi dhe vetëarkivimi janë aktivizuar. Vetëarkivimi së fundi filloi %3$s më parë. Nëse %1$svetëarkivimi%2$s është i aktivizuar, duhe të çaktivizoni arkivimin nga shfletuesi, te “Rregullime të Përgjithshme”.",
- "DatabaseReaderConnection": "Lidhje Leximi Baze të Dhënash",
- "DatabaseUtf8Requirement": "Kjo është e domosdoshme për të qenë në gjendje të depozitohen shenja UTF8 4-bajtshe. Po qe se utf8mb4 s’është e përdorshme, shenja speciale, bie fjala, emotikone, shenja më pak të rëndomta gjuhësh aziatike, skripte të ndryshëm historikë apo simbole matematike do të zëvendësohen me %1$s. Te %2$skëto PBR%3$s mund të lexoni më tepër hollësi rreth këtij subjekti.",
- "DatabaseUtf8mb4CharsetRecommended": "Baza juaj e të dhënave s’e mbulon ende kodimin utf8mb4",
- "DatabaseUtf8mb4CharsetAvailableButNotUsed": "Baza juaj e të dhënave e mbulon kodimin utf8mb4, por tabelat e bazës tuaj të të dhënave ende s’janë shndërruar. Këtë mund ta bëni duke ekzekutuar urdhrin %1$s ose aktivizuar shndërrimin e automatizuar që nga Rregullimet e Përgjithshme.",
- "CronArchivingLastRunCheck": "Plotësimi i Fundit i Suksesshëm i Arkivimit",
+ "BrowserTriggeredArchivingEnabled": "Për funksionimin më të mirë dhe një Matomo të shpejtë, këshillohet me forcë të ujdisni një akt crontab për arkivim automatik të raporteve tuaja dhe të çaktivizoni që nga rregullimet e Matomo-s ngacmimin e shfletuesit. %1$sMësoni më tepër.%2$s",
+ "ConfigFileIntroduction": "Këtu mund të shihni formësimin e Matomo-s. Nëse Matomo-n e xhironi në një mjedis me ngarkesë të balancuar, faqja mund të jetë ndryshe, varet se nga cili shërbyes ngarkohet faqja. Rreshtat me një ngjyrë tjetër për sfondin përfaqësojnë vlera formësimi që janë dhënë si shembull te kartela %1$s.",
+ "ConfigFileTitle": "Kartelë formësimesh",
+ "ConfigIniAccessible": "Pamë gjithashtu se drejtoria e formësimeve të Matomo-s është e përdorshme publikisht. Teksa agresorë s’mund të lexojnë formësimin tani, nëse shërbyesi juaj resht të ekzekutuara kartela PHP për ndonjë arsye, kredencialet tuaja MySQL dhe informacion tjetër do të jetë i passhëm për këdo. Ju lutemi, kontrolloni formësimin e shërbyesit tuaj dhe mos lejoni hyrje në këtë drejtori.",
"CronArchivingHasNotRun": "Arkivimi ende s’është xhiruar me sukses.",
"CronArchivingHasNotRunInAWhile": "Hera e fundit që arkivimi u bë me sukses qe më %1$s, që do të thotë %2$s më parë.",
- "CronArchivingRunDetails": "Ju lutemi, shihni të keni ujdisur një akt crontab për vënie në punë të urdhrit %1$s të konsolës, dhe se keni formësuar një %2$s për të marrë me email njoftime gabimesh, nëse arkivimi dështon. Mund të provoni edhe të xhironi urdhër konsole për arkivim dorazi të raporteve tuaja: %3$s. %4$sMësoni më tepër.%5$s",
+ "CronArchivingLastRunCheck": "Plotësimi i Fundit i Suksesshëm i Arkivimit",
"CronArchivingRanSuccessfullyXAgo": "Procesi i arkivimit u plotësua me sukses %1$s më parë.",
- "BrowserTriggeredArchivingEnabled": "Për funksionimin më të mirë dhe një Matomo të shpejtë, këshillohet me forcë të ujdisni një akt crontab për arkivim automatik të raporteve tuaja, dhe të çaktivizoni që nga rregullimet e Matomo-s ngacmimin e shfletuesit. %1$sMësoni më tepër.%2$s",
+ "CronArchivingRunDetails": "Ju lutemi, shihni të keni ujdisur një akt crontab për vënie në punë të urdhrit %1$s të konsolës, dhe se keni formësuar një %2$s për të marrë me email njoftime gabimesh, nëse arkivimi dështon. Mund të provoni edhe të xhironi urdhër konsole për arkivim dorazi të raporteve tuaja: %3$s. %4$sMësoni më tepër.%5$s",
+ "DatabaseReaderConnection": "Lidhje Leximi Baze të Dhënash",
+ "DatabaseUtf8Requirement": "Kjo është e domosdoshme për të qenë në gjendje të depozitohen shenja UTF8 4-bajtshe. Po qe se utf8mb4 s’është e përdorshme, shenja speciale, bie fjala, emotikone, shenja më pak të rëndomta gjuhësh aziatike, skripte të ndryshëm historikë apo simbole matematike do të zëvendësohen me %1$s. Te %2$skëto PBR%3$s mund të lexoni më tepër hollësi rreth këtij subjekti.",
+ "DatabaseUtf8mb4CharsetAvailableButNotUsed": "Baza juaj e të dhënave e mbulon kodimin utf8mb4, por tabelat e bazës tuaj të të dhënave ende s’janë shndërruar. Këtë mund ta bëni duke ekzekutuar urdhrin %1$s, ose aktivizuar shndërrimin e automatizuar që nga Rregullimet e Përgjithshme.",
+ "DatabaseUtf8mb4CharsetRecommended": "Baza juaj e të dhënave s’e mbulon ende kodimin utf8mb4.",
+ "EnableRequiredDirectoriesDiagnostic": "Ky kontroll u anashkalua, ngaqë ky kontroll është çaktivizuar te formësimi. Që ta aktivizoni këtë kontroll, vini [General] enable_required_directories_diagnostic = 1 te kartela “config/config.ini.php”.",
+ "HideUnchanged": "Nëse dëshironi të shihni vetëm vlerat e ndryshuara, mund të %1$sfshihni krejt vlerat e pandryshuara%2$s.",
+ "HtaccessWarningNginx": "Që të garantohet se kartela rezervat s’mund të përdoren drejtpërsëdrejti, rekomandohet ta formësoni shërbyesin tuaj të kufizojë hyrjen në disa drejtori. Për më tepër hollësi, ju lutemi, shihni %1$s formësimin zyrtar të shërbyesit nginx %2$s",
+ "MysqlMaxPacketSize": "Maksimum Madhësie Paketi",
+ "MysqlMaxPacketSizeWarning": "Këshillohet të formësoni te baza juaj e të dhënave MySQL një madhësi 'max_allowed_packet' të paktën %1$s. Formësimi i tanishëm për të është %2$s.",
+ "MysqlTemporaryTablesWarning": "Leja MySQL CREATE TEMPORARY TABLES është e domosdoshme që Matomo të funksionojë si duhet.",
+ "MysqlTransactionLevel": "Nuk mbulohet ndryshimi i shkallës së izolimit. Arkivimi do të funksionojë, por mund të jetë më i ngadaltë dhe rekomandohet të ndryshohet, për shembull `binlog_format` në `row`, në qoftë e mundur.",
"NoDataForReportArchivingNotRun": "Arkivimi i raporteve tuaja nuk ka ngjarë tani së fundi, %1$smësoni më tepër se si të prodhoni raportet tuaja.%2$s",
- "RequiredPrivateDirectories": "Drejtori Private të Domosdoshme",
- "PrivateDirectoryManualCheck": "Ju lutemi, hapini URL-të dorazi në një shfletues, që të shihni nëse mund t’i përdorni. Nëse mundeni, mund të duhet të ndryshoni formësimin e e shërbyesit tuaj, ngaqë këto kartela\/drejtori s’duhet të jenë të përdorshme që prej një shfletuesi nga Interneti ose Intraneti.",
+ "PHPFPMWarningApache": "PHP FPM do të shpërfillë rregulla .htaccess për kartela .php. Që të garantohet se kartela rezervat s’mund të përdoren drejtpërsëdrejti, rekomandohet të përjashtoni disa drejtori nga të qenit të trajtueshme nga PHP FPM, duke shtuar rreshtin %1$s te ndarja %2$s në formësimin e strehës suaj virtuale Apache, mu sipër rreshtit %3$s.",
+ "PHPFPMWarningGeneric": "PHP FPM mund të shpërfillë rregulla .htaccess për kartela .php. Që të garantohet se kartela rezervat s’mund të përdoren drejtpërsëdrejti, rekomandohet ta formësoni shërbyesin tuaj të përjashtojë drejtorinë /config nga të qenët e trajtueshme prej PHP FPM.",
+ "PHPFPMWarningNginx": "PHP FPM mund të shpërfillë rregulla .htaccess për kartela .php. Që të garantohet se kartela rezervat s’mund të përdoren drejtpërsëdrejti, rekomandohet të përjashtohen disa drejtori nga të qenët e trajtueshme prej PHP FPM. Për më tepër hollësi, ju lutemi, shihni %1$s formësimin zyrtar të shërbyesit nginx %2$s",
"PrivateDirectoryInternetDisabled": "S’kontrolluam dot nëse URL-të vijuese janë të përdorshme, ngaqë veçoritë internet janë të çaktivizuara në këtë instancë Matomo.",
- "PrivateDirectoryIsAccessible": "Na doli se URL-të më sipër janë të përdorshme që nga shfletuesi, por NUK ’duhet të jenë. Lënia e tyre të përdorshme mund të përbëjë një rrezik potencial sigurie, ngaqë lënda mund të furnizojë informacion mbi shërbyesin tuaj dhe, potencialisht, përdoruesit tuaj. Ju lutemi, kufizojeni hyrjen në to.",
- "ConfigIniAccessible": "Pamë gjithashtu se drejtoria e formësimeve të Matomo-s është e përdorshme publikisht. Teksa agresorë s’mund të lexojnë formësimin tani, nëse shërbyesi juaj resht të ekzekutuara kartela PHP për ndonjë arsye, kredencialet tuaja MySQL dhe informacion tjetër do të jetë i passhëm për këdo. Ju lutemi, kontrolloni formësimin e shërbyesit tuaj dhe mos lejoni hyrje në këtë drejtori.",
- "AllPrivateDirectoriesAreInaccessible": "Krejt drejtoritë private s’mund të hapen që nga interneti."
+ "PrivateDirectoryIsAccessible": "Na doli se URL-të më sipër janë të përdorshme që nga shfletuesi, por NUK duhet të jenë. Lënia e tyre të përdorshme mund të përbëjë një rrezik potencial sigurie, ngaqë lënda mund të furnizojë informacion mbi shërbyesin tuaj dhe, potencialisht, përdoruesit tuaj. Ju lutemi, kufizojeni hyrjen në to.",
+ "PrivateDirectoryManualCheck": "Ju lutemi, hapini URL-të dorazi në një shfletues, që të shihni nëse mund t’i përdorni. Nëse mundeni, mund të duhet të ndryshoni formësimin e e shërbyesit tuaj, ngaqë këto kartela/drejtori s’duhet të jenë të përdorshme që prej një shfletuesi nga Interneti ose Intraneti.",
+ "RecommendedPrivateDirectories": "Drejtori Private të Rekomanduara",
+ "RequiredPrivateDirectories": "Drejtori Private të Domosdoshme",
+ "Sections": "Ndarje",
+ "UrlsAccessibleViaBrowser": "Gjetëm se URL-të më sipër janë të përdorshme që nga shfletuesi, por rekomandojmë të mos jenë. Nëse mundet, ju lutemi, kufizoni hyrjen në to."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php b/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
index f6c29930ab..d0703dd079 100644
--- a/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
+++ b/plugins/Diagnostics/tests/Integration/ConfigReaderTest.php
@@ -13,7 +13,6 @@ use Matomo\Ini\IniReader;
use Piwik\Plugins\Diagnostics\ConfigReader;
use Piwik\Plugins\ExampleSettingsPlugin\SystemSettings;
use Piwik\Settings\FieldConfig;
-use Piwik\Tests\Fixtures\OneVisitorTwoVisits;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/Ecommerce/Columns/ProductCategory.php b/plugins/Ecommerce/Columns/ProductCategory.php
index 847993e5f5..7657690551 100644
--- a/plugins/Ecommerce/Columns/ProductCategory.php
+++ b/plugins/Ecommerce/Columns/ProductCategory.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Ecommerce\Columns;
use Piwik\Columns\Dimension;
use Piwik\Columns\DimensionSegmentFactory;
-use Piwik\Piwik;
use Piwik\Plugin\Segment;
use Piwik\Segment\SegmentsList;
diff --git a/plugins/Ecommerce/Columns/ProductViewCategory.php b/plugins/Ecommerce/Columns/ProductViewCategory.php
index e7b773e828..52459dfd05 100644
--- a/plugins/Ecommerce/Columns/ProductViewCategory.php
+++ b/plugins/Ecommerce/Columns/ProductViewCategory.php
@@ -12,8 +12,6 @@ use Piwik\Columns\DimensionSegmentFactory;
use Piwik\Columns\Discriminator;
use Piwik\Columns\Join\ActionNameJoin;
use Piwik\Common;
-use Piwik\Db;
-use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Plugin\Manager;
@@ -22,7 +20,6 @@ use Piwik\Plugins\CustomVariables\Tracker\CustomVariablesRequestProcessor;
use Piwik\Segment\SegmentsList;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
-use Piwik\Tracker\Visitor;
class ProductViewCategory extends ActionDimension
{
diff --git a/plugins/Ecommerce/Controller.php b/plugins/Ecommerce/Controller.php
index 4f63309e79..739e051f70 100644
--- a/plugins/Ecommerce/Controller.php
+++ b/plugins/Ecommerce/Controller.php
@@ -14,7 +14,6 @@ use Piwik\FrontController;
use Piwik\Http;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\Goals\API as GoalsApi;
use Piwik\Plugins\Live\Live;
use Piwik\Translation\Translator;
use Piwik\View;
diff --git a/plugins/Ecommerce/Reports/BaseItem.php b/plugins/Ecommerce/Reports/BaseItem.php
index f4d4d37057..407ac4e1a1 100644
--- a/plugins/Ecommerce/Reports/BaseItem.php
+++ b/plugins/Ecommerce/Reports/BaseItem.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Ecommerce\Reports;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
@@ -18,7 +17,6 @@ use Piwik\Plugins\Goals\Columns\Metrics\AveragePrice;
use Piwik\Plugins\Goals\Columns\Metrics\AverageQuantity;
use Piwik\Plugins\Goals\Columns\Metrics\ProductConversionRate;
use Piwik\Plugins\Goals\Conversions;
-use Piwik\Plugins\Goals\Model;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
diff --git a/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php b/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
index 19c9b79395..5b5466f422 100644
--- a/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
+++ b/plugins/Ecommerce/Reports/GetDaysToConversionAbandonedCart.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\DaysToConversion;
diff --git a/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php b/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
index c3bbedce43..f37a49f0ca 100644
--- a/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
+++ b/plugins/Ecommerce/Reports/GetDaysToConversionEcommerceOrder.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\DaysToConversion;
diff --git a/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php b/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
index 19598de421..cc5cdb7be8 100644
--- a/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
+++ b/plugins/Ecommerce/Reports/GetVisitsUntilConversionAbandonedCart.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\VisitsUntilConversion;
diff --git a/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php b/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
index d838f2ea0d..8ee7f42e55 100644
--- a/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
+++ b/plugins/Ecommerce/Reports/GetVisitsUntilConversionEcommerceOrder.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Ecommerce\Reports;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\Plugins\Goals\Columns\VisitsUntilConversion;
diff --git a/plugins/Ecommerce/VisitorDetails.php b/plugins/Ecommerce/VisitorDetails.php
index a5f98c9ced..b9ba8369f0 100644
--- a/plugins/Ecommerce/VisitorDetails.php
+++ b/plugins/Ecommerce/VisitorDetails.php
@@ -9,18 +9,12 @@
namespace Piwik\Plugins\Ecommerce;
use Piwik\Common;
-use Piwik\Config;
use Piwik\DataAccess\LogAggregator;
-use Piwik\Date;
-use Piwik\Db;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
use Piwik\Plugins\Ecommerce\Columns\ProductCategory;
use Piwik\Plugins\Live\VisitorDetailsAbstract;
use Piwik\Site;
-use Piwik\Tracker\Action;
use Piwik\Tracker\GoalManager;
-use Piwik\Tracker\PageUrl;
use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
diff --git a/plugins/Ecommerce/Widgets/GetEcommerceLog.php b/plugins/Ecommerce/Widgets/GetEcommerceLog.php
index a480e7aa14..16a4d20357 100644
--- a/plugins/Ecommerce/Widgets/GetEcommerceLog.php
+++ b/plugins/Ecommerce/Widgets/GetEcommerceLog.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Ecommerce\Widgets;
use Piwik\Common;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Live\Live;
-use Piwik\Plugins\Live\MeasurableSettings;
use Piwik\Widget\WidgetConfig;
use Piwik\Site;
diff --git a/plugins/Ecommerce/lang/ca.json b/plugins/Ecommerce/lang/ca.json
index 0967ef424b..acdb72affa 100644
--- a/plugins/Ecommerce/lang/ca.json
+++ b/plugins/Ecommerce/lang/ca.json
@@ -1 +1,29 @@
-{}
+{
+ "Ecommerce": {
+ "EcommerceLogSubcategoryHelp1": "El registre de comerç electrònic proporciona dades granulars a nivell de sessió perquè pugueu veure la sessió completa de cada usuari que ha fet una compra o ha abandonat el carretó. Això us pot ajudar a entendre què fan els usuaris abans i després de comprar per revelar oportunitats de millora.",
+ "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.",
+ "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",
+ "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.",
+ "Sales": "Vendes",
+ "SalesAdjective": "Vendes %s",
+ "SalesBy": "Vendes per %s",
+ "SalesSubcategoryHelp1": "Aquesta secció conté una àmplia col·lecció d'informes que us ajudaran a analitzar les diferents condicions que solen induïr vendes, com ara el trànsit i les fonts de la campanya, el temps i la ubicació dels usuaris i els dispositius utilitzats per accedir-hi.",
+ "SalesSubcategoryHelp2": "També podeu conèixer exactament com s'associen els ingressos amb cada dimensió, com ara tipus de trànsit concrets o campanyes de seguiment.",
+ "ViewedProductCategory": "Categoria de producte vista",
+ "ViewedProductName": "Nom de producte vist",
+ "ViewedProductPrice": "Preu de producte vist",
+ "ViewedProductSKU": "SKU de producte vist",
+ "VisitorProfileAbandonedCartSummary": "%1$s carretons abandonats que inclouen %2$s articles amb un valor total de %3$s.",
+ "VisitorProfileItemsAndOrders": "%1$s articles adquirits en %2$s comandes de comerç electrònic.",
+ "VisitorProfileLTV": "S'han generat uns ingressos de per vida de %1$s."
+ }
+}
diff --git a/plugins/Ecommerce/lang/nb.json b/plugins/Ecommerce/lang/nb.json
index 2942811ca8..d54bafb03a 100644
--- a/plugins/Ecommerce/lang/nb.json
+++ b/plugins/Ecommerce/lang/nb.json
@@ -1,6 +1,10 @@
{
"Ecommerce": {
+ "EcommerceLogSubcategoryHelp1": "E-handelsloggen gir finmasket øktnivådata, slik at du kan sjekke hele økten for hver bruker som enten kjøpte noe eller forlot handlekurven sin. Dette kan hjelpe deg å forstå hva brukere gjorde før og etter kjøp for å finne optimaliseringsmuligheter.",
+ "EcommerceLogSubcategoryHelp2": "Data på denne siden oppdateres i sanntid.",
"EcommerceOverviewSubcategoryHelp1": "Netthandelsoversiktensdelen er den beste plassen å få et overblikk over ytelsen til nettbutikken din. Du kan se hvor mange salg du har, hvor mye omsetning du generer, og konverteringsraten for nettsiden din.",
+ "EcommerceOverviewSubcategoryHelp2": "Klikk på en individuell måling i sparkline-diagrammet for å fokusere på den i det fulle utviklingsdiagrammet.",
+ "LifeTimeValue": "Livstidsverdi for e-handel",
"LifeTimeValueDescription": "Total netthandelsomsetning tilknyttet denne kunden for alle besøk: Summen av omsetning for alle netthandelsbestillinger for besøks-ID %s.",
"NumberOfItems": "Antall artikler i handlekurv",
"Order": "Bestilling",
@@ -8,13 +12,17 @@
"OrderValue": "Bestillingsverdi",
"Orders": "Bestillinger",
"PluginDescription": "Med netthandel kan du spore når brukere legger til produkter i handlekurver, og når de konverterer til en netthandel. Spor også visninger av produkter og produktkategorier og forlatte handlekurver.",
+ "ProductSubcategoryHelp": "Produktvisningen hjelper deg å finne ut hvilke produkter og kategorier som over- eller underpresterer for å avsløre trender og muligheter relatert til ditt produktvalg og butikksider.",
"Sales": "Salg",
"SalesAdjective": "Salg %s",
"SalesBy": "Salg etter %s",
+ "SalesSubcategoryHelp1": "Denne delen inneholder en omfattende samling av rapporter som hjelper deg å analysere forskjellige betingelser som oftest leder til salg, som f.eks. trafikk og kampanjekilder, brukertid og posisjon, samt enheten brukt til å finne dem.",
"SalesSubcategoryHelp2": "Du kan også lære akkurat hvordan omsetning er tilknyttet alle dimensjoner, som spesifikke trafikktyper eller sporede kampanjer.",
"ViewedProductCategory": "Vist produktkategori",
"ViewedProductName": "Besøkt produktnavn",
"ViewedProductPrice": "Vist produktpris",
+ "ViewedProductSKU": "Vist produkt-SKU",
+ "VisitorProfileAbandonedCartSummary": "Forlot %1$s handlevogner med %2$s artikler verdt totalt %3$s.",
"VisitorProfileItemsAndOrders": "Kjøpte %1$s artikler i totalt %2$s netthandler.",
"VisitorProfileLTV": "Genererte livstidsomsetning for %1$s."
}
diff --git a/plugins/Ecommerce/lang/sq.json b/plugins/Ecommerce/lang/sq.json
index b3b0d49461..f297a0d376 100644
--- a/plugins/Ecommerce/lang/sq.json
+++ b/plugins/Ecommerce/lang/sq.json
@@ -1,29 +1,29 @@
{
"Ecommerce": {
- "PluginDescription": "E-tregtia ju lejon të ndiqni se kur përdoruesit shtojnë produkte në shporta, dhe kur ato shndërrohen në shitje e-tregtie. Ajo ndjek gjithashtu parje produktesh dhe kategorish produktesh apo shporta të braktisura.",
- "Sales": "Shitje",
+ "EcommerceLogSubcategoryHelp1": "Regjistri Etregti furnizon të dhëna kapilare në shkallë niveli, që kështu të mund të shihni te sesioni i plotë për çdo përdorues që ose bëri një blerje, ose braktisi shportën e vet. Kjo mund t’ju ndihmojë të kuptoni se ç’bëjnë përdoruesit para dhe pasi blejnë, për të zbuluar mundësi optimizimi.",
+ "EcommerceLogSubcategoryHelp2": "Të dhënat në këtë faqe përditësohen aty për aty.",
+ "EcommerceOverviewSubcategoryHelp1": "Ndarja Përmbledhje Etregtie është vendi më i mirë për të pasur një pamje të thelluar të funksionimit të shitores tuaj internetore. Me një vështrim, mund të shihni se sa shitje po bëni, sa të ardhura po prodhoni dhe nivel shndërrimesh për sajtin tuaj.",
+ "EcommerceOverviewSubcategoryHelp2": "Klikoni mbi një vlerë individuale brenda grafikut që fokusi të kalojë mbi të, brenda grafikut në madhësi të plotë të evolucionit.",
+ "LifeTimeValue": "Vlerë E-tregti Gjatë Ekzistencës",
+ "LifeTimeValueDescription": "Të ardhura e-tregtie gjithsej atribuar këtij përdoruesi përmes krejt vizitave: shuma e të ardhurave për krejt porositë E-tregti për ID Vizitori %s.",
+ "NumberOfItems": "Numër Artikujsh në Shportë",
"Order": "Porosi",
"OrderId": "ID Porosie",
+ "OrderValue": "Vlerë porosie",
"Orders": "Porosi",
+ "PluginDescription": "E-tregtia ju lejon të ndiqni se kur përdoruesit shtojnë produkte në shporta, dhe kur ato shndërrohen në shitje e-tregtie. Ajo ndjek gjithashtu parje produktesh dhe kategorish produktesh apo shporta të braktisura.",
+ "ProductSubcategoryHelp": "Pamja Produkte mund t’ju ndihmojë të identifikoni produkte dhe kategori që po ecin shumë mirë ose shumë keq, për të zbuluar prirje dhe mundësi lidhur me përzgjedhjen tuaj të produkteve dhe faqet e shitores.",
+ "Sales": "Shitje",
+ "SalesAdjective": "Shitje %s",
+ "SalesBy": "Shitje nga %s",
+ "SalesSubcategoryHelp1": "Kjo ndarje përmban një koleksion të zgjeruar raportesh për t’ju ndihmuar të analizoni kushte të ndryshme që në shumicën e rasteve shpien në shitje, të tilla si trafiku dhe burime fushatash, kohë dhe vendndodhje përdoruesi dhe pajisje të përdorura për të hyrë në to.",
+ "SalesSubcategoryHelp2": "Mund të njihni saktësisht edhe se si lidhen të ardhurat me çdo përmasë, bie fjala, lloje specifike trafiku, ose fushata të ndjekura.",
"ViewedProductCategory": "Kategori Produkti të Parë",
"ViewedProductName": "Emër Produkti të Parë",
"ViewedProductPrice": "Çmim Produkti të Parë",
"ViewedProductSKU": "SKU Produkti të Parë",
- "SalesBy": "Shitje nga %s",
- "SalesAdjective": "Shitje %s",
- "NumberOfItems": "Numër Artikujsh në Shportë",
- "OrderValue": "Vlerë porosie",
- "LifeTimeValue": "Vlerë E-tregti Gjatë Ekzistencës",
- "LifeTimeValueDescription": "Të ardhura e-tregtie gjithsej atribuar këtij përdoruesi përmes krejt vizitave: shuma e të ardhurave për krejt porositë E-tregti për ID Vizitori %s.",
- "VisitorProfileLTV": "Prodhoi Të ardhura Gjatë Ekzistencës sa %1$s.",
- "VisitorProfileItemsAndOrders": "Bleu %1$s artikuj në %2$s porosi e-tregtie.",
"VisitorProfileAbandonedCartSummary": "Braktisi %1$s shporta, përfshi %2$s artikuj me vlerë %3$s gjithsej.",
- "EcommerceOverviewSubcategoryHelp1": "Ndarja Përmbledhje Etregtie është vendi më i mirë për të pasur një pamje të thelluar të funksionimit të shitores tuaj internetore. Me një vështrim, mund të shihni se sa shitje po bëni, sa të ardhura po prodhoni, dhe nivel shndërrimesh për sajtin tuaj.",
- "EcommerceOverviewSubcategoryHelp2": "Klikoni mbi një vlerë individuale brenda grafikut që fokusi të kalojë mbi të, brenda grafikut në madhësi të plotë të evolucionit.",
- "SalesSubcategoryHelp1": "Kjo ndarje përmban një koleksion të zgjeruar raportesh për t’ju ndihmuar të analizoni kushte të ndryshme që në shumicën e rasteve shpien në shitje, të tilla si trafiku dhe burime fushatash, kohë dhe vendndodhje përdoruesi dhe pajisje të përdorura për të hyrë në to.",
- "SalesSubcategoryHelp2": "Mund të njihni saktësisht edhe se si lidhen të ardhurat me çdo përmasë, bie fjala, lloje specifike trafiku, ose fushata të ndjekura.",
- "EcommerceLogSubcategoryHelp1": "Regjistri Etregti furnizon të dhëna kapilare në shkallë niveli, që kështu të mund të shihni te sesioni i plotë për çdo përdorues që ose bëri një blerje, ose braktisi shportën e vet. Kjo mund t’ju ndihmojë të kuptoni se ç’bëjnë përdoruesit para dhe pasi blejnë, për të zbuluar mundësi optimizimi.",
- "EcommerceLogSubcategoryHelp2": "Të dhënat në këtë faqe përditësohen aty për aty.",
- "ProductSubcategoryHelp": "Pamja Produkte mund t’ju ndihmojë të identifikoni produkte dhe kategori që po ecin shumë mirë ose shumë keq, për të zbuluar prirje dhe mundësi lidhur me përzgjedhjen tuaj të produkteve dhe faqet e shitores."
+ "VisitorProfileItemsAndOrders": "Bleu %1$s artikuj në %2$s porosi e-tregtie.",
+ "VisitorProfileLTV": "Prodhoi Gjatë Ekzistencës Të ardhura sa %1$s."
}
-} \ 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 46f52e65e6..607a1a85cc 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
@@ -636,7 +636,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGxElEQVR4nO3dv4scZQDH4TnZNMFKsEmKFINYWMZWRUGwMZAi+AcI1iJoYZUmgggGa7GzskhjaWFhYeNiJ4hOY7iNIMFgocIJa7E4TuZuZ793t7ezM/M81c2PvX0DezufzDuze7BcLgsAgE2e6HsAAMAwiAYAICIaAICIaAAAIqIBAIiIBgAgMvVoKMty3coTN3U8CgDGberR0KGqqo2b1AMA0zH1aKiqqnXgL8uyIxcAYLJmfQ9gFz747LvWmvfffH7jo+p6aFZFvaaujXprqz+UBwAjM4lo+On+H0dHR/XipUuXDg8Pr169mjy2deKhubiqhOZUxbo9AWAEpjI98WdDURSLxaLe1DxDsPFIn3eAYgBgZKYSDWe2Sorkgsd8TwAYoklMT5xT88qG5DxEsicADM5UouHy5csdW+sZio23WSZXKuR7AsCATCIabr5SLg4Pz/bY/NivEgAYt0lEw40XrxXFtbM9tvtGyuZWt1wCMG4Hy+Wy7zEAAAPg7gkAICIaAICIaAAAIqIBAIgM/u4JNyzAnvNHCgPS/fEBw44G3xEFe84fKQzIxm9CMD0BXCCJAEORNL1oAICpC88CigZgR8xNwH7K/zaHfU0DMAi++hX2XPNqho6GEA3AxXKCAfZcfrWy6QngAikGGJNhn2nwxZKw/1o3cfk7heHyLZcAQMT0BAAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZCTRMJ/P+x4C0GWxWCwWi75HAXTZeDAdSTQAABdNNAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAARGZ9D2Br5j/82vcQgLUePvy9KIoHj/xHBfbXz4d/Xb/etcN4ouHOp9/2PQQAGLY3bnRtVf0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAkbNEQ1mWZ36+8zwWAOjRrP6pdTivqmrngwEA9khZls0emDW3NTe09gMAJuX45MDsxP3WPaaVEfWm1fpVZ7RWnvisAMA+ax3TVzZEQ+t8Q2uxmQXNbmg9X+s3nO9fAQBcrHWzDVu+e8KMBgAMWsf1CbPWfvXPyeF/i6cNqqdfONX+5W/fbOupAYCm5vG92RBrL4RMfqOrFgBgZDouS9jphztpCwAYrg0XQraunGxdBZlEQOt+Ct0AAAN1sFwu+x5DUZz7mob5fH7n81+2OiIAmJx7d292bPXdEwBAZPOHO+2GuyEAYM850wAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQmfU9gK25d/dm30MA1losFkVRXLlype+BAGvN5/PuHZxpAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAyKzvAWzNux9/3fcQ2KaP3nm57yEA8JjxREN1/1HfQwCAMTM9AQBERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABCZ1T+VZdncUFXVLsdx8Ozt5uIXn9y69dpz9eI/X37191vvNXd48sH3uxkY/Vq9LHf8agTgRLPmgrdm9kpZllVVtXIWgL7MOrbVb9mrmKjfu+vF5ht6HRzNt/jWAwtdwml4tQDsla5oKP4rg9XPzSxodkNzZXPN8d9wfBEAGIrHouH4KYHuA7zDPwBMxymuaTjz1LI5aQAYgQ3TE7XWTMSpnsMJCQAYgV1/ToOzDgAwUOmZhvDOt9ZuVVUdX3PaITJZ9SvHpzUA7IP/o+H4O3JrTbi48fdAyCsHYK/4GGkAICIaAIBIek3DRVv+eLtj6+z1V33ZBAD0y5kGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgMis7wFszYdvv9T3EABgzMYTDc9ce6rvIQDAmJmeAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAIHKwXC77HgMAMADONAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBA5F/BNO3dtqRi2AAAAABJRU5ErkJggg=="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGxElEQVR4nO3dv4scZQDH4TnZNOki2CRFikGsJTYWKlqliqQI1uIfoARs7COIYLAWOyuFgJ2dhYWN2wpBB8RwqyAxwUKLFGuxOE7mbme/d7e3szPzPNXNj719A3s7n8w7s3uwXC4LAIBNnul7AADAMIgGACAiGgCAiGgAACKiAQCIiAYAIDL1aCjLct3KYzd1PAoAxm3q0dChqqqNm9QDANMx9Wioqqp14C/LsiMXAGCyZn0PYBc+/PyH1poP3nlp46PqemhWRb2mro16a6s/lAcAIzOJaPjpwV9PnjypFy9cuHB4eHjlypXksa0TD83FVSU0pyrW7QkAIzCV6Ym/G4qiWCwW9abmGYKNR/q8AxQDACMzlWg4tVVSJBc85nsCwBBNYnrijJpXNiTnIZI9AWBwphINFy9e7Nhaz1BsvM0yuVIh3xMABmQS0XDzjXJxeHi6x+bHfpUAwLhNIhpuvHq1KK6e7rHdN1I2t7rlEoBxO1gul32PAQAYAHdPAAAR0QAAREQDABARDQBAZPB3T7hhAfacP1IYkO6PDxh2NPiOKNhz/khhQDZ+E4LpCeAcSQQYiqTpRQMATF14FlA0ADtibgL2U/63OexrGoBB8NWvsOeaVzN0NIRoAM6XEwyw5/KrlU1PAOdIMcCYDPtMgy+WhP3XuonL3ykMl2+5BAAipicAgIhoAAAiogEAiIgGACAiGgCAiGgAACIjiYb5fN73EIAui8VisVj0PQqgy8aD6UiiAQA4b6IBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAy63sAWzP/8fe+hwCs9fDho6IofnvsPyqwv34+/Ofata4dxhMNdz77vu8hAMCwvXWja6vqBwAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIicJhrKsjz1853lsQBAj2b1T63DeVVVOx8MALBHyrJs9sCsua25obUfADApRycHZsfut+4xrYyoN63WrzqjtfLYZwUA9lnrmL6yIRpa5xtai80saHZD6/lav+Fs/woA4Hytm23Y8t0TZjQAYNA6rk+Ytfarf04O/1s8bVA998qJ9i//+G5bTw0ANDWP782GWHshZPIbXbUAACPTcVnCTj/cSVsAwHBtuBCydeVk6yrIJAJa91PoBgAYqIPlctn3GIrizNc0zOfzO1/8utURAcDk3Lt7s2Or754AACKbP9xpN9wNAQB7zpkGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgMis7wFszb27N/seArDWYrEoiuLy5ct9DwRYaz6fd+/gTAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAERmfQ9ga97/5Nu+h8A2fXz79b6HAMBTxhMN1YPHfQ8BAMbM9AQAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZFb/VJZlc0NVVbscx8ELt5qLX356+9b1l+vFR19/88vb7zZ3ePHP+zsaGb1avSx3/GoE4Fiz5oK3ZvZKWZZVVbVyFoC+zDq21W/Zq5io37vrxeYbeh0czbf41gMLXcJJeLUA7JWuaCj+K4PVz80saHZDc2VzzdHfcHQRABiKp6Lh6CmB7gO8wz8ATMcJrmk49dSyOWkAGIEN0xO11kzEiZ7DCQkAGIFdf06Dsw4AMFDpmYbwzrfWblVVHV1z0iEyWfUrx6c1AOyD/6Ph6Dtya024uPH3QMgrB2Cv+BhpACAiGgCASHpNw3lb3v+qY+ulN69f8mUTANArZxoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIrO+B7A1H733Wt9DAIAxG080PH/12b6HAABjZnoCAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAyMFyuex7DADAADjTAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AACRfwGojO4wK11yewAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
@@ -1397,7 +1397,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHY0lEQVR4nO3dTW9jVwHH4XOdODOT6QtQRGlGqFReUCRARUJix9uGDUKqhMQHQGLNErFjA+zYdYGExLqqEEu+ABILRqrEoqPQlKpDrL4k7dCSmUkywSwieS52HP/HcXKc8fMsotj32nMmI8/9+Zx742YwGBQAgGk6tQcAAFwOogEAiIgGACAiGgCAiGgAACKiAQCIiIbz1ev1Jt154qZTHgUAdYmGara2tqZuUg8ALA7RcL62trZGDvy9Xu+UXACAhbVaewCPg1/9/m8j9/ziJ9+Y+qhhPbSrYnjPsDaGW0f6Q3kAcMFEwxz84/bHh4eHw5vdbnd7e/vGjRvJY0cmHto3jyuhvVQxaU8AuACWJ+bjbksppd/vDze1ZwimHunzDlAMAFww0VDZcVIkJzzmewLAebA8UV/7zIZkHiLZEwDmTjTMx/r6+ilbhysUUy+zTM5UyPcEgDkSDXPw8vd6/e3t2R6bH/tVAgB1iYY5+OG3ni/l+dkee/qFlO2tLrkEoK5mMBjUHgMAcAm4egIAiIgGACAiGgCAiGgAACKunpjCBQtwwbzooIr2xXqT9hENp/EZUXDBvOigivC1ZnkCWCASAS5eXudmGgBg2YXLgqIBWDjJ2iowR+GyoGgAFs7wPyznNMBCcU4DABARDcACaS+sAovGB1ZN4ZJxuGBedHDxwtedaAAAIpYnAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAioiFy8+bN2kOA5dLv9/v9fu1RwHKZerATDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEFmtPYBL43evvV57CLBE9vb2SinXr79feyA8Jn76o5dqD+FxIBpSf/7LP2sPAYAZiYa5sDwBAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAERWaw+gsqPBYOde886dw83dB2/t3L/13t1bHxxs7ux/8ssXaw8NABbLEkXD4dFgZ7/513Ef7O5/7dnVv97e/8PNOzt7Rw+OjmqPDgAW3XlFQ6/X29raOqcnn8HXX+n379z78O7DPvj5t595c/fg3Y8P6g4MAC6Lh9Ewcpg/8WbdFJg0pPY+k4b3+u1/n+/gAFhsI8eLMvmQwSSPNtNQ9+fbrpZ2QJzSOgAw5ABxRg+vnmi/ax95E98+VLe/Hhs+Q6/llDtHto5/P/4kAEB1M57T0H5Df+LKxTAsHnUa4PR9himjFgF4VO23o44jM5gxGs7ysx4WxvjXmZ9zqh986Ym1lWZ1pZRS/jsopZSvfP7KZ6+vdJpydbVztduUUkpn5fwGAEBdI0cZy9kzOCEahj/HKmc+zjCXkJTj+lpz/E2nadbXmrWVZr3b+dTVlY2nuqWU1U4pTdO5cr3jl10BwAT/Fw3jFyOUGi02fqrj+GAmnQg5yat//2Tkns9cW7n1/v6f3vhP677d4Xe//s6XZxg5ADzGTnhn3T4Gz5YLU89hbM9hVLySs9M0F/+HAlCF8+vPbm6/3Kk9S9FeYnjUs07aTzK+qT27cPbUsBgBsDxmOCQxYjQaxn+I4xMPI/ucuEwwde1g0nzG6ZdOjN/0rw5AyCHjjJblvfaLzz7x1LXu8vx9AWDuluUDq9742RfuPRi8u1fe/uhgc/forZ17L22sHQw6n3tyv/2BFADAJMsSDaWUa6vNC0+XF56+8t0vllLWSyk//uqTv/n+Mzv3m3c+Otz88MHbO/dvvXd384P9N3cP6w4VABbQEkXDibqd5rn18tx695s3uqVcK+XTtUcEAAvKGj8AEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEFmtPYBL44+/fbn2EGCJ9Pv9UsrGxkbtgQAPmWkAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIs1gMKg9BgDgEjDTAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AACR/wF/GFm/WjtFbQAAAABJRU5ErkJggg=="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHYElEQVR4nO3dzY8bZwHH8Wfs9S7ZDa0oIqKJRKksAe2hohISN94uXBBSJS6ckbhzQ9y4ADdOXJAqca4q1CP/ABdEpEocSJe4VCVrlWSz6QubbvYFc4jkHez1+hevd8cbfz6HlT0zdp44cubreWbW1WAwKAAA07SaHgAAcDmIBgAgIhoAgIhoAAAiogEAiIgGACAiGs5Xt9udtPDEVac8CgCaJRoa0+v1pq5SDwAsDtFwvnq93siOv9vtnpILALCwVpoewNPgV6//dWTJL37yjamPGtZDvSqGS4a1MVw70h/KA4ALJhrm4B//+vjg4GB4t9PpbG1t3bhxI3nsyIGH+t3HlVCfqpi0JQBcANMT8/GwppTS7/eHq+pHCKbu6fMOUAwAXDDR0LDHSZGc8JhvCQDnwfRE8+pnNiTHIZItAWDuRMN8rK+vn7J2OEMx9TLL5EyFfEsAmCPRMAevfa/b39qa7bH5vl8lANAs0TAHP/zWC6W8MNtjT7+Qsr7WJZcANKsaDAZNjwEAuARcPQEAREQDABARDQBARDQAABFXT0zhggW4YN500Ij6xXqTthENp/EdUXDBvOmgEeF7zfQEsEAkAly8vM4daQCAZRdOC4oGYOEkc6vAHIXTgqIBWDjD/7Cc0wALxTkNAEBENAALpD6xCiwaX1g1hUvG4YJ508HFC993ogEAiJieAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiIbIzZs3mx4CLJd+v9/v95seBSyXqTs70QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAAJGVpgdwafz+zbebHgIskd3d3VLKxsbdpgfCU+KnP/p600N4GoiG1J/+/M+mhwDAjETDXJieAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiK00PoGFHg8HOXvX+hwebO4e37+7d+vfDzXv7t7YfffLLrzU9NABYLEsUDQf/HWzvVXc+PNjcOXzv/v7LX2j/5c7+H24+2N49Ojw6anp0ALDozisaut1ur9c7pyefwau/6/c/+nTn4XEf/Pzbn799f/+Dj/ebHRgAXBbH0TCymz/xbrMpMGlI9W0mDe/tOx+d7+AAWGwj+4syeZfBJE92pKHZ17deLfWAOKV1AGDIDuKMjq+eqH9qH/kQX99V138+NnyGbs0pC0fWjt8efxIAoHEzntNQ/0B/4szFMCye9DDA6dsMU0YtAvCk6h9H7UdmMGM0nOW1HhbG+M+Zn3OqH3z16mq7WmkfL3n52tq1q+1WVdZXW6vtqpRSWu1JDwfgshvZy5jOnsEJ0TB8HRs583GGYwlJOa6vVo9vtKpqtV19plNdXWvtH7WvP9MppbSq0mpVrbWNll92BQAT/F80jF+MUJposfFTHccHM+lEyEne+NsnI0ueu9K+dffRW3//T23Z/eGtX3/npRlGDgBPsRM+Wdf3wbPlwtRzGOvHMBq8krNVVRf/hwLQCOfXn93cfrlT/ShFfYrhSc86qT/J+Kr60YWzp4bJCIDlMcMuiRGj0TD+Io4feBjZ5sRpgqlzB5OOZ5x+6cT4Xf/qAITsMs5oWT5rf+XaxjNXOsvz9wWAuVuWL6x652df+vRw8MFuee/B/u2do3e391754tr+oH3ts4/qX0gBAEyyLNFQSrmyUr34bHnx2bXvfrmUsl5K+fErG7/5/nPbe9X7Dw42dw7fvbe3effh5r1Ht+/7FisAGLVE0XCiTqt6fr08v9755o1OKVdK+VzTIwKABWWOHwCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIrDQ9gEvjj799rekhwBLp9/ullOvXrzc9EOCYIw0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBApBoMBk2PAQC4BBxpAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAIDI/wC8mVmj9E7CYgAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
@@ -1467,7 +1467,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAI90lEQVR4nO3db4jkdR3A8e9vZnb2n3t7eWceamlNUUcJmiaIpF49EYVI6OhBEEkYCT6RsgdR0pMERZB6mBhEEhjWkwgiTEPUfODWSViWTOldO53n7eleu3ezM7Pz68HZOq7e7Od29m52Zl6vB8fOzG92P7sw93vv7/v77WR5nicAgI0U+j0AADAYRAMAECIaAIAQ0QAAhIgGACBENAAAIaMeDZVK5XR3vudDXZ4FAMNt1KOhi2q1uuFD6gGA0THq0VCtVtft+CuVSpdcAICRVer3AOfCvQ8/v+6e73zt6g2ftVYPnVWxds9abaw9uq4/lAcAQ2YkouHlQ8ebzebazbGxsfn5+Ysvvjjy3HUHHjpvnqqEzqWK020JAENgVJYnTnRIKdVqtbWHOo8QbLinj3eAYgBgyIxKNGzaqaSInPAY3xIABtFILE/0qPPMhshxiMiWADBwRiUapqamujy6tkKx4WWWkTMV4lsCwAAZiWi49bOV2vz85p4b3/erBACG20hEw+evvzSlSzf33O4XUnY+6pJLAIZblud5v2cAAAaAqycAgBDRAACEiAYAIEQ0AAAhA3/1hAsWYJvzIoWB0Hkx4Om2Gexo8B5RsM15kcJACL42LU8AZ5FEgO0vXvODfaQBAOhdcBlRNABnXWStFOij4DKiaADOurX/gJzTAAPNOQ0AQIhoAM6izoVSYNAN/BtWuQQctjkvUtj+gq/TgY8GAODcsDwBAISIBgAgRDQAACGiAQAIEQ0AQIhoAABChiQa5ubm+j0C0E2tVqvVav2eAuhmw53pkEQDAHC2iQYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAICQUr8H2DI/fuxAv0cATmt5eTmlND19pN+DMCq+/sUr+j3CEBqeaPjtM//q9wgAbBefqOy+7spL+j3FsLE8AQCEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEDEI0NJ7KFx/s9xAAMOpK/R5gA3n9xez4/anVyMvXZJPX9XscABhdW3akoVKpVCqVHj9J3lrOVxbecdfiQ6lVz1ZX08J9eeOfPX5+AGDT3j7SsG6XX61WK5VKtVqNfJb4ll3kjZP577+cXX573pzIZmbS7mvS6ny2+GwqjKdCOUtL+eHv5Rd+P41dkhUme/xaAAy9d/8q2/uuasS9Y3li3U/zXP9wn7iv8Nc/phP1dOw/revvrT1XP/p0q7V4964rnvvwDc+lNJU1X0+vP5xPXZbO/8Y5HQyAwaQStla35YlTjdb5b/r/MkTnYsTaBp0fvHuDd3/cKX/9UHryF+m/xfTKgZQdXvnTtw48UK09M73wl8/84+d3Pn7v3c038tQspjdeSEt/yFuv9vhtAwBnKnQi5Nrqw7pliFM3Oxcyum/QbRXjwJPZYivtKKfdeSqn6ebxm+/c97e/3/nSk3eVmuUrb3k6my7kR7NsR0r1xbT0bNp5aS/fNgCjoPM3VUcdeveOaDjdD/cc/KDzl1/Jlibyo8X0oZPZ+/KVyZ3V1/YdLH5yYbI8Xs4ev//bt/3ypvzw+/Mjxey8Vlo5eLbnAWDQrdt5bcnpdyOu2zkN72lzl0hsfFrlkXZamspaK+nXY4eun3rg0UeLF+yYmCpNz7SnlvN6Kiy8tHNXs5Evzhb3LKXxlU3MAAD04oz/TsPmMm3D5YlG9sGJ5XJqFNNk4/ALe44258ul5WI2OVkc39FupkZ7R/5q+7WPFnYu5kdTmtyRbWIIAKAHPf2dht7/MMPbrvhU643z8qXxdHzy6oV/75p5cflI7eSbhxffPLiwcORje382cSwV68uFen31UDkVL9+yrwvAkNrKnRQppTM90nDqaEHnzcgGawcYuhxsGP/c3mPf3TvbfrmwspLVS/eP//SRlRv/tPqR0ljjxj1/vvWyJ/K53YXJ1fZiqT12QekD157R2ACMoA33WZypLM/zfs/wlhM/eebEPQ/N7FoqFJqFYjMba2TFehpbzdJYKuVpIm/PZifbOyduv6O47+Z1z52bm/vBI86OBOAt3/zKp6+78pJ+TzFg5ubmrrrqqi4bbKP3npj86rWN51899tgTUzvr5XKr0GhlxVYhW80K7SxrN1uF+sHJ8v59hRtu6vekADCKtlE0ZIXC7I++VNwze+yHvymUTpYnVsdK7azQXs3z1WYhy8ozd9wycdcXssIgvDMnAAydbRQNKaWsVJy555ap/VcvPfzUid+9uPzKkZSlscvOn77p8unbbix8/MJ+DwgAo2t7RcMpxb0Xzj6wfzbt7/cgAMDbHOoHAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJK/R5gy/zqwVv7PQJwWrVaLaV00UUX9XsQYPMcaQAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEKyPM/7PQMAMAAcaQAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQMj/AM6ikwGngvhWAAAAAElFTkSuQmCC"
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAI+klEQVR4nO3dXYxcZRnA8ffMV/eztRWklgYkQwwiKIhoDALihRiIGqKYeKGSGJEQr8RIoiFc+JGYEoiXGvDCECRqvNKEGwuRVAhxxYiYIK4USqdStrC77Xa7M7NzvFhdhoXOPt3ddnZmfr+LZmfnzO6zm0zPf897zkyW53kCAFhNodsDAAC9QTQAACGiAQAIEQ0AQIhoAABCRAMAEDLo0VCtVk/2ybe9q8OjAKC/DXo0dDA5ObnqXeoBgMEx6NEwOTm5YsdfrVY75AIADKxStwc4E370wJ9XfOa7X/vwqo9arof2qlj+zHJtLN+7oj+UBwB9ZiCi4fkDs41GY/lmuVw+ePDgueeeG3nsigMP7TeXKqF9qeJkWwJAHxiU5YnjbVJKtVpt+a72IwSr7unjHaAYAOgzgxINa7aUFJETHuNbAkAvGojliXVqP7MhchwisiUA9JxBiYaRkZEO9y6vUKx6mWXkTIX4lgDQQwYiGm76ZLV28ODaHhvf96sEAPrbQETDZ685P6Xz1/bYzhdStt/rkksA+luW53m3ZwAAeoCrJwCAENEAAISIBgAgRDQAACE9f/WECxZgk/MkhZ7QfjHgybbp7WjwHlGwyXmSQk8IPjctTwCnkUSAzS9e8719pAEAWL/gMqJoAE67yFop0EXBZUTRAJx2y/8BOacBeppzGgCAENEAnEbtC6VAr+v5N6xyCThscp6ksPkFn6c9Hw0AwJlheQIACBENAECIaAAAQkQDABAiGgCAENEAAIT0STRMTEx0ewSgk1qtVqvVuj0F0MmqO9M+iQYA4HQTDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGlbg+wYX72m792ewTgpObm5lJKo6OHuz0Ig+LWL1zW7RH6UP9EwyP7Xuj2CABsFu+vnnXV5bu7PUW/sTwBAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAIT0QDTkC3/MZ+7r9hQAMOhK3R5gFXn92Wx2T96s55WPZMNXdXscABhcG3akoVqtVqvVdX6RvDGXN4603W6l13+aGvNZs5GmfpwvTK7z6wMAa/bGkYYVu/zJyclqtTo5GdpPx7fsIF+YS3u/nC79el4vp9Hx7JyPptahbOaJVBhKxUqWjueH787PuittOS8rDK/zewHQ9976p+z6d1UD7k3LEyt+m2f6l7t3T/bsn9LcfH7k0OJ1P6g9tfDqvkZj5s53fvCJC697MstHsvoraeqB1lg12/6NMzoYAL1JJWysTssTS43W/m/6/zJE+2LE8gbtH7x1g7d+3C6fejk99qt0tJz2P52VDjcnvvO3e5+r7Rubfubj//rlN/d+/87GdJbqhTTzTJp9LK/vX99PDQCcstCJkMurDyuWIZZuti9kdN6g0yrGXx7NZltpvJTeVUzlfKg+c/3t1z/3/G3/+MMd5eaW931mXz7UyI8MZVtTtjCd5p9Mlfes46cGYCC0/6XqqMP6vSkaTvbLPQO/6PzfL2THtqSpLF0wn7bnJ4Z2TB6++sXCB6ZHK6Vmvvfeb3314RvzV7bkr5YK4/X8xP607XRPBEBvW7Hz2pDT7wZcp3Ma3tbaLpFY9bTK/D95OjqUGoX0u+KBT4ztefDh0s5tIyPloa2Lo8fy+kLxtX+O71is568PF3YeTZXmGmYAANbjlF+nYW2ZturyRLOwu3hsS2oUU6Vce3rnkfxguTg3m0ZGssp4vpg3m1uzl1qH3lvYNtuaytLwWLaGIQCAdVjX6zSs/4UZluWXXNaYHstnh9LRoSunDuwYeXZu6tDcTG16+sCrU69cdPFDlcNZcX42OzGfv1jJKpds1PcFoF9t4E6KJad2pGHpaEH7zcgGywcYOhxs2PKpS16/+6KtrecL9Xp2orxn6BcPNa6dmL2wnOVXn/PUTRc8mk2cnY22FmdKi+WzC7u9NCQAq1h1n8WpyvI87/YM/3P85/uO33X/2I5jxVK9UGoUivVUPpGKi1lWSaU8jeSt8Ww+3zp06+3Fa29Y8diJiYkfPvhSV8YGYBO64ytXXnX57m5P0WMmJiauuOKKDhtsoveeGL7lY/WJ/a/9eu/YOxbKlWah0MwKzUKhlRUWs6zVOJKdaA5Xvnhd4epPd3tSABhEmygaskJh20++VNy1/bV7f18szZeGmpXyYpbyVmq1mtlia3j8thuHvv25rNAD78wJAP1nE0VDSikrFca/d8Po5z909P7Hjz/y97mXp7Islc7bPnL9paO3XFO8+N3dHhAABtfmioYlhYt2brvn5m333NztQQCANzjUDwCEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACElLo9wIb57X03dXsE4KRqtVpKadeuXd0eBFg7RxoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAICQLM/zbs8AAPQARxoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABDyXxOwnGBT+hECAAAAAElFTkSuQmCC"
height="200"
width="700"
margin="0 auto"/>
@@ -1537,7 +1537,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJDElEQVR4nO3dT4ycZR3A8eedmZ39x3YrBWlABR2NNpEEhZAQI1C9EEiMTWw8eJEYjCRcSMSDUeJFEggJ0aMEEyMxwSAXY2IMgiGAHFgsMVWUjELrjqV0C1t329mZ2Xk9VJdh2939dXe778zu53NoujPvO/vsbKbvt8/zvjNZnucJAGAtpaIHAAAMBtEAAISIBgAgRDQAACGiAQAIEQ0AQIho2KharbbSjee9a5W9AKCfiYaLqF6vr3mXegBgUIiGjarX68sO/LVabZVcAIABVSl6AIPhgcdeXnbLd79xw5p7LdVDb1Us3bJUG0v3LusP5QFAXxENIa8fPdVut5e+HBoamp6evuqqqyL7Lpt46P3ybCX0LlWstCUAFM7yRNTpHimlRqOxdFfvDMGaR/p4BygGAPqKaLjoziZF5ITH+JYAsPUsT2yF3jMbIvMQkS0BYIuJhqixsbFV7l1aoVjzMsvImQrxLQFgy4iGkANfqDWmp9e3b/zYrxIA6GeiIeRLN1+d0tXr23f1Cyl773XJJQD9LMvzvOgxAAADwNUTAECIaAAAQkQDABAiGgCAEFdPnOfTpICt5DUI/aD3Ur6Vttnp0eAzoqBYXoPQD4IvPcsTQJEkAhQuHus7faYBAAiuEooGoHiRxVTg4gmuEooGoHhL/0I5pwH6mXMaAIAQ0QAUqXclFehzPrDKNeJQMK9BKFzwZSgaAIAQyxMAQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENPzP1NRU0UOAHa3RaDQajaJHATvamodC0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAkErRA+gjP3nyUNFDgJ1rfn4+pTQ+frzogbDdfPMr1xU9hO1DNLznty/8s+ghALDJRMMmsjwBAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAITsjGhoPZfPPlL0IABgsFWKHsBFlzcPZ6ceSp1WXr0xG/1c0cMBgEG1aTMNtVqtVqtt1qOtW96Zzxdm3nfT7KOp08wWF9PMg3nrHwWNCwAG3nszDcsO+fV6vVar1ev1yKPEt1xp997vu/o2q3yjvHUm//3Xsmvvytsj2cREuuzGtDidzb6YSsOpVM3SXH7s+/kVP0hDH8pKo+seLQCD5dz/027kmLWTvW95YtmTuDXP6bLgOG9/RKPkmQdLf/ljOt1MJ//dufmBxkvNE893OrP37bnupY/d8lJKY1n77fT2Y/nYNenSb23uTwFAP1MJm2K15Ymzadb7Z/r/MkTvYsTSBr1/OXeDc/9+1pq/yGAx5G8fTc/+Mv2nnN44lLJjC698+9DD9cYL4zN//vzff3HP0w/c134nT+1yeufVNPeHvPPmmg8IAPQKnQi5dNg+76xA70LG6husexUjsn6RDj2bzXbSrmq6LE/VNN4+dfs9+//6t3tee/beSrv6mTuez8ZL+Yks25VSczbNvZh2X72OkQAwiELHEdbyvmhY6Tndgud39VMW1ly/SCnlr7+RzY3kJ8rpo2eyD+QLo7vrb+0/Uv70zGh1uJo9/dB37vzVbfmxD+bHy9klnbRw5CL9IAD0m2VHjQ2eh7eTrXZOw3mt7xKJNacZlu5a/+/yeDfNjWWdhfTroaM3jz38xBPly3eNjFXGJ7pj83kzlWZe272n3cpnJ8t759Lwwnq+BQDsYBf8Pg3rXl/YyPJERCv7yMh8NbXKabR17NW9J9rT1cp8ORsdLQ/v6rZTq7srf7P71idKu2fzEymN7sou0jgAYJva0Ps0bMobM6z0IBf84Nd9tvPOJfnccDo1esPMv/ZMHJ4/3jjz7rHZd4/MzBz/5L6fj5xM5eZ8qdlcPFpN5Ws3PnIABkI/vI3Q9nBhMw1nZwt6v4xssDTBcN7JhvU95rmGv7jv5Pf2TXZfLy0sZM3KQ8M/e3zh1lcWP14Zat26908Hrnkmn7qsNLrYna10hy6vfPimC/rBARhcweMIa8ryPC96DJvm9E9fOH3/oxN75kqldqnczoZaWbmZhhazNJQqeRrJu5PZme7ukbvuLu+/fdm+U1NTP3zc2ZEA281TjxwoeggDY2pq6vrrr19lg2312ROjX7+p9fKbJ598Zmx3s1rtlFqdrNwpZYtZqZtl3Xan1DwyWj24v3TLbUWPFAAGz7aKhqxUmvzxV8t7J0/+6DelypnqyOJQpZuVuot5vtguZVl14u47Ru79clbaGZ/tCQCbaltFQ0opq5Qn7r9j7OANc489d/p3h+ffOJ6yNHTNpeO3XTt+562lT11R9AABYFBtt2g4q7zvismHD06mg0UPBAC2DxP1AECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAEBIpegB9JGnHjlQ9BBg52o0GimlK6+8suiBACsy0wAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAIRkeZ4XPQYAYACYaQAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQMh/AeqmxMYAVkavAAAAAElFTkSuQmCC"
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAJEElEQVR4nO3dW4xcdR3A8f+ZW/fa2ipSCwHJEIMElIiXGAXEBzEQNY1i4oORxIiE+KRGEg3hwUtiSiA+asAHQ5Co4UkTXixEUyHEFSPWBHGlUDqVsoXdbbfbnZmd40N1Gbbt7o+9nZndz+eh6eycM/vf2UzPt///OTNZnucJAGA5paIHAAD0B9EAAISIBgAgRDQAACGiAQAIEQ0AQIhoWK16vX6+L57zriX2AoBeJhrW0fj4+LJ3qQcA+oVoWK3x8fFFB/56vb5ELgBAn6oUPYD+8KMH/7zoK9/96geX3WuhHrqrYuErC7WxcO+i/lAeAPQU0RDy/OHpVqu1cLNarR45cuSiiy6K7Lto4qH75plK6F6qON+WAFA4yxNRp7qklBqNxsJd3TMEyx7p4x2gGADoKaJh3Z1JisgJj/EtAWDjWZ7YCN1nNkTmISJbAsAGEw1RQ0NDS9y7sEKx7GWWkTMV4lsCwIYRDSF7P1lvHDmysn3jx36VAEAvEw0hn73+0pQuXdm+S19I2X2vSy4B6GVZnudFjwEA6AOungAAQkQDABAiGgCAENEAAIS4euIcnyYFbCSvQegF3ZfynW+brR4NPiMKiuU1CL0g+NKzPAEUSSJA4eKxvtVnGgCA4CqhaACKF1lMBdZPcJVQNADFW/gXyjkN0Muc0wAAhIgGoEjdK6lAj/OBVa4Rh4J5DULhgi9D0QAAhFieAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaLhf8bGxooeAmxpjUaj0WgUPQrY0pY9FIoGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAIRUih5AD/nZb/5a9BBg65qZmUkpDQ8fK3ogbDa3f+GaooeweYiGNzx24IWihwDAGhMNa8jyBAAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQsiWiIZ/7Qz51f9GjAID+Vil6AOsubx7Mpvfl7WZe+3A2+LGihwMA/WrNZhrq9Xq9Xl+rR1uxvDWTt4533e6k13+aWrNZu5UmfpzPjRc3NADob2/MNCw65I+Pj9fr9fHx0FE2vuX5du/+vktvs8Q3yudm0v4vp6u/ljeraXg0u/AjqXM0m3oylQZSuZalU/mxe/J33J22XZKVBlc8WgD6y9n/p13NMWsre9PyxKIncWOe00XBcc7+iEbJ/n3ZwT+lmdn8+NH5G3/QeHru1QOt1tRdb3//k5ff+FSWD2XNV9LEg52Rerbz62v7UwDQy1TCmlhqeeJMmnX/mf6/DNG9GLGwQfdfzt7g7L+fsewvMlgM+cTL6YlfpRPVdOiZrHKsPfadv933XOPAyOSzH//XL7+x//t3tSaz1CylqWfT9BN589CyDwgAdAudCLlw2D7nrED3QsbSG6x4FSOyfpH+8ng23UmjlfTOcqrmA82pm+686bnn7/jH779VbW9772cO5AOt/PhAtj1lc5Np9qlUe/cKRgJAPwodR1jOm6LhfM/pBjy/S5+ysOz6RUop//cL2cltaSJLl82mnfnpgV3jx657sfS+yeFapZ3vv++bX3nklvyVbfmrldJoMz99KO1Ypx8FgN6y6KixyvPwtrKlzmk4p5VdIrHsNMPCXSv+Xeb/ydOJgdQqpd+WD39iZN9Dj1R27xgaqg5snx8+mTfnyq/9c3TXfDN/fbC0+0SqtVfwLQBgK3vL79Ow4vWF1SxPRLRLF5dPbkutcqpVG8/sPp4fqZZnptPQUFYbzefzdnt79lLn6HtKO6Y7E1kaHMnWaRwAsEmt6n0a1uSNGc73IG/1wfOrrmlNjuTTA+nEwIcmDu8aOjgzcXRmqjE5efjViVeuuPLh2rGsPDudnZ7NX6xltatWP3IA+kIvvI3Q5vDWZhrOzBZ034xssDDBcM7JhpU95tm2feqq1++5Ynvn+VKzmZ2u7hv4xcOtG8amL69m+XUXPr33ssezsQuy4c78VGW+ekHpYm8NCbBVBI8jLCvL87zoMayZUz8/cOruB0Z2nSxXmqVKq1RupurpVJ7Pslqq5Gko74xms/n2gdvvLN9w86J9x8bGfvjQS4UMG4D18+j9e4seQt8YGxu79tprl9hgU332xOBtH22OHXrt1/tH3jZXrbVLpXZWapdKnaw0n2Wd1vHsdHuw9sUbS9d9uuiRAkD/2VTRkJVKO37ypfKena/d97tyZbYy0K5V57OUd1Kn087mO4Ojd9wy8O3PZaUt8dmeALC2NlU0pJSySmn0ezcPf/4DJx7446nH/j7z8kSWpcolO4duunr4tuvLV76r6AECQL/abNFwRumK3TvuvXXHvbcWPRAA2DxM1AMAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIZWiB9BDHr1/b9FDgK2r0WiklPbs2VP0QIDzMtMAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEZHmeFz0GAKAPmGkAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAEDIfwHFCc4l9AzE7QAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
@@ -1675,7 +1675,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHSklEQVR4nO3dS29jZwHH4fc4dmbG0wtQRGlGqFRetEgFFQmJHbcNG4RUCYkPgMSaJWLHBtix6wIJqeuqQiz5AkhdMFIlFh2FulQdYvWStENLZibJBLNI8Zxxbv8mzhwf+3kWke9+5cg5P7/vOXE1Ho8LAMBpOk0PAABoB9EAAEREAwAQEQ0AQEQ0AAAR0QAARERDajAYHHfhkVedcC8AaCPRMAPD4fDUq9QDAG0nGlLD4XBqwz8YDE7IBQBYMN2mBzBffvPHv01d8quffevUe03qoV4Vk0smtTG5dqo/lAcArSAaHvCPmx/v7e1NzvZ6vY2NjWvXriX3nZp4qJ89qIT6UsVxtwSAuWV5YtrtmlLKaDSaXFWfITh1S593gGIAoBVEw8wcJEWyw2N+SwCYH5YnZqm+Z0MyD5HcEgDmhGiY1u/3T7h2skJx6mGWyZ4K+S0BoHGi4QEv/mAw2tg4233zbb9KAKCNRMMDfvydp0t5+mz3PflAyvq1DrkEoI2q8Xjc9BgAgBZw9AQAEBENAEBENAAAEdEAAESW6OgJByzA/PB+hHlTP8TvuNssSzT4jiiYH96PMG/Ct6HlCeBhkwgwV/JwX5aZBgDgOOGKoWgAmpEsoAIPR7hiKBqAZkz+KtmnAdrCPg0AQEQ0AA9bffUUaJEl+sIqx4XD/PB+hLkSviWXKBoAgPOwPAEAREQDABARDQBARDQAABHRAABERAMAEFm6aLh+/XrTQwA+NRqNRqNR06MAPnXqJnLpogEAOBvRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAECk2/QAGvCHV19veghAKaVsb2+XUq5efb/pgbCwfv6TF5oewkJZxmj4y1//2fQQAHgYRMNsWZ4AACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACLdpgcwM/vj8ead6p1be+tb997avHvjvds3Pthd39z55NfPNT00AFgErYyGvf3x5k71r4M+2Nr5xpPd127uvHz91ub2/r39/aZHBwCL6aKiYTAYDIfDi3jkb740Gt268+Ht+33wy+8+8ebW7rsf717E0wEAB+5Hw9Rm/sizF5cCuddv/rvZAQDQIoPBYOqSxjdk7fXZZhq80AC0jo3XrNw/euJgIuHg9GReoX62/L/XJj8PTB5hUHPChVPXHj59+EEAgMadcZ+G+jrFkSsXk7A4Ycnj1EcGgPOrfwq1iTmPM0bDeV70SWEc/pnc/UfPPrK6UnVXSinlv+NSSnn+y5e+eHWlU5XL3c7lXlVKKZ2VMw8PgEUytXHx0fQ8joiGyQvayJ6Pk2WR4563v1odnOhUVX+1Wl2p+r3O5y6vrD3WK6V0O6VUVefS1Y5/WwUAM/VANNT3Y5hopBtOeN5X/v7J1CVfuLJy4/2dP7/xn9plW5NTv/3e1y5ikACwbI74PF7fVJ8tF07dh7E+hzGT+YxOVZ3n7gAsKrvVz9DM/rlTfZaivsTwWXc/qT9I/uwWIwA40hm2RBxnOhoOv5qHJx6mbjM5e+QUxXG/nuPmM/w6AZgtW5ZZad8n9OeefOSxK702jhwAWq19X1j1xi++cufe+N3t8vZHu+tb+29t3nlhbXV33PnSozv1L6QAAGarfdFQSrnSrZ55vDzz+KXvf7WU0i+l/PTrj/7uh09s3q3e+Whv/cN7b2/evfHe7fUPdt7c2mt2qACwMFoZDUfqdaqn+uWpfu/b13qlXCnl802PCAAWij0DAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAIBIt+kBNOBPv3+x6SEApZQyGo1KKWtra00PBIiYaQAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAi1Xg8bnoMAEALmGkAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgMj/ADXmIQfzxhChAAAAAElFTkSuQmCC"
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHR0lEQVR4nO3dzW8jZwHH8WfsOGGTpRVFrOiuRKksAe2hAgmJG28XLgipEhfOSNy5IW5cgBsnLkiVOCOEeuQf4IJYqRIHlrAuVdlYZTeb7QvZZvOCOaR4Z504+TVxdjzx53OI7LHHfuTIma/nmYmr0WhUAABO02l6AABAO4gGACAiGgCAiGgAACKiAQCIiAYAICIaUv1+f9rCY286YS0AaCPRMAODweDUm9QDAG0nGlKDwWBiw9/v90/IBQC4ZJaaHsB8+flrf5lY8tMffvXUtcb1UK+K8ZJxbYxvnegP5QFAK4iGJ/zjX+/v7e2Nr/Z6vY2NjRs3biTrTux4qF89rIT6VMW0ewLA3DI9MelhTSllOByOb6rvITh1S593gGIAoBVEw8wcJkVywGN+TwCYH6YnZql+ZEOyHyK5JwDMCdEwaXV19YRbxzMUp55mmRypkN8TABonGp7w6rf7w42Ns62bb/tVAgBtJBqe8L2vv1DKC2db9+QTKeu3OuUSgDaqRqNR02MAAFrA2RMAQEQ0AAAR0QAAREQDABBZoLMnnLAA88P7EeZN/RS/afdZlGjwHVEwP7wfYd6Eb0PTE8DTJhFgruThvih7GgCAacIZQ9EANCOZQAWejnDGUDQAzRj/VXJMA7SFYxoAgIhoAJ62+uwp0CIL9IVVzguH+eH9CHMlfEsuUDQAAOdhegIAiIgGACAiGgCAiGgAACKiAQCIiAYAILJw0XDz5s2mhwB8ZDgcDofDpkcBfOTUTeTCRQMAcDaiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAIDIUtMDaMBvfv9G00MASille3u7lLK2drfpgXBp/ej7X256CJfKIkbDH//0z6aHAMDTIBpmy/QEABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABBZanoAM3MwGm3tVG+/u7e+tX/77s6tfz9cv7d7a/PRBz/7UtNDA4DLoJXRsPff0eZOdefdvfWt/bfu7778me6f7+z+9uaDze2D/YODpkcHAJfTRUVDv98fDAYX8chf+fVw+N6HWw8f98FPvvHp2/d333l/9yKeDgA49DgaJjbzx169uBTIvXHnvWYHAECL9Pv9iSWNb8ja6+PtafBCA9A6Nl6z8vjsicMdCYeXx/sV6lfL/3tt/PPQ+BH6NScsnLj16OWjDwIANO6MxzTU5ymOnbkYh8UJUx6nPjIAnF/9U6hNzHmcMRrO86KPC+Poz2T1737x6nK3Wuo+XvLytZVrV7udqqwud5a7VSmldLrTVgdgoUxsXHw0PY9jomH8gjZy5ON4WmTa864uV4cXOlW13K0+0auurnR2D7rXn+mVUjpV6XSqzspax7+tAoCZeiIa6scxjDXSDSc87+/++sHEkueudG/dffT63/5TW3Z/fOkX33zpIgYJAIvmmM/j9U312XLh1GMY6/swZrI/o1NV51kdgMvKYfUzNLN/7lTfS1GfYvi4h5/UHyR/dpMRABzrDFsippmMhqOv5tEdDxP3GV89dhfFtF/PtP0Zfp0AzJYty6y07xP6F66tPXOl18aRA0Crte8Lq/7+4899uD96Z7u89WD39tbBm5s7r3x2ZXfUvfbJR/UvpAAAZqt90VBKubJUvfhsefHZlW99vpSyWkr5wStrv/zOc5s71dsP9ta39t+8t7N+9+H6vUe37/sWKwCYjVZGw7F6ner51fL8au9rN3qlXCnlU02PCAAuFUcGAAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AACRpaYH0IA//OrVpocAlFLKcDgspVy/fr3pgQARexoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCASDUajZoeAwDQAvY0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEDkf21/IOuy4J3bAAAAAElFTkSuQmCC"
height="200"
width="700"
margin="0 auto"/>
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 51881c4e42..b787e2fc06 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/Events/API.php b/plugins/Events/API.php
index 6f48418f44..74519953a3 100644
--- a/plugins/Events/API.php
+++ b/plugins/Events/API.php
@@ -9,9 +9,6 @@
namespace Piwik\Plugins\Events;
use Piwik\Archive;
-use Piwik\DataTable\Row;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/Events/Archiver.php b/plugins/Events/Archiver.php
index b42762c6eb..31d6cd9146 100644
--- a/plugins/Events/Archiver.php
+++ b/plugins/Events/Archiver.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Events;
use Piwik\Config;
use Piwik\DataArray;
-use Piwik\DataTable;
use Piwik\Metrics;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\RankingQuery;
diff --git a/plugins/Events/Categories/EventsSubcategory.php b/plugins/Events/Categories/EventsSubcategory.php
index f6abe87ee4..ae6223937f 100644
--- a/plugins/Events/Categories/EventsSubcategory.php
+++ b/plugins/Events/Categories/EventsSubcategory.php
@@ -20,6 +20,6 @@ class EventsSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Events_EventsSubcategoryHelp1') . '</p>'
- . '<p><a href="https://matomo.org/docs/event-tracking/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Events_EventsSubcategoryHelp2') . '</a></p>';
+ . '<p><a href="https://matomo.org/docs/event-tracking/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Events_EventsSubcategoryHelp2') . '</a></p>';
}
}
diff --git a/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php b/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
index 687e830e03..d242959e88 100644
--- a/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
+++ b/plugins/Events/DataTable/Filter/ReplaceEventNameNotSet.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Events\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Piwik;
use Piwik\Plugins\Events\Archiver;
diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php
index ce36844e85..c500367996 100644
--- a/plugins/Events/Events.php
+++ b/plugins/Events/Events.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Events;
use Piwik\Common;
use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugin\ReportsProvider;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable\AllColumns;
diff --git a/plugins/Events/Widgets/EventsByDimension.php b/plugins/Events/Widgets/EventsByDimension.php
index 17658da539..c99cfb318d 100644
--- a/plugins/Events/Widgets/EventsByDimension.php
+++ b/plugins/Events/Widgets/EventsByDimension.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Events\Widgets;
use Piwik\Plugins\CoreHome\CoreHome;
-use Piwik\Translation\Translator;
use Piwik\Widget\WidgetContainerConfig;
class EventsByDimension extends WidgetContainerConfig
diff --git a/plugins/Events/lang/ca.json b/plugins/Events/lang/ca.json
index 2f70e194ad..8bf5e0e95a 100644
--- a/plugins/Events/lang/ca.json
+++ b/plugins/Events/lang/ca.json
@@ -1,13 +1,40 @@
{
"Events": {
+ "AvgEventValue": "El valor mitjà de l'esdeveniment és: %s",
+ "AvgValue": "Valor mitjà",
+ "AvgValueDocumentation": "La mitjana de tots els valors d'aquest esdeveniment",
+ "Category": "Categoria",
"Event": "Esdeveniment",
+ "EventAction": "Acció d'esdeveniment",
+ "EventActions": "Accions d'esdeveniment",
+ "EventActionsReportDocumentation": "Aquest informe mostra el nombre de vegades que s'ha produït cada acció d'esdeveniment. Podeu veure les categories i els noms d'esdeveniments dels quals es va fer el seguiment juntament amb cada acció d'esdeveniment a la subtaula de la fila. Podeu canviar el que es mostra canviant la dimensió secundària amb l'enllaç a la part inferior de l'informe.",
+ "EventCategories": "Categories d'esdeveniments",
+ "EventCategoriesReportDocumentation": "Aquest informe mostra les categories de cada esdeveniment de seguiment i quantes vegades s'ha produït. Podeu veure les accions i els noms dels esdeveniments dels quals es va fer el seguiment juntament amb cada categoria d'esdeveniments a la subtaula de cada fila. Podeu canviar el que es mostra canviant la dimensió secundària amb l'enllaç a la part inferior de l'informe.",
"EventCategory": "Categoria d'esdeveniment",
"EventName": "Nom de l'esdeveniment",
"EventNames": "Noms dels esdeveniments",
+ "EventNamesReportDocumentation": "Aquest informe mostra els noms associats a cada esdeveniment de seguiment i quantes vegades s'han produït. Podeu veure les accions i categories d'esdeveniments dels quals es va fer un seguiment juntament amb el nom de cada esdeveniment a la subtaula de cada fila. Podeu canviar el que es mostra canviant la dimensió secundària amb l'enllaç a la part inferior de l'informe.",
+ "EventUrl": "URL de l'esdeveniment",
+ "EventUrls": "URL d'esdeveniments",
+ "EventValue": "Valor de l'esdeveniment",
+ "EventValueTooltip": "El valor total de l'esdeveniment és la suma dels %1$s valors d'esdeveniments %2$s entre el mínim de %3$s i el màxim de %4$s.",
"Events": "Esdeveniments",
+ "EventsSubcategoryHelp1": "La secció Esdeveniments ofereix informes sobre els esdeveniments personalitzats associats al vostre lloc. Els esdeveniments solen requerir una configuració personalitzada. Un cop configurats, podeu revisar els informes desglossats per categoria, acció i nom.",
+ "EventsSubcategoryHelp2": "Més informació sobre el seguiment d'esdeveniments aquí.",
"EventsWithValue": "Esdeveniments amb valor",
- "EventsWithValueDocumentation": "Nombre d'esdeveniments que tenen un valor",
+ "EventsWithValueDocumentation": "Nombre d'esdeveniments que tenen un valor definit",
+ "MaxValue": "Valor màxim de l'esdeveniment",
"MaxValueDocumentation": "El valor màxim per aquest esdeveniment",
- "MinValueDocumentation": "El valor mínim per aquest esdeveniment"
+ "MinValue": "Valor mínim de l'esdeveniment",
+ "MinValueDocumentation": "El valor mínim per aquest esdeveniment",
+ "PluginDescription": "Feu un seguiment dels esdeveniments i obteniu informes sobre l'activitat dels vostres visitants.",
+ "SecondaryDimension": "La dimensió secundària és %s.",
+ "SwitchToSecondaryDimension": "Canvia a %s",
+ "TopEvents": "Esdeveniments principals",
+ "TotalEvents": "Esdeveniments totals",
+ "TotalEventsDocumentation": "Nombre total d'esdeveniments",
+ "TotalValue": "Valor d'esdeveniment",
+ "TotalValueDocumentation": "La suma dels valors de l'esdeveniment",
+ "ViewEvents": "Veure esdeveniments"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Events/lang/id.json b/plugins/Events/lang/id.json
index a87fdd6028..b8474e2c2c 100644
--- a/plugins/Events/lang/id.json
+++ b/plugins/Events/lang/id.json
@@ -1,6 +1,12 @@
{
"Events": {
"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."
}
}
diff --git a/plugins/Events/lang/nb.json b/plugins/Events/lang/nb.json
index de318759eb..277f56ec2e 100644
--- a/plugins/Events/lang/nb.json
+++ b/plugins/Events/lang/nb.json
@@ -9,14 +9,18 @@
"EventActions": "Hendelseshandlinger",
"EventActionsReportDocumentation": "Denne rapporten viser antallet ganger hver handling skjedde for hver hendelse. Du kan vise hendelseskategoriene og navn som ble sporet, sammen med hver hendelse i radens undertabell. Du kan endre hvilken av dem som vises ved å endre den sekundære dimensjonen med lenken på bunnen av rapporten.",
"EventCategories": "Hendelseskategorier",
+ "EventCategoriesReportDocumentation": "Denne rapporten viser kategoriene for hver begivenhet som spores, og hvor mange ganger den har inntruffet. Du kan vise begivenhetshandlinger og navn som spores, sammen med hver hendelseskategori i hver rads undertabell. Du kan endre hvilken som vises ved å endre den sekundære dimensjonen med lenken i bunnen av rapporten.",
"EventCategory": "Hendelsekategori",
"EventName": "Hendelsesnavn",
"EventNames": "Hendelsesnavn",
+ "EventNamesReportDocumentation": "Denne rapporten viser deg navn tilknyttet hver sporede begivenhet og hvor mange ganger den har inntruffet. Du kan vise begivenhetshandlinger og kategorier som spores, sammen med hvert begivenhetsnavn i hver rads undertabell. Du kan endre hvilken som vises ved å endre den sekundære dimensjonen med lenken i bunnen av rapporten.",
"EventUrl": "Hendelsesnettadresse",
"EventUrls": "Hendelsesnettadresser",
"EventValue": "Hendelsesverdi",
"EventValueTooltip": "Total hendelsesverdi er summen av alle %1$s hendelsesverdier %2$s mellom minimumsverdi %3$s og maksimumsverdi %4$s.",
"Events": "Hendelser",
+ "EventsSubcategoryHelp1": "Begivenhetsdelen gir det rapporter om egendefinerte begivenheter tilknyttet siden din. Begivenheter krever typisk egendefinert oppsett. Når de er satt opp kan du forhåndsvise rapporter per kategori, handling, og navn.",
+ "EventsSubcategoryHelp2": "Lær mer om hendelsessporing her.",
"EventsWithValue": "Hendelser med en verdi",
"EventsWithValueDocumentation": "Antall hendelser der en hendelsesverdi er satt",
"MaxValue": "Maks. hendelsesverdi",
diff --git a/plugins/Events/lang/sq.json b/plugins/Events/lang/sq.json
index d9016c9a28..d127e4062d 100644
--- a/plugins/Events/lang/sq.json
+++ b/plugins/Events/lang/sq.json
@@ -1,6 +1,5 @@
{
"Events": {
- "PluginDescription": "Ndiqni Akte dhe merrni raporte mbi veprimtarinë e vizitorëve tuaj.",
"AvgEventValue": "Vlera mesatare e Akteve është: %s",
"AvgValue": "Vlerë mesatare",
"AvgValueDocumentation": "Mesatarja e krejt vlerave për këtë akt",
@@ -15,17 +14,20 @@
"EventName": "Emër Akti",
"EventNames": "Emra Aktesh",
"EventNamesReportDocumentation": "Ky raport shfaq emrat përshoqëruar me çdo veprimtari të ndjekur dhe sa herë ka ndodhur. Mund të shihni veprimet dhe kategoritë e veprimtarive që janë ndjekur, tok me çdo emër veprim në to, te nëntabela e çdo rreshti. Mund të ndryshoni çfarë duket, duke ndryshuar përmasën e dytë me lidhjen në fund të raportit.",
- "EventUrl": "URLAkti",
+ "EventUrl": "URL Akti",
"EventUrls": "ULR-ra Aktesh",
+ "EventValue": "Vlerë akti",
+ "EventValueTooltip": "Vlera Tërësore e Aktit është shuma e %1$s vlerave të akteve %2$s mes minimumit prej %3$s dhe maksimumit prej %4$s.",
"Events": "Akte",
+ "EventsSubcategoryHelp1": "Ndarja Veprimtari ofron raporte mbi veprimtari vetjake përshoqëruar me sajtin tuaj. Veprimtaritë zakonisht lypin formësim vetjak. Pasi të jenë formësuar, mund të shqyrtoni raporte të grupuar sipas kategorish, veprimesh dhe emrash.",
+ "EventsSubcategoryHelp2": "Mësoni më tepër rreth ndjekjes, këtu.",
"EventsWithValue": "Akte me një vlerë",
"EventsWithValueDocumentation": "Numër aktesh për të cilat është caktuar një vlerë Akti",
- "EventValue": "Vlerë akti",
- "EventValueTooltip": "Vlera Tërësore e Aktit është shuma e %1$s vlerave të akteve %2$s mes minimumit prej %3$s dhe maksimumit prej %4$s.",
"MaxValue": "Maksimum vlere Akti",
"MaxValueDocumentation": "Vlera maksimum për këtë akt",
"MinValue": "Minimum vlere Akti",
"MinValueDocumentation": "Vlera minimum për këtë akt",
+ "PluginDescription": "Ndiqni Akte dhe merrni raporte mbi veprimtarinë e vizitorëve tuaj.",
"SecondaryDimension": "Përmasa dytësore është %s.",
"SwitchToSecondaryDimension": "Kalo te %s",
"TopEvents": "Aktet Kryesuese",
@@ -33,8 +35,6 @@
"TotalEventsDocumentation": "Numri gjithsej i akteve",
"TotalValue": "Vlerë akti",
"TotalValueDocumentation": "Shuma e vlerave të akteve",
- "ViewEvents": "Shihni Akte",
- "EventsSubcategoryHelp1": "Ndarja Veprimtari ofron raporte mbi veprimtari vetjake përshoqëruar me sajtin tuaj. Veprimtaritë zakonisht lypin formësim vetjak. Pasi të jenë formësuar, mund të shqyrtoni raporte të grupuar sipas kategorish, veprimesh dhe emrash.",
- "EventsSubcategoryHelp2": "Mësoni më tepër rreth ndjekjes, këtu."
+ "ViewEvents": "Shihni Akte"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Events/lang/th.json b/plugins/Events/lang/th.json
index 0967ef424b..79c89b9c16 100644
--- a/plugins/Events/lang/th.json
+++ b/plugins/Events/lang/th.json
@@ -1 +1,5 @@
-{}
+{
+ "Events": {
+ "PluginDescription": "ติดตามกิจกรรมและรับรายงานเกี่ยวกับกิจกรรมผู้เยี่ยมชมของคุณ"
+ }
+}
diff --git a/plugins/Events/lang/tl.json b/plugins/Events/lang/tl.json
index b241a274de..49c34351ff 100644
--- a/plugins/Events/lang/tl.json
+++ b/plugins/Events/lang/tl.json
@@ -10,12 +10,13 @@
"EventCategory": "Kategorya ng event",
"EventName": "Pangalan ng Event",
"EventNames": "Event Names",
+ "EventValueTooltip": "Ang total event value ay resulta ng %1$s events values %2$s sa pagitan ng minimum %3$s at maximum ng %4$s.",
"Events": "Mga Resulta",
"EventsWithValue": "Mga event na may value",
"EventsWithValueDocumentation": "Bilang ng pangyayari kung saan ang halaga ng Event ay itinakda",
- "EventValueTooltip": "Ang total event value ay resulta ng %1$s events values %2$s sa pagitan ng minimum %3$s at maximum ng %4$s.",
"MaxValueDocumentation": "Ang maximum na halaga para sa kaganapang ito.",
"MinValueDocumentation": "Ang minimum na halaga para sa kaganapang ito.",
+ "PluginDescription": "Subaybayan ang mga kaganapan at kumuha ng mga balita sa aktibidad ng iyong mga bisita.",
"SecondaryDimension": "Pangalawang dimensyon ay %s.",
"SwitchToSecondaryDimension": "Lumipat sa %s",
"TopEvents": "Mga nangungunang events",
@@ -24,4 +25,4 @@
"TotalValueDocumentation": "Ang kabuuan ng mga value ng event",
"ViewEvents": "View Events"
}
-} \ No newline at end of file
+}
diff --git a/plugins/ExampleLogTables/ExampleLogTables.php b/plugins/ExampleLogTables/ExampleLogTables.php
index ed7ada493f..2990c06ad1 100644
--- a/plugins/ExampleLogTables/ExampleLogTables.php
+++ b/plugins/ExampleLogTables/ExampleLogTables.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\ExampleLogTables;
use Piwik\Common;
-use Piwik\Plugins\ExampleLogTables\Dao\CustomUserLog;
-use Piwik\Plugins\ExampleLogTables\Dao\CustomGroupLog;
class ExampleLogTables extends \Piwik\Plugin
{
diff --git a/plugins/ExamplePlugin/API.php b/plugins/ExamplePlugin/API.php
index a99c45788e..6115273033 100644
--- a/plugins/ExamplePlugin/API.php
+++ b/plugins/ExamplePlugin/API.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExamplePlugin;
use Piwik\Archive;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Piwik;
use Piwik\Segment;
diff --git a/plugins/ExamplePlugin/Archiver.php b/plugins/ExamplePlugin/Archiver.php
index b9b9bc4ab1..8f3f453f99 100644
--- a/plugins/ExamplePlugin/Archiver.php
+++ b/plugins/ExamplePlugin/Archiver.php
@@ -9,11 +9,9 @@
namespace Piwik\Plugins\ExamplePlugin;
use Piwik\ArchiveProcessor;
-use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Option;
use Piwik\Sequence;
-use Psr\Log\LoggerInterface;
/**
* Class Archiver
diff --git a/plugins/ExamplePlugin/Controller.php b/plugins/ExamplePlugin/Controller.php
index 4b8dac40e6..34a80861d4 100644
--- a/plugins/ExamplePlugin/Controller.php
+++ b/plugins/ExamplePlugin/Controller.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ExamplePlugin;
-use Piwik\View;
/**
* A controller lets you for example create a page that can be added to a menu. For more information read our guide
diff --git a/plugins/ExamplePlugin/Widgets/MyExampleWidget.php b/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
index c9b70b8187..47593df280 100644
--- a/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
+++ b/plugins/ExamplePlugin/Widgets/MyExampleWidget.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExamplePlugin\Widgets;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
/**
* This class allows you to add your own widget to the Piwik platform. In case you want to remove widgets from another
diff --git a/plugins/ExampleReport/Reports/GetExampleReport.php b/plugins/ExampleReport/Reports/GetExampleReport.php
index bbf77e0cb3..04895b21d6 100644
--- a/plugins/ExampleReport/Reports/GetExampleReport.php
+++ b/plugins/ExampleReport/Reports/GetExampleReport.php
@@ -9,10 +9,8 @@
namespace Piwik\Plugins\ExampleReport\Reports;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\Actions\Columns\ExitPageUrl;
-use Piwik\View;
/**
* This class defines a new report.
diff --git a/plugins/ExampleTracker/Columns/ExampleActionDimension.php b/plugins/ExampleTracker/Columns/ExampleActionDimension.php
index 42884dc62d..a4b5a1132f 100644
--- a/plugins/ExampleTracker/Columns/ExampleActionDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleActionDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ActionDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\ActionPageview;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
index e4587db420..091893a426 100644
--- a/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleConversionDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\ConversionDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/ExampleTracker/Columns/ExampleDimension.php b/plugins/ExampleTracker/Columns/ExampleDimension.php
index cb0838874b..80304f8e0d 100644
--- a/plugins/ExampleTracker/Columns/ExampleDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleDimension.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
/**
* This example dimension only defines a name and does not track any data. It's supposed to be only used in reports.
diff --git a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
index f05e9084b1..ede1d65ee5 100644
--- a/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
+++ b/plugins/ExampleTracker/Columns/ExampleVisitDimension.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\ExampleTracker\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
use Piwik\Tracker\Action;
diff --git a/plugins/ExampleUI/Controller.php b/plugins/ExampleUI/Controller.php
index 3761812f05..017ed01769 100644
--- a/plugins/ExampleUI/Controller.php
+++ b/plugins/ExampleUI/Controller.php
@@ -8,11 +8,8 @@
*/
namespace Piwik\Plugins\ExampleUI;
-use Piwik\Common;
use Piwik\Notification;
-use Piwik\Piwik;
use Piwik\View;
-use Piwik\ViewDataTable\Factory as ViewDataTableFactory;
/**
*/
diff --git a/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php b/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
index fbee4427cb..9218791f03 100644
--- a/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
+++ b/plugins/ExampleUI/Reports/GetPlanetRatiosWithLogos.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleUI\Reports;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud;
diff --git a/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php b/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
index a2b9aeb3ee..899b59a717 100644
--- a/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
+++ b/plugins/ExampleUI/Reports/GetTemperaturesEvolution.php
@@ -10,15 +10,11 @@ namespace Piwik\Plugins\ExampleUI\Reports;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Bar;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Pie;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Report\ReportWidgetFactory;
-use Piwik\View;
use Piwik\Widget\WidgetsList;
/**
diff --git a/plugins/ExampleVisualization/Visualizations/SimpleTable.php b/plugins/ExampleVisualization/Visualizations/SimpleTable.php
index d71b46ece4..26f6625812 100644
--- a/plugins/ExampleVisualization/Visualizations/SimpleTable.php
+++ b/plugins/ExampleVisualization/Visualizations/SimpleTable.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ExampleVisualization\Visualizations;
-use Piwik\DataTable;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugin\Visualization;
diff --git a/plugins/ExampleVue/Widgets/GetExampleVue.php b/plugins/ExampleVue/Widgets/GetExampleVue.php
index ef3ecfed8f..bb112eaed4 100644
--- a/plugins/ExampleVue/Widgets/GetExampleVue.php
+++ b/plugins/ExampleVue/Widgets/GetExampleVue.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\ExampleVue\Widgets;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
class GetExampleVue extends Widget
{
diff --git a/plugins/Feedback/API.php b/plugins/Feedback/API.php
index 26dde1ce19..8eefb69958 100644
--- a/plugins/Feedback/API.php
+++ b/plugins/Feedback/API.php
@@ -12,7 +12,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\DataTable\Renderer\Json;
use Piwik\Date;
-use Piwik\IP;
use Piwik\Mail;
use Piwik\Piwik;
use Piwik\SettingsServer;
diff --git a/plugins/Feedback/Controller.php b/plugins/Feedback/Controller.php
index 9464f855f1..f98504d302 100644
--- a/plugins/Feedback/Controller.php
+++ b/plugins/Feedback/Controller.php
@@ -8,13 +8,9 @@
*/
namespace Piwik\Plugins\Feedback;
-use Piwik\Date;
use Piwik\View;
-use Piwik\Piwik;
-use Piwik\Common;
use Piwik\Version;
use Piwik\Container\StaticContainer;
-use Piwik\DataTable\Renderer\Json;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/Feedback/Feedback.php b/plugins/Feedback/Feedback.php
index 9a75c51c92..6764c29f42 100644
--- a/plugins/Feedback/Feedback.php
+++ b/plugins/Feedback/Feedback.php
@@ -9,13 +9,9 @@
namespace Piwik\Plugins\Feedback;
use Piwik\Date;
-use Piwik\Plugins\UsersManager\API as APIUsersManager;
-use Piwik\Plugins\UsersManager\UsersManager;
-use Piwik\Site;
use Piwik\View;
use Piwik\Piwik;
use Piwik\Common;
-use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugins\Feedback\FeedbackReminder;
/**
diff --git a/plugins/Feedback/lang/ca.json b/plugins/Feedback/lang/ca.json
index d97350d917..c89fabe03a 100644
--- a/plugins/Feedback/lang/ca.json
+++ b/plugins/Feedback/lang/ca.json
@@ -1,12 +1,86 @@
{
"Feedback": {
- "DoYouHaveBugReportOrFeatureRequest": "Teniu algun error que reportar o una petició de noves funcionalitats?",
+ "AppreciateFeedback": "Agraïm molt els vostres comentaris",
+ "CommunityHelp": "Ajuda de la comunitat",
+ "ContactUs": "Contacteu-nos",
+ "DoYouHaveBugReportOrFeatureRequest": "Tens un error per informar o una sol·licitud de funció?",
+ "FAQs": "Preguntes freqüents",
+ "FeedbackSubtitle": "Aquí teniu l'oportunitat de demanar-ho! Si us plau, describiu-ho amb tants detalls com pugueu. <br> Els vostres comentaris ens ajudaran a millorar Matomo. %1$s",
+ "FeedbackTitle": "Si us plau ajudeu-nos a millorar Matomo",
+ "FormNotEnoughFeedbackText": "Si us plau, no us oblideu de compartir els vostres comentaris a continuació.",
+ "Forums": "Fòrums",
+ "HowCanWeHelp": "Com us podem ajudar?",
+ "HowToCreateTicket": "Si us plau, llegiu les recomanacions per escriure un bon %1$sinforme d'errors%2$s o %3$ssol·licitud de funcions%4$s. A continuació, registreu-vos o inicieu sessió a %5$sel nostre rastrejador de problemes%6$s i creeu un %7$snou tema%8$s.",
"IWantTo": "Jo vull:",
- "LearnWaysToParticipate": "Apren sobre les formes en que tu pots %1$s participar %2$s",
- "ManuallySendEmailTo": "Siusplau envia el vostre missatge manualmetn a",
- "SendFeedback": "Enviar Feedback",
- "ThankYou": "Gràcies per ajudar-nos a fer el Matomo millor!",
- "TopLinkTooltip": "Digue'ns que en penses o demana suport Professional.",
- "Forums": "Fòrums"
+ "LearnWaysToParticipate": "Obteniu informació sobre totes les maneres com podeu%1$s participar%2$s",
+ "ManuallySendEmailTo": "Si us plau envieu manualment el vostre missatge a",
+ "MessageBodyValidationError": "El cos del missatge és massa curt (el mínim és de 10 caràcters).",
+ "NeverAskMeAgain": "No m'ho torneu a preguntar",
+ "NotTrackingVisits": "Matomo no està fent el seguiment de cap visita",
+ "PleaseLeaveExternalReviewForMatomo": "Agraïm molt els vostres comentaris. Si teniu un minut, compartiu els vostres pensaments en un d'aquests llocs i inspireu d'altres a unir-se a la nostra revolució de les dades.",
+ "PluginDescription": "Envieu els vostres comentaris a l'equip de Matomo. Compartiu les vostres idees i suggeriments per fer de Matomo la millor plataforma d'anàlisi del món!",
+ "Policy": "El vostre missatge i la vostra adreça de correu electrònic s'enviaran amb aquest formulari. La informació només s'utilitzarà per millorar els nostres productes i serveis. Les vostres dades les processem nosaltres, el nostre proveïdor d'allotjament i el nostre gestor de temes d'assistència. Per obtenir-ne més informació, consulteu la política de privadesa de %1$sMatomo%2$s.",
+ "PopularHelpTopics": "Temes d'ajuda populars",
+ "PrivacyClaim": "Matomo respecta la vostra %1$sprivadesa%2$s i us ofereix un control total sobre les vostres dades.",
+ "ProfessionalHelp": "Ajuda professional",
+ "ProfessionalServicesDedicatedSupport": "Suport d'un membre dedicat de l'equip de Matomo a cada etapa del procès",
+ "ProfessionalServicesEmailAlerts": "Alertes per correu electrònic per a versions de seguretat per a Matomo",
+ "ProfessionalServicesIntro": "Amb una subscripció d'assistència local de Matomo, deixeu que el nostre equip experimentat us ajudi en línia a utilitzar Matomo Analytics per fer créixer el vostre negoci.",
+ "ProfessionalServicesOfferIntro": "De quins serveis podeu beneficiar-vos?",
+ "ProfessionalServicesOnboarding": "Qüestionari d'incorporació i reunió amb un membre del suport de Matomo",
+ "ProfessionalServicesSupport": "Servei de sol·licituds en línia les 24 hores del dia",
+ "ProfessionalServicesTraining": "Accés exclusiu als vídeos de formació de Matomo",
+ "PurgeOldData": "Vull eliminar algunes dades antigues",
+ "Question0": "Quins són els vostres problemes més grans o punts sensibles amb Matomo i per què?",
+ "Question1": "Què és l'únic que us agradaria que es millorés a Matomo i per què?",
+ "Question2": "Quina és la característica que més trobes a faltar a Matomo i per què?",
+ "Question3": "Quin és el vostre objectiu principal per utilitzar Matomo?",
+ "Question4": "Quina és la teva principal preocupació sobre Matomo?",
+ "RateFeatureConfigurable": "Configurable",
+ "RateFeatureDislikeAddMissingFeatures": "Afegir les funcions que falten",
+ "RateFeatureDislikeFixBugs": "Corregir errors",
+ "RateFeatureDislikeMakeEasier": "Fer-lo més fàcil d'utilitzar",
+ "RateFeatureDislikeSpeedUp": "Millorar la velocitat",
+ "RateFeatureEasyToUse": "Fàcil d'usar",
+ "RateFeatureLeaveMessageDislike": "Com podem millorar aquesta característica?",
+ "RateFeatureLeaveMessageDislikeExtra": "Si us plau, feu-nos saber com podem fer-ho més bé perquè puguem millorar Matomo.",
+ "RateFeatureLeaveMessageDislikeExtraBugs": "Lamentem que hagis trobat problemes, fes-nos saber què no ha funcionat.",
+ "RateFeatureLeaveMessageDislikeExtraEasier": "Alguna part concreta d'aquesta funció que us va resultar difícil d'utilitzar?",
+ "RateFeatureLeaveMessageDislikeExtraMissing": "Quines característiques trobeu a faltar?",
+ "RateFeatureLeaveMessageDislikeExtraSpeed": "Podríeu indicar com de lenta és aquesta funció per a vos? Podríeu compartir quantes visites al mes normalment registreu?",
+ "RateFeatureLeaveMessageDislikeNamedFeature": "Com podem millorar %1$s?",
+ "RateFeatureLeaveMessageLike": "Què és el que més us agrada d'aquesta funció?",
+ "RateFeatureLeaveMessageLikeExtra": "Feu-nos saber més coses sobre com feu servir aquesta funció perquè puguem millorar Matomo encara més.",
+ "RateFeatureLeaveMessageLikeExtraConfigurable": "Hi ha opcions de configuració que trobeu especialment útils? Hi ha altres opcions que us agradaria veure?",
+ "RateFeatureLeaveMessageLikeExtraEasy": "Hi ha alguna cosa més que pugui fer Matomo més fàcil d'utilitzar o millorar la vostra experiència?",
+ "RateFeatureLeaveMessageLikeExtraUseful": "Ens podeu explicar una mica com feu servir aquesta informació i què us sembla més útil?",
+ "RateFeatureLeaveMessageLikeNamedFeature": "Què és el que més us agrada de %1$s?",
+ "RateFeatureOtherReason": "Un altre motiu",
+ "RateFeatureSendFeedbackInformation": "La vostra plataforma Matomo ens enviarà (a l'equip de Matomo) un correu electrònic (incloent la vostra adreça de correu electrònic) perquè puguem posar-nos en contacte amb vos si teniu cap pregunta.",
+ "RateFeatureThankYouTitle": "Gràcies per valorar '%s'!",
+ "RateFeatureTitle": "Us agrada la funció '%s'? Si us plau, feu-nos-ho saber perquè puguem millorar Matomo.",
+ "RateFeatureUsefulInfo": "Informació útil",
+ "ReferBannerEmailShareBody": "Trio Matomo, una alternativa ètica a Google Analytics que m'ofereix el 100%% de propietat de les dades i protegeix les dades dels visitants del meu lloc web.\nComparteixo aquest missatge amb l'esperança que vosaltres també recupereu el poder de les mans de Google i obtingueu la propietat total de les vostres dades.\n\nFeu una ullada a Matomo a https://matomo.org",
+ "ReferBannerEmailShareSubject": "Orienteu-los cap a Matomo Analytics per recuperar el control!",
+ "ReferBannerLonger": "Si us plau, ajudeu-nos a fer difusió de nosaltres perquè més persones tinguin control sobre les seves dades d'anàlisi.",
+ "ReferBannerSocialShareText": "Si utilitzeu Google Analytics, mantingueu el control canviant ara a una alternativa ètica com Matomo!",
+ "ReferBannerTitle": "Creieu en Matomo?",
+ "ReferMatomo": "Referir Matomo",
+ "RemindMeLater": "Recordeu-m'ho més tard",
+ "RemoveOtherLabel": "Vull veure les meves dades \"Altres\"",
+ "ReviewMatomoTitle": "Us agrada Matomo?",
+ "SearchHelpResources": "Cerca recursos d'ajuda de matomo.org",
+ "SendFeedback": "Enviar comentaris",
+ "ThankYou": "Gràcies per ajudar-nos a millorar Matomo!",
+ "ThankYouForSpreading": "Gràcies per fer-ne difusió i crear una web més segura",
+ "ThankYouHeart": "Gràcies per ajudar-nos a millorar Matomo! %1$s",
+ "ThankYourForFeedback": "Agraïm molt els vostres comentaris! %1$s Ens posarem en contacte per si necessitem més informació sobre els vostres comentaris.",
+ "TopLinkTooltip": "Digueu-nos què en penseu o sol·liciteu Suport Professional.",
+ "TrackMultipleSites": "Necessito fer un seguiment de diversos llocs o subdominis",
+ "UserGuides": "Guies d'usuari",
+ "ViewAnswersToFAQ": "Mostra les respostes a les %1$sPreguntes més freqüents%2$s",
+ "ViewUserGuides": "Obteniu informació sobre com configurar Matomo i com analitzar de manera efectiva les vostres dades amb les nostres %1$sguies d'usuari%2$s",
+ "VisitTheForums": "Visiteu els %1$s fòrums%2$s i obteniu ajuda de la comunitat d'usuaris de Matomo",
+ "WontShowAgain": "No tornarem a mostrar aquest missatge."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Feedback/lang/nb.json b/plugins/Feedback/lang/nb.json
index 928186a4e5..380cc2461b 100644
--- a/plugins/Feedback/lang/nb.json
+++ b/plugins/Feedback/lang/nb.json
@@ -1,23 +1,33 @@
{
"Feedback": {
+ "AppreciateFeedback": "Din tilbakemelding verdsettes",
"CommunityHelp": "Hjelp fra Matomo-samfunnet",
"ContactUs": "Kontakt oss",
"DoYouHaveBugReportOrFeatureRequest": "Har du en feil å rapportere eller ny funksjonalitet du ønsker deg?",
"FAQs": "O-S-S",
"FeedbackTitle": "Hjelp oss å forbedre Matomo",
+ "FormNotEnoughFeedbackText": "Ikke glem å dele av deg din tilbakemelding nedenfor.",
"Forums": "Forum",
"HowCanWeHelp": "Hvordan kan vi hjelpe deg?",
"HowToCreateTicket": "Vennligst les anbefalingene for å skrive gode %1$sbug-rapporter%2$s eller %3$sfunksjonalitetsønsker%4$s. Så registrerer du deg eller logger inn i %5$svår issue tracker%6$s og klikker på %7$snew issue%8$s.",
"IWantTo": "Jeg vil:",
"LearnWaysToParticipate": "Lær om alle måtene du kan %1$s bidra%2$s",
"ManuallySendEmailTo": "Send meldingen manuelt til",
+ "MessageBodyValidationError": "Brødteksten er for kort (minimum 10 tegn).",
"NeverAskMeAgain": "Aldri spør meg igjen",
+ "NotTrackingVisits": "Matomo sporerer ingen av besøkene",
"PluginDescription": "Send din tilbakemelding til Matomo-laget. Del dine idéer og forslag til Matomo for å gjøre det til den beste analyseplattformen i verden.",
"PopularHelpTopics": "Populære hjelpeemner",
"PrivacyClaim": "Matomo respekterer ditt %1$spersonvern%2$s og gir deg full datakontroll.",
"ProfessionalHelp": "Profesjonell hjelp",
+ "ProfessionalServicesEmailAlerts": "E-postvarsling om sikkerhetsutgaver av Matomo",
"ProfessionalServicesOfferIntro": "Hvilke tjenester kan du gjøre bruk av?",
"ProfessionalServicesTraining": "Eksklusiv tilgang til Matomo-treningsvideoer",
+ "PurgeOldData": "Jeg vil fjerne noe gammel data",
+ "Question0": "Hva er dine største problemer med Matomo, og hvorfor?",
+ "Question1": "Hva er den tingen du ville forbedret i Matomo, og hvorfor?",
+ "Question2": "Hva er den funksjonen du savner mest i Matomo, og hvorfor?",
+ "Question3": "Hva er hovedmålet ditt i å bruke Matomo?",
"RateFeatureConfigurable": "Konfigurerbar",
"RateFeatureDislikeAddMissingFeatures": "Legg til manglende funksjoner?",
"RateFeatureDislikeFixBugs": "Fiksing av feil",
@@ -26,6 +36,7 @@
"RateFeatureEasyToUse": "Enkelt å bruke",
"RateFeatureLeaveMessageDislike": "Hvordan kan denne funksjonen bli bedre?",
"RateFeatureLeaveMessageDislikeExtra": "La det komme oss til kjenne, slik at Matomo kan forbedres.",
+ "RateFeatureLeaveMessageDislikeExtraBugs": "Beklager at du støtte på problemer. La det komme oss til kjenne hva som ikke virket.",
"RateFeatureLeaveMessageDislikeExtraEasier": "Var det en spesiell del av denne funksjonen som var vanskelig å bruke?",
"RateFeatureLeaveMessageDislikeExtraMissing": "Hvilke funksjoner mangler du?",
"RateFeatureLeaveMessageDislikeExtraSpeed": "Kan du indikere hvor treg denne funksjonen er for deg? Kan du dele hvor mange besøk per måned du vanligvis ville registrert?",
@@ -41,14 +52,23 @@
"RateFeatureThankYouTitle": "Takk for at du rangerer «%s»!",
"RateFeatureTitle": "Liker du funksjonen «%s»? Vennligst ranger den og legg igjen en kommentar",
"RateFeatureUsefulInfo": "Nyttig info",
+ "ReferBannerLonger": "Hjelp til å spre ordet slik at flere kan få kontroll over analysedataen sin.",
"ReferBannerTitle": "Har du tro på Matomo?",
"ReferMatomo": "Henvis Matomo",
"RemindMeLater": "Minn meg på dette senere",
+ "RemoveOtherLabel": "Jeg vil se mine «Andre» data",
+ "ReviewMatomoTitle": "Liker du Matomo?",
"SearchHelpResources": "Søk i matomo.org-hjelperessurser",
"SendFeedback": "Send tilbakemelding",
"ThankYou": "Takk for at du hjelper oss å lage Matomo bedre!",
+ "ThankYouForSpreading": "Takk for at du bruker jungeltelegrafen og gjør nettet tryggere",
+ "ThankYouHeart": "Takk for at du hjelper til å gjøre Matomo bedre. %1$s",
"TopLinkTooltip": "Fortell oss hva du synes eller be om profesjonell støtte.",
+ "TrackMultipleSites": "Jeg vil spore flere sider eller underdomener",
"UserGuides": "Brukerveiledninger",
+ "ViewAnswersToFAQ": "Vis svar på %1$softe stilte spørsmål%2$s",
+ "ViewUserGuides": "Lær mer om hvordan du setter opp Matomo og hvordan du effektivt analyserer din data med %1$sbrukerveiledningen%2$s",
+ "VisitTheForums": "Besøk %1$s forumet%2$s og få hjelp fra gemenskapen av Matomo-brukere",
"WontShowAgain": "Denne meldingen vil ikke bli vist igjen."
}
}
diff --git a/plugins/Feedback/lang/ru.json b/plugins/Feedback/lang/ru.json
index bfde2e6c66..3b480195d5 100644
--- a/plugins/Feedback/lang/ru.json
+++ b/plugins/Feedback/lang/ru.json
@@ -1,12 +1,17 @@
{
"Feedback": {
+ "CommunityHelp": "Помощь сообщества",
+ "ContactUs": "Свяжитесь с нами",
"DoYouHaveBugReportOrFeatureRequest": "У вас есть багрепорт, или предложение по улучшению функционала?",
+ "Forums": "Форумы",
"HowToCreateTicket": "Пожалуйста, ознакомьтесь с рекомендациями по написанию хорошего %1$sbug report%2$s или %3$sfeature request%4$s. После этого зарегистрируйтесь или войдите на %5$sнаш баг-трекер%6$s и создайте %7$sновую проблему%8$s.",
"IWantTo": "Я хочу:",
"LearnWaysToParticipate": "Изучить все способы, с помощью которых вы можете %1$s поучаствовать%2$s",
"ManuallySendEmailTo": "Пожалуйста, отправьте ваше сообщение вручную на",
"PluginDescription": "Направляет обратную связь команде Matomo. Делитесь своими идеями и предложениями чтобы сделать Matomo лучшей аналитической платформой в мире!",
"PrivacyClaim": "Matomo уважает вашу %1$sконфиденциальность%2$s и дает вам полный контроль над вашими данными.",
+ "ProfessionalHelp": "Помощь профессионала",
+ "ProfessionalServicesOfferIntro": "Какими услугами вы можете воспользоваться?",
"RateFeatureLeaveMessageDislike": "Мы сожалеем, что вам не понравилось! Пожалуйста, дайте нам знать что мы можем улучшить.",
"RateFeatureLeaveMessageLike": "Пожалуйста, дайте нам знать, что вам нравится больше всего, или хотите в дальнейшем улучшить.",
"RateFeatureSendFeedbackInformation": "Ваша система Matomo отправит нам(команде Matomo) email (содержащий ваш email адрес) так что мы сможем связаться с вами, если у вас возникли вопросы.",
@@ -14,14 +19,10 @@
"RateFeatureTitle": "Вам нравится эта возможность: «%s»? Пожалуйста, оцените и оставьте комментарий",
"SendFeedback": "Отправить отзыв",
"ThankYou": "Спасибо за помощь в развитии Matomo!",
+ "ThankYourForFeedback": "Мы очень ценим ваш отзыв! %1$s Мы свяжемся с вами, если нам потребуется дополнительная информация о вашем отзыве.",
"TopLinkTooltip": "Расскажите о своей проблеме с Matomo или запросите профессиональную помощь.",
"ViewAnswersToFAQ": "Посмотреть ответы на %1$sЧасто Задаваемые Вопросы%2$s",
"ViewUserGuides": "Узнайте, как настроить Matomo и эффективно анализировать Ваши данные, используя %1$s руководства пользователя%2$s",
- "CommunityHelp": "Помощь сообщества",
- "ProfessionalHelp": "Помощь профессионала",
- "ProfessionalServicesOfferIntro": "Какими услугами вы можете воспользоваться?",
- "ContactUs": "Свяжитесь с нами",
- "VisitTheForums": "Посетите %1$s Форумы%2$s и получите помощь от сообщества пользователей Matomo",
- "Forums": "Форумы"
+ "VisitTheForums": "Посетите %1$s Форумы%2$s и получите помощь от сообщества пользователей Matomo"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Feedback/lang/sq.json b/plugins/Feedback/lang/sq.json
index c1216e0e13..22be0c71b5 100644
--- a/plugins/Feedback/lang/sq.json
+++ b/plugins/Feedback/lang/sq.json
@@ -1,45 +1,84 @@
{
"Feedback": {
+ "AppreciateFeedback": "I çmojmë vërtet përshtypjet tuaja",
"CommunityHelp": "Ndihmë nga Bashkësia",
"ContactUs": "Lidhuni me ne",
"DoYouHaveBugReportOrFeatureRequest": "Keni ndonjë të metë për ta njoftuar, apo kërkesë për veçori të reja?",
- "FAQs": "PBR-ra",
+ "FAQs": "PBR",
+ "FeedbackSubtitle": "Ja shansi juaj ta kërkoni! Ju lutemi, përshkruajeni në sa më shumë hollësi që të mundeni. <br> Përshtypjet tuaja do të na ndihmojnë të përmirësojmë Matomo-n. %1$s",
+ "FeedbackTitle": "Ju lutemi, ndihmonani të përmirësojmë Matomo-n",
+ "FormNotEnoughFeedbackText": "Ju lutemi, mos harroni të na jepni përshtypjet tuaja më poshtë.",
"Forums": "Forume",
"HowCanWeHelp": "Si mund t’ju ndihmojmë?",
- "HowToCreateTicket": "Ju lutemi, lexoni rekomandimet se si të shkruhet si duhet një %1$snjoftim të metash%2$s apo %3$skërkesë për veçori%4$s. Mandej regjistrohuni ose bëni hyrjen te %5$sndjekësi ynë i çështjeve%6$s dhe krijoni një %7$sçështje të re%8$s.",
+ "HowToCreateTicket": "Ju lutemi, lexoni rekomandimet se si të shkruhet si duhet një %1$snjoftim të metash%2$s apo %3$skërkesë për veçori%4$s. Mandej regjistrohuni, ose bëni hyrjen te %5$sndjekësi ynë i çështjeve%6$s dhe krijoni një %7$sçështje të re%8$s.",
"IWantTo": "Dua të:",
"LearnWaysToParticipate": "Njihuni me krejt mënyrat përmes të cilave mund të %1$s merrni pjesë%2$s",
"ManuallySendEmailTo": "Ju lutemi, dërgojeni mesazhin tuaj dorazi te",
+ "MessageBodyValidationError": "Lënda e mesazhit është shumë e shkurtër (minimumi është 10 shenja).",
"NeverAskMeAgain": "Mos më ripyet më kurrë",
- "NotTrackingVisits": "Matomo nuk po gjurmon ndonjë vizitë",
- "PleaseLeaveExternalReviewForMatomo": "Ndajini mendimet tuaja me të tjerët në një nga këto sajte dhe frymëzoni të tjerët të bahen pjesë e revolucionet tonë të të dhënave.",
+ "NotTrackingVisits": "Matomo nuk ndjek ndonjë vizitë",
+ "PleaseLeaveExternalReviewForMatomo": "I çmojmë vërtet përshtypjet tuaja!. Nëse ju tepron një minutë, ju lutemi, ndani me ne mendimet tuaja në një nga këto sajte dhe frymëzoni të tjerët të bëhen pjesë e revolucionit tonë të të dhënave.",
"PluginDescription": "Dërgojani Përshtypjet tuaja Ekipit të Matomo-s. Ndani me ta idetë dhe sugjerimet tuaja për ta bërë Matomo-n platformën më të mirë në botë për analiza!",
+ "Policy": "Duke parashtruar këtë formular, do të na dërgohen mesazhi juaj dhe adresa juaj email. Informacioni do të përdoret vetëm për të përmirësuar produktet dhe shërbimet tona. Të dhënat tuaja do të përpunohen nga ne, shërbimi ynë i strehimit dhe shërbimi ynë i çështjeve të asistencës. Për më tepër hollësi, hidhini një sy %1$sRregullave të Privatësisë së Matomo-s%2$s.",
"PopularHelpTopics": "Tema popullore ndihme",
"PrivacyClaim": "Matomo respekton %1$sprivatësinë%2$s tuaj dhe ju jep kontroll të plotë mbi të dhënat tuaja.",
"ProfessionalHelp": "Ndihmë Profesionale",
- "ProfessionalServicesDedicatedSupport": "Asistencë enkas prej një anëtari të ekipit Matomo përgjatë çdo hapi të udhës",
+ "ProfessionalServicesDedicatedSupport": "Asistencë enkas prej një anëtari të ekipit Matomo përgjatë çdo hapi",
"ProfessionalServicesEmailAlerts": "Sinjalizime me email për hedhje në qarkullim lidhur me sigurinë për Matomo-n",
- "ProfessionalServicesIntro": "Me një Matomo On-Premise Support Subscription, lërjani ekipit tonë të sprovuar t’ju asistojë <em>online</em> lidhur me përdorimin e Matomo Analytics që të fuqizoni biznesin tuaj.",
+ "ProfessionalServicesIntro": "Me një Matomo On-Premise Support Subscription, lërjani ekipit tonë të sprovuar t’ju asistojë &lt;em&gt;online&lt;/em&gt; lidhur me përdorimin e Matomo Analytics që të fuqizoni biznesin tuaj.",
"ProfessionalServicesOfferIntro": "Prej cilave shërbime mund të përfitoni?",
"ProfessionalServicesOnboarding": "Pyetje për fillimin dhe takim me një anëtar të Asistencës Matomo",
- "ProfessionalServicesSupport": "Shërbim kërkesash <em>online</em> 24/7",
+ "ProfessionalServicesSupport": "Shërbim kërkesash asistence &lt;em&gt;online&lt;/em&gt; 24/7",
"ProfessionalServicesTraining": "Përdorim ekskluziv videosh trajnimi Matomo",
"PurgeOldData": "Dua të heq ca të dhëna të vjetra",
- "RateFeatureLeaveMessageDislike": "Na vjen keq që dëgjojmë se s’ju pëlqen! Ju lutemi, na thoni se si mund ta përmirësojmë.",
- "RateFeatureLeaveMessageLike": "Gëzohemi që ju pëlqen! Ju lutemi, na thoni se çfarë ju pëlqeu më shumë ose nëse keni ndonjë kërkesë për veçori të re.",
+ "Question0": "Cilat janë problemet tuaja më të mëdha dhe pikat e zorshme me Matomo-n dhe pse?",
+ "Question1": "Cila është gjëja e vetme që do të donit të shihnit të përmirësohet te Matomo dhe pse?",
+ "Question2": "Cila është veçoria që ju mungon te Matomo dhe pse?",
+ "Question3": "Cili është objektivi juaj kryesor për përdorimin e Matomo-s?",
+ "Question4": "Cili është shqetësimi juaj kryesor rreth Matomo-s?",
+ "RateFeatureConfigurable": "I formësueshëm",
+ "RateFeatureDislikeAddMissingFeatures": "Shtoni veçori që mungojnë",
+ "RateFeatureDislikeFixBugs": "Ndreqni të meta",
+ "RateFeatureDislikeMakeEasier": "Bëjeni më të lehtë për t’u përdorur",
+ "RateFeatureDislikeSpeedUp": "Përmirësoni shpejtësinë",
+ "RateFeatureEasyToUse": "I lehtë për t’u përdorur",
+ "RateFeatureLeaveMessageDislike": "Si mund ta përmirësojmë këtë veçori?",
+ "RateFeatureLeaveMessageDislikeExtra": "Ju lutemi, na bëni të ditur se si ç’mund të bëjmë më mirë që të mund të përmirësojmë Matomo-n.",
+ "RateFeatureLeaveMessageDislikeExtraBugs": "Na vjen keq që hasët probleme, ju lutemi, na lejoni të dimë më tepër se ç’nuk funksionoi.",
+ "RateFeatureLeaveMessageDislikeExtraEasier": "A pati një pjesë të veçantë në këtë veçori që ju duk e vështirë për t’u përdorur?",
+ "RateFeatureLeaveMessageDislikeExtraMissing": "Cilat veçori mungojnë për ju?",
+ "RateFeatureLeaveMessageDislikeExtraSpeed": "A mund të jepni një tregues se sa e ngadaltë është kjo veçori për ju? A mund të na tregoni se sa vizita në muaj do të regjistronit zakonisht?",
+ "RateFeatureLeaveMessageDislikeNamedFeature": "Si mund ta përmirësojmë %1$s?",
+ "RateFeatureLeaveMessageLike": "Ç’ju pëlqen më shumë rreth kësaj veçorie?",
+ "RateFeatureLeaveMessageLikeExtra": "Ju lutemi, na lejoni të dimë më tepër se si e përdorni këtë veçori, që të mund të përmirësojmë më tej Matomo-n.",
+ "RateFeatureLeaveMessageLikeExtraConfigurable": "A ka mundësi formësimi që ju duken veçanërisht të dobishme? A ka ndonjë mundësi tjetër që do të donit ta shihnit të pranishme?",
+ "RateFeatureLeaveMessageLikeExtraEasy": "A ka ndonjë gjë tjetër që do ta bënte Matomo-n të lehtë për t’u përdorur, ose që do të përmirësonte punimin tuaj me të?",
+ "RateFeatureLeaveMessageLikeExtraUseful": "A mund të tregoni pakëz se si e përdorni këtë informacion dhe ç’ju duket më e dobishme në të?",
+ "RateFeatureLeaveMessageLikeNamedFeature": "Ç’ju pëlqen më tepër te %1$s?",
+ "RateFeatureOtherReason": "Arsye tjetër",
"RateFeatureSendFeedbackInformation": "Platforma juaj Matomo do të na dërgojë (ekipit Matomo) një email (përfshi adresën tuaj email), që të mund të lidhemi me ju, nëse keni ndonjë pyetje.",
"RateFeatureThankYouTitle": "Faleminderit për vlerësimin e '%s'!",
- "RateFeatureTitle": "Ju pëlqen veçoria '%s'? Ju lutemi, vlerësojeni dhe lini një koment",
- "RemindMeLater": "Kujtomë më vonë",
+ "RateFeatureTitle": "Ju pëlqen veçoria '%s'? Ju lutemi, na e bëni të ditur, që të mund të përmirësojmë Matomo-n.",
+ "RateFeatureUsefulInfo": "Informacion i dobishëm",
+ "ReferBannerEmailShareBody": "Zgjodha Matomo-n, një alternativë etike ndaj Google Analytics, që më jep pronësi 100%% të të dhënave dhe mbron të dhënat e vizitorëve të sajtit tim.\nKëtë mesazh e ndaj me ju me shpresën se edhe ju do të rimerrni fuqinë nga Google dhe të kini pronësi të plotë të të dhënave tuaja.\n\nShihni për Matomo-n te https://matomo.org",
+ "ReferBannerEmailShareSubject": "Tregojuni për Matomo Analytics që tani, që të rifitojnë kontrollin!",
+ "ReferBannerLonger": "Ndihmonani të përhapet fjala rreth nesh, që më tepër persona të kenë kontrollin mbi të dhënat e tyre statistikore.",
+ "ReferBannerSocialShareText": "Nëse përdorni Google Analytics, kini kontrollin, duke kaluar te një alternativë etike si Matomo-ja që tani!",
+ "ReferBannerTitle": "Besoni në Matomo?",
+ "ReferMatomo": "Tregojuni për Matomo-n",
+ "RemindMeLater": "Kujtoma më vonë",
"RemoveOtherLabel": "Dua të shoh të dhëna 'Të tjera' të miat",
"ReviewMatomoTitle": "Ju pëlqen Matomo?",
"SearchHelpResources": "Kërkoni për burime ndihme te matomo.org",
"SendFeedback": "Dërgoji Përshtypjet",
"ThankYou": "Faleminderit që na ndihmoni ta bëjmë më të mirë Matomo-n!",
+ "ThankYouForSpreading": "Faleminderit që përhapni fjalën dhe që krijoni një web më të siguruar",
+ "ThankYouHeart": "Faleminderit që na ndihmo ta bëjmë më të mirë Matomo-n! %1$s",
+ "ThankYourForFeedback": "I çmojmë vërtet përshtypjet tuaja! %1$s Do të lidhemi, nëse na duhen më tepër hollësi mbi mendimet tuaja.",
"TopLinkTooltip": "Na thoni se ç’mendim keni, ose kërkoni Asistencë Profesionale.",
- "TrackMultipleSites": "Kam nevojë të gjurmoj disa sajte apo nënpërkatësi",
+ "TrackMultipleSites": "Kam nevojë të ndjek disa sajte apo nënpërkatësi",
"UserGuides": "Udhërrëfyes përdoruesi",
- "ViewAnswersToFAQ": "Shihni përgjigjet te %1$sPyetje të Bëra Shpesh%2$s",
+ "ViewAnswersToFAQ": "Shihni përgjigjet te %1$sPyetje të Bëra Rëndom%2$s",
"ViewUserGuides": "Mësoni përmes %1$sudhërrëfyesit tonë për përdoruesit%2$s se si ta formësoni Matomo-n dhe si të analizoni me efikasitet të dhënat tuaja",
"VisitTheForums": "Vizitoni %1$s Forumet%2$s dhe merrni ndihmë prej bashkësisë së përdoruesve të Matomo-s",
"WontShowAgain": "S’do ta rishfaqim këtë mesazh."
diff --git a/plugins/Feedback/templates/index.twig b/plugins/Feedback/templates/index.twig
index 73c149650f..5a4cbc70ad 100644
--- a/plugins/Feedback/templates/index.twig
+++ b/plugins/Feedback/templates/index.twig
@@ -23,14 +23,14 @@
<h4>{{'Feedback_PopularHelpTopics'|translate}}</h4>
{% for helpTopic in popularHelpTopics %}
- <p> &bull; <a rel="noreferrer noopener" target="_blank" href="{{helpTopic.url|e('html_attr')}}">{{helpTopic.title|translate}}</a></p>
+ <p> &bull; <a rel="noreferrer noopener" target="_blank" href="{{helpTopic.url|e('html_attr')}}?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides">{{helpTopic.title|translate}}</a></p>
{% endfor %}
<h4>{{ 'Feedback_CommunityHelp'|translate }}</h4>
- <p> &bull; <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/">{{ 'Feedback_UserGuides'|translate }}</a> - {{ 'Feedback_ViewUserGuides'|translate("","") }}.</p>
- <p> &bull; <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/faq/">{{ 'Feedback_FAQs'|translate }}</a> - {{ 'Feedback_ViewAnswersToFAQ'|translate("","") }}.</p>
+ <p> &bull; <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=docs">{{ 'Feedback_UserGuides'|translate }}</a> - {{ 'Feedback_ViewUserGuides'|translate("","") }}.</p>
+ <p> &bull; <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/faq/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=FAQs">{{ 'Feedback_FAQs'|translate }}</a> - {{ 'Feedback_ViewAnswersToFAQ'|translate("","") }}.</p>
<p> &bull; <a target="_blank" rel="noreferrer noopener" href="https://forum.matomo.org/">{{ 'Feedback_Forums'|translate }}</a> - {{ 'Feedback_VisitTheForums'|translate("","") }}.</p>
- <p> &bull; <a target="_blank" rel="noreferrer noopener" href="{{ linkTo({'module':"API",'action':"glossary"}) }}">{{ 'API_Glossary'|translate }}</a> - {{ 'API_LearnAboutCommonlyUsedTerms2'|translate }}</p>
+ <p> &bull; <a target="_blank" rel="noreferrer noopener" href="{{ linkTo({'module':"API",'action':"glossary"}) }}&mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=glossary">{{ 'API_Glossary'|translate }}</a> - {{ 'API_LearnAboutCommonlyUsedTerms2'|translate }}</p>
<h4>{{ 'Feedback_ProfessionalHelp'|translate }}</h4>
<p>{{ 'Feedback_ProfessionalServicesIntro'|translate }}</p>
@@ -69,16 +69,16 @@
<div piwik-content-block content-title="Premium products">
<p>Grow your business, understand your audience better and increase your sales and conversions with a premium plugin:
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/users-flow/'>Users Flow</a>: a visual representation of the most popular paths your users take through your website or app.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/ab-testing-learn-more/'>A/B Testing</a>: compare different versions of your websites or apps and detect the winning variation.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/conversion-funnels'>Funnels</a>: identify and understand where your visitors drop off in your conversion funnels.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/form-analytics/'>Form Analytics</a>: increase conversions and get better leads from your website forms.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/media-analytics-website/'>Video and Audio Analytics</a>: powerful insights into how your audience watches your videos and listens to your audio.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/roll-up-reporting/'>Roll-Up Reporting</a>: aggregate data from multiple websites, apps and shops into a Roll-Up site to gain new insights.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/search-keywords-performance/'>Search Keywords Performance</a>: all keywords searched by your users on Google+Bing+Yahoo into your Matomo reports.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/activity-log/'>Audit log</a>: better security and problem diagnostic with a detailed audit log of Matomo user activities.</p>
- <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/white-label/'>White Label</a>: give your clients access to their analytics reports where all Matomo-branded widgets are removed.</p>
- <p> &bull; <strong><a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/premium-plugins'>All premium plugins.</a></strong></p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/users-flow/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Users Flow</a>: a visual representation of the most popular paths your users take through your website or app.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/ab-testing-learn-more/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>A/B Testing</a>: compare different versions of your websites or apps and detect the winning variation.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/conversion-funnels?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Funnels</a>: identify and understand where your visitors drop off in your conversion funnels.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/form-analytics/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Form Analytics</a>: increase conversions and get better leads from your website forms.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/media-analytics-website/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Video and Audio Analytics</a>: powerful insights into how your audience watches your videos and listens to your audio.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/roll-up-reporting/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Roll-Up Reporting</a>: aggregate data from multiple websites, apps and shops into a Roll-Up site to gain new insights.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/search-keywords-performance/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Search Keywords Performance</a>: all keywords searched by your users on Google+Bing+Yahoo into your Matomo reports.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/activity-log/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>Audit log</a>: better security and problem diagnostic with a detailed audit log of Matomo user activities.</p>
+ <p> &bull; <a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/white-label/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>White Label</a>: give your clients access to their analytics reports where all Matomo-branded widgets are removed.</p>
+ <p> &bull; <strong><a rel='noreferrer noopener' target='_blank' href='https://matomo.org/recommends/premium-plugins?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides'>All premium plugins.</a></strong></p>
</div>
<div piwik-content-block content-title="{{ 'Feedback_DoYouHaveBugReportOrFeatureRequest'|translate|e('html_attr') }}">
diff --git a/plugins/Feedback/tests/Integration/FeedbackTest.php b/plugins/Feedback/tests/Integration/FeedbackTest.php
index 4f8fffba20..f86ea35098 100644
--- a/plugins/Feedback/tests/Integration/FeedbackTest.php
+++ b/plugins/Feedback/tests/Integration/FeedbackTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Feedback\tests\Unit;
-use CpChart\Chart\Data;
use Piwik\Date;
use Piwik\Option;
use Piwik\Piwik;
diff --git a/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png b/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
index 33c8dec8ee..3d8216ef4f 100644
--- a/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
+++ b/plugins/Feedback/tests/UI/expected-screenshots/FeedbackForm_show.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:89550e1ff12411bb6bf3e727cc45417ec492c3393d780145b89566f26bb8cab9
-size 243791
+oid sha256:c8bc489466627e78d4bcd1de11524f306528edac2f5d1035ddf98b50628f3249
+size 243794
diff --git a/plugins/GeoIp2/GeoIP2AutoUpdater.php b/plugins/GeoIp2/GeoIP2AutoUpdater.php
index 29bcafd975..2028e9cb83 100644
--- a/plugins/GeoIp2/GeoIP2AutoUpdater.php
+++ b/plugins/GeoIp2/GeoIP2AutoUpdater.php
@@ -14,6 +14,7 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
+use Piwik\Filesystem;
use Piwik\Http;
use Piwik\Log;
use Piwik\Option;
@@ -195,7 +196,14 @@ class GeoIP2AutoUpdater extends Task
public static function getTemporaryFolder($file, $isDownload = false)
{
- return \Piwik\Container\StaticContainer::get('path.tmp') . '/latest/' . $file . ($isDownload ? '.download' : '');
+ $folder = \Piwik\Container\StaticContainer::get('path.tmp') . '/latest/';
+ if (!is_dir($folder)) {
+ Filesystem::mkdir($folder);
+ }
+ if (!is_writable($folder)) {
+ throw new \Exception("GeoIP2AutoUpdater: Can't create temporary file for download.");
+ }
+ return $folder . $file . ($isDownload ? '.download' : '');
}
/**
diff --git a/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php b/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
index 238782a0f0..39ba487065 100644
--- a/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
+++ b/plugins/GeoIp2/LocationProvider/GeoIp2/Php.php
@@ -12,13 +12,11 @@ use GeoIp2\Database\Reader;
use GeoIp2\Exception\AddressNotFoundException;
use MaxMind\Db\Reader\InvalidDatabaseException;
use Piwik\Date;
-use Piwik\Common;
use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\GeoIp2\GeoIP2AutoUpdater;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
-use Piwik\Plugins\Marketplace\Api\Exception;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\SettingsPiwik;
use Piwik\View;
diff --git a/plugins/GeoIp2/lang/ca.json b/plugins/GeoIp2/lang/ca.json
index 9c75a53f7e..120931f8c0 100644
--- a/plugins/GeoIp2/lang/ca.json
+++ b/plugins/GeoIp2/lang/ca.json
@@ -1,24 +1,62 @@
{
"GeoIp2": {
- "AssumingNonApache": "No s'ha pogut trobar la funció apache_get_modules, s'asumeix que s'utilitza un servidor web diferent del Apache.",
- "CannotFindGeoIPServerVar": "La variable %s no està definida. Pot ser que el vostre servidor web no estigui configurat correctament.",
+ "AssumingNonApache": "No es pot trobar la funció apache_get_modules, suposem que el servidor web no és Apache.",
+ "AutomaticSetup": "Configura automàticament la geolocalització mitjançant una base de dades dbip",
+ "AutomaticSetupDescription": "Per a una correcta geolocalització, Matomo requereix una base de dades externa. Amb aquesta opció, Matomo es configurarà automàticament per descarregar i utilitzar la darrera base de dades dbip a nivell de ciutat. [%1$sMostra les condicions de llicència%2$s]",
+ "CannotFindGeoIPDatabaseInArchive": "No s'ha pogut trobar cap base de dades DBIP/GeoIP vàlida a l'arxiu tar %1$s!",
+ "CannotFindGeoIPServerVar": "La variable %s no està definida. Pot ser que el vostre servidor web no estigui correctament configurat.",
"CannotListContent": "No s'ha pogut llistar el contingut de %1$s: %2$s",
+ "CannotSetupGeoIPAutoUpdating": "Sembla que esteu emmagatzemant les vostres bases de dades de geolocalització fora de Matomo (ho sabem perquè no hi ha bases de dades al subdirectori misc, però la vostra GeoIP funciona). Matomo no pot actualitzar automàticament les vostres bases de dades de geolocalització si es troben fora del directori misc.",
+ "CannotUnzipGeoIPFile": "No s'ha pogut descomprimir el fitxer GeoIP a %1$s: %2$s",
+ "DownloadNewDatabasesEvery": "Actualitza les bases de dades cada",
"DownloadingDb": "Descarregant %s",
- "DownloadNewDatabasesEvery": "Actualitza la base de dades cada",
- "FoundApacheModules": "El Matomo ha trobat els següents mòduls d'Apache",
- "GeoIPImplHasAccessTo": "Aquesta implementació de GeoIP té accés als següents tipus de bases de dades",
+ "FatalErrorDuringDownload": "S'ha produït un error fatal en baixar aquest fitxer. Pot ser que hi hagi alguna cosa malament amb la vostra connexió a Internet, amb la base de dades de geolocalització que heu baixat o amb Matomo. Proveu de baixar-lo i instal·lar-lo manualment.",
+ "FoundApacheModules": "Matomo ha trobat els següents mòduls d'Apache",
"GeoIPDatabases": "Base de dades GeoIP",
- "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Nota: L'anonimització IP no té cap efecte amb les localitzacions reportades per aquest proveïdor. Abans d'utilitzar amb l'anonimització IP, assegureu-vos que no viola cap llei de privacitat a la que podeu estar subjectes.",
- "GeoIPNoServerVars": "El Matomo no ho pogut trobar cap variable GeoIP a %s",
- "GeoIPServerVarsFound": "El Matomo detecta les següents variables GeoIP a %s",
- "HowToSetupGeoIPIntro": "Sembla que no teniu configurada la Geolocalització. Es tracta d'una característica molt útil, i sense ella no podreu veure de forma acurada la localització completa dels vostres visitants. Tot seguit us expliquem com podeu començar a fer-la servir:",
- "HowToInstallApacheModule": "Com instal·lo el módul GeoIP per l'Apache?",
- "HowToInstallNginxModule": "Com instal·lo el modul GeoIP per Nginx?",
+ "GeoIPImplHasAccessTo": "Aquesta implementació de GeoIP té accés als següents tipus de bases de dades",
+ "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Nota: l'anonimat d'IP no té cap efecte sobre les ubicacions informades per aquest proveïdor. Abans d'utilitzar-lo amb l'anonimat d'IP, assegureu-vos que no infringeixi cap llei de privadesa a la qual estigueu subjecte.",
+ "GeoIPLocationProviderNotRecommended": "La geolocalització funciona, però no esteu fent servir cap dels proveïdors recomanats.",
+ "GeoIPNoDatabaseFound": "Aquesta implementació de GeoIP no ha pogut trobar cap base de dades.",
+ "GeoIPNoServerVars": "Matomo no ho pogut trobar cap variable GeoIP %s.",
+ "GeoIPServerVarsFound": "Matomo detecta les següents variables GeoIP %s",
+ "GeoIPUpdaterInstructions": "Introduïu els enllaços de descàrrega de les vostres bases de dades a continuació. Si heu comprat bases de dades a %3$sdbip%4$s o %1$sMaxMind%2$s, podeu trobar aquests enllaços al vostre compte dbip o MaxMind. Poseu-vos en contacte amb el vostre proveïdor de bases de dades de geolocalització si teniu problemes per accedir-hi.",
+ "GeoIPUpdaterIntro": "Actualment Matomo gestiona les actualitzacions de les següents bases de dades",
+ "GeoIPVariablesConfigurationHere": "Podeu configurar les variables de servidor usades %1$saquí%2$s.",
+ "GeoLiteCityLink": "Si utilitzeu la base de dades dbip city lite, feu servir aquest enllaç: %1$s%2$s%3$s",
+ "HowToInstallApacheModule": "Com instal·lo el módul GeoIP per a l'Apache?",
+ "HowToInstallNginxModule": "Com instal·lo el modul GeoIP per a Nginx?",
+ "HowToSetupGeoIP": "Com configurar la geolocalització precisa amb dbip",
+ "HowToSetupGeoIPIntro": "Sembla que no teniu una configuració de geolocalització precisa. Aquesta és una característica útil i sense ella no veureu la informació d'ubicació precisa i completa per als vostres visitants. A continuació us indiquem com podeu començar a utilitzar-lo ràpidament:",
+ "HowToSetupGeoIP_Step1": "%1$sDescarregueu%2$s la base de dades DBIP City Lite des de %3$sdbip%4$s.",
+ "HowToSetupGeoIP_Step2": "Extraieu aquest fitxer i copieu el resultat %1$s al subdirectori Matomo %2$smisc%3$s i canvieu-li el nom a %4$s (es pot ferper FTP o SSH).",
+ "HowToSetupGeoIP_Step3": "Torna a carregar aquesta pantalla. El proveïdor %1$sDBIP/GeoIP (PHP)%2$s ara estarà %3$sinstal·lat%4$s. Seleccioneu-lo.",
+ "HowToSetupGeoIP_Step4": "I ja heu acabat! Acabeu de configurar Matomo perquè utilitzi DBIP, la qual cosa significa que podreu veure les regions i ciutats dels vostres visitants juntament amb informació de país molt precisa.",
"HttpServerModule": "Mòdul del Servidor HTTP",
- "InvalidGeoIPUpdatePeriod": "Període invàlid de l'actualització GeoIP: %1$s. Els valors vàlids són %2$s.",
- "ISPDatabase": "Base de dades de ISP",
- "LocationDatabase": "Base de dades de Localització",
- "LocationDatabaseHint": "Una base de dades de localització és una base de dades de països, regions o ciutats.",
- "UnsupportedArchiveType": "S'ha trobat un tipus de fitxer no soportat %1$s."
+ "IPurchasedGeoIPDBs": "He comprat bases de dades més precises a %3$sdbip%4$s o %1$sMaxMind%2$s i vull configurar actualitzacions automàtiques.",
+ "ISPDatabase": "Base de dades d'ISP",
+ "ISPRequiresProviderPlugin": "El seguiment dels proveïdors de serveis d'Internet requereix que el connector del proveïdor estigui instal·lat i activat.",
+ "IWantToDownloadFreeGeoIP": "Vull descarregar la base de dades DBIP gratuïta...",
+ "InvalidGeoIPUpdateHost": "L'hoste de l'URL d'actualització de GeoIP %1$s no és de confiança. Per permetre la baixada d'actualitzacions de GeoIP des d'amfitrions diferents de %2$s, ajusteu el paràmetre de %3$s a la configuració.",
+ "InvalidGeoIPUpdatePeriod": "Període no vàlid per a l'actualització de GeoIP: %1$s. Els valors vàlids són %2$s.",
+ "LocationDatabase": "Base de dades d'ubicació",
+ "LocationDatabaseHint": "Una base de dades d'ubicacions és una base de dades de país, regió o ciutat.",
+ "LocationProviderDesc_Php": "Aquest proveïdor d'ubicació és el més senzill d'instal·lar ja que no requereix configuració del servidor (ideal per a allotjament compartit!). Utilitza una base de dades DBIP o GeoIP 2 i l'API PHP de MaxMind per determinar amb precisió la ubicació dels vostres visitants.",
+ "LocationProviderDesc_Php_WithExtension": "Aquest proveïdor d'ubicació és més ràpid amb l'extensió instal·lada %1$smaxminddb%2$s.",
+ "LocationProviderDesc_ServerModule": "Aquest proveïdor d'ubicació utilitza el mòdul GeoIP 2 que s'ha instal·lat al vostre servidor HTTP. Aquest proveïdor és ràpid i precís, però %1$snomés es pot utilitzar amb el seguiment normal del navegador.%2$s",
+ "LocationProviderDesc_ServerModule2": "Si heu d'importar fitxers de registre o fer alguna altra cosa que requereixi configurar adreces IP, utilitzeu la implementació %3$sPHP GeoIP 2%4$s i instal·leu %1$sl'extensió maxmindb%2$s.",
+ "MalFormedUpdateUrl": "L'URL %1$s no sembla vàlida. Assegureu-vos d'introduir una URL vàlida que comenci per http:// o https://",
+ "NotManagingGeoIPDBs": "Actualment Matomo no gestiona cap base de dades DBIP o MaxMind.",
+ "PluginDescription": "Proporciona proveïdors d'ubicació DBIP / GeoIP2.",
+ "ServerBasedVariablesConfiguration": "Configuració de variables de servidor utilitzades pels mòduls de servidor GeoIP 2",
+ "ServerVariableFor": "Variable de servidor per a %s",
+ "SetupAutomaticUpdatesOfGeoIP": "Configurar actualitzacions automàtiques de bases de dades de geolocalització",
+ "ShowCustomServerVariablesConfig": "Utilitzo el mòdul del servidor Geoip2 (Nginx, Apache...) i vull configurar les variables del servidor",
+ "ThisUrlIsNotAValidGeoIPDB": "El fitxer descarregat no és una base de dades de geolocalització vàlida. Torneu a comprovar l'URL o descarregueu el fitxer manualment.",
+ "UnsupportedArchiveType": "S'ha trobat el tipus d'arxiu no compatible %1$s.",
+ "UpdaterHasNotBeenRun": "L'actualització no s'ha executat mai.",
+ "UpdaterIsNotScheduledToRun": "No està previst que s'executi en el futur.",
+ "UpdaterScheduledForNextRun": "Està programat per activar-se durant la propera execució de l'ordre cron core:archive.",
+ "UpdaterWasLastRun": "L'actualitzador es va executar per darrera vegada el %s.",
+ "UpdaterWillRunNext": "Està programat per executar-se el %s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/GeoIp2/lang/nb.json b/plugins/GeoIp2/lang/nb.json
index e19404e832..4e8b604818 100644
--- a/plugins/GeoIp2/lang/nb.json
+++ b/plugins/GeoIp2/lang/nb.json
@@ -6,9 +6,11 @@
"CannotFindGeoIPDatabaseInArchive": "Fant ingen gyldig DB-IP/GeoIP-database i TAR-arkivet %1$s.",
"CannotFindGeoIPServerVar": "%s-variabelen er ikke satt. Det kan hende tjeneren din ikke er satt opp rett.",
"CannotListContent": "Kunne ikke vise innhold for %1$s: %2$s",
+ "CannotSetupGeoIPAutoUpdating": "Det ser ut til at du har lagret dine geoposisjoneringsdatabaser utenfor Matomo (det er ingen databaser i «misc»-undermappen, men din GeoIP virker). Matomo kan ikke oppdatere dine geoposisjoneringsdatabaser automatisk hvis de ikke befinner seg i «misc».",
"CannotUnzipGeoIPFile": "Kunne ikke pakke ut GeoIP-fil i %1$s: %2$s",
"DownloadNewDatabasesEvery": "Oppdater databasene hver",
"DownloadingDb": "Laster ned %s",
+ "FatalErrorDuringDownload": "En fatal feil inntraff under nedlasting av denne filen. Det kan hende det er noe galt med tilkoblingen din til Internett, med geoposisjoneringsdatabasen du lastet ned, eller Matomo. Prøv å laste ned og installere det manuelt.",
"FoundApacheModules": "Matomo fant følgende Apache-moduler",
"GeoIPDatabases": "GeoIP-databaser",
"GeoIPImplHasAccessTo": "Denne GeoIP-implementasjonen har tilgang til følgende databasetyper",
@@ -16,12 +18,17 @@
"GeoIPLocationProviderNotRecommended": "Geoposisjonering virker, men du bruker ikke en av de anbefalte tilbyderne.",
"GeoIPNoDatabaseFound": "Denne GeoIP-implementasjonen kunne ikke finne noen database.",
"GeoIPNoServerVars": "Matomo kan ikke finne noen GeoIP %s variabler.",
+ "GeoIPServerVarsFound": "Matomo oppdager følgende GeoIP %s-variabler",
+ "GeoIPUpdaterInstructions": "Skriv inn nedlastingslenkene for dine databaser nedenfor. Hvis du har kjøpt databaser fra %3$sDB-IP%4$s eller %1$sMaxMind%2$s, finner du alle disse lenkene i din DB-IP- eller MaxMind-konto. Kontakt din geoposisjoneringsdatabasetilbyder hvis du har problemer med å finne dem.",
"GeoIPUpdaterIntro": "Matomo behandler nå oppdateringer for følgende databaser",
"HowToInstallApacheModule": "Hvordan installerer jeg GeoIP-modulen for Apache?",
"HowToInstallNginxModule": "Hvordan installerer jeg GeoIP-modulen for Nginx?",
"HowToSetupGeoIP_Step1": "%1$sLast ned%2$s DB-IP-bydatabasen fra %3$sDB-IP%4$s.",
+ "HowToSetupGeoIP_Step2": "Pakk ut denne filen og kopier resultatet, %1$s inn i %2$smisc%3$s-Matomoundermappen og endre navnet til %4$s (du kan gjøre dette enten med FTP eller SSH).",
+ "HowToSetupGeoIP_Step4": "Du er ferdig. Du har akkurat satt opp Matomo til å bruke DB-IP, noe som betyr at du vil kunne se områdene og byene for dine besøkende sammen med veldig nøyaktig landsinfo.",
"HttpServerModule": "HTTP Server-modul",
"ISPDatabase": "ISP-database",
+ "ISPRequiresProviderPlugin": "Sporing av Internett-tjenestetilbydere krever at tilbyder-programtillegget er installert og aktivert.",
"LocationDatabase": "Lokasjonsdatabase",
"ServerVariableFor": "Tjenervariabel for %s"
}
diff --git a/plugins/GeoIp2/lang/sq.json b/plugins/GeoIp2/lang/sq.json
index d3fc5a4471..d9cd4124eb 100644
--- a/plugins/GeoIp2/lang/sq.json
+++ b/plugins/GeoIp2/lang/sq.json
@@ -1,62 +1,62 @@
{
"GeoIp2": {
- "AssumingNonApache": "S’gjendet dot funksioni apache_get_modules function, po merret i mirëqenë si shërbyes non-Apache.",
+ "AssumingNonApache": "S’gjendet dot funksioni apache_get_modules function, po merret i mirëqenë si shërbyes jo Apache.",
"AutomaticSetup": "Formësoje automatikisht gjeovendëzimin duke përdorur një bazë të dhënash dbip",
"AutomaticSetupDescription": "Për gjeovendëzim si duhet, Matomo-ja lyp një bazë të jashtme të dhënash. Duke përdorur këtë mundësi, Matomo-ja do të formësohet automatikisht të shkarkojë dhe përdorë bazën më të freskët të të dhënave dbip në nivel qyteti. [%1$sShihni kushtet e licencimit%2$s]",
- "CannotFindGeoIPDatabaseInArchive": "S’u gjet dot bazë e vlefshme të dhënash DBIP \/ GeoIP te arkivi tar %1$s!",
+ "CannotFindGeoIPDatabaseInArchive": "S’u gjet dot bazë e vlefshme të dhënash DBIP / GeoIP te arkivi tar %1$s!",
"CannotFindGeoIPServerVar": "Ndryshorja %s s’është rregulluar. Shërbyesi juaj mund të mos jetë formësuar si duhet.",
"CannotListContent": "S’paraqet dot lëndën për %1$s: %2$s",
"CannotSetupGeoIPAutoUpdating": "Duket se bazat tuaja të të dhënave GeoIP i depozitoni jashtë Matomo-s (e dimë, ngaqë s’ka baza të dhënash te nëndrejtoria misc, por GeoIP-ja juaj funksionon). Matomo s’i përditëson dot vetvetiu bazat tuaja të të dhënave për gjeovendëzim, nëse gjenden jashtë drejtorisë misc.",
"CannotUnzipGeoIPFile": "S’u shzipua dot kartela GeoIP te %1$s: %2$s",
- "DownloadingDb": "Po shkarkohet %s",
"DownloadNewDatabasesEvery": "Përditësoji bazat e të dhënave çdo",
- "FatalErrorDuringDownload": "Ndodhi një gabim fatal teksa shkarkohej kjo kartelë. Mund të ketë diçka gabim me lidhjen tuaj internet, me bazën tuaj të të dhënave për gjeovendëzim që shkarkuat ose me Matomo-n. Provoni ta shkarkoni dhe instaloni dorazi.",
+ "DownloadingDb": "Po shkarkohet %s",
+ "FatalErrorDuringDownload": "Ndodhi një gabim fatal teksa shkarkohej kjo kartelë. Mund të ketë diçka gabim me lidhjen tuaj internet, me bazën tuaj të të dhënave për gjeovendëzim që shkarkuat, ose me Matomo-n. Provoni ta shkarkoni dhe instaloni dorazi.",
"FoundApacheModules": "Matomo gjeti modulet Apache vijues",
- "GeoIPImplHasAccessTo": "Ky sendërtim i GeoIP-së mund të përdorë llojet vijuese të bazave të të dhënave",
"GeoIPDatabases": "Baza të dhënash GeoIP",
- "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Shënime: Anonimizimi i IP-ve nuk ka efekt për vendet e raportuara nga ky furnizues. Përpara se ta ta përdorni me anonimizim IP-sh, sigurohuni që kjo nuk cenon ndonjë ligj privatësie subjekt i të cilit mund të jeni.",
- "GeoIPLocationProviderNotRecommended": "Gjeovendëzimi funksionon, por nuk po përdorni një nga furnizuesit e këshilluar.",
+ "GeoIPImplHasAccessTo": "Ky sendërtim i GeoIP-së mund të përdorë llojet vijuese të bazave të të dhënave",
+ "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Shënime: Anonimizimi i IP-ve nuk ka efekt për vendet e raportuara nga ky furnizues. Përpara se ta përdorni me anonimizim IP-sh, sigurohuni që kjo nuk cenon ndonjë ligj privatësie subjekt i të cilit mund të jeni.",
+ "GeoIPLocationProviderNotRecommended": "Gjeovendëzimi funksionon, por s’po përdorni një nga furnizuesit e këshilluar.",
"GeoIPNoDatabaseFound": "Ky sendërtim i GeoIP-së s’qe në gjendje të gjente ndonjë bazë të dhënash.",
"GeoIPNoServerVars": "Matomo s’gjen dot ndryshore GeoIP %s.",
"GeoIPServerVarsFound": "Matomo pikas ndryshoret vijuese GeoIP %s",
"GeoIPUpdaterInstructions": "Jepni më poshtë lidhjet e shkarkimeve për bazat tuaja të të dhënave. Nëse keni blerë baza të dhënash nga %3$sdbip%4$s ose %1$sMaxMind%2$s, këto lidhje mund t’i gjeni te llogaria juaj dbip ose MaxMind. Nëse keni probleme me hyrjen në to, ju lutemi, lidhuni me furnizuesin tuaj të bazës së të dhënave të gjeovendëzimit.",
"GeoIPUpdaterIntro": "Matomo po administron përditësime për bazat vijuese të të dhënave",
- "GeoIPVariablesConfigurationHere": "Ndryshoret e shërbyesit që përdoren mund t’i formësoni nga %1$skëtu%2$s.",
+ "GeoIPVariablesConfigurationHere": "Ndryshoret e përdorura nga shërbyesit mund t’i formësoni nga %1$skëtu%2$s.",
"GeoLiteCityLink": "Nëse përdorni bazën e të dhënave Dbip City Lite, përdorni këtë lidhje: %1$s%2$s%3$s",
- "HowToSetupGeoIP": "Si të rregullohet gjeovendëzim i saktë me dbip?",
- "HowToSetupGeoIP_Step1": "%1$sShkarkoni%2$s bazën e të dhënave DBIP City Lite prej %3$sdbip%4$s.",
- "HowToSetupGeoIP_Step2": "Përftojeni këtë kartelë dhe kopjojeni përfundimin, %1$s te nëndrejtoria %2$smisc%3$s e Matomo-s dhe riemërtojeni si %4$s (këtë mund ta bëni me FTP ose SSH).",
- "HowToSetupGeoIP_Step3": "Ringarkoni këtë skenë. Furnizuesi %1$sDBIP \/ GeoIP (PHP)%2$s tani do të jetë %3$sinstaluar%4$s. Përzgjidheni.",
- "HowToSetupGeoIP_Step4": "Dhe mbaruat! Sapo e rregulluat Matomo-n të përdorë DBIP, që do të thotë se do të jeni në gjendje të shihni rajonet dhe qytetet e vizitorëve tuaj, tok me të dhëna shumë të sakta të vendit.",
- "HowToSetupGeoIPIntro": "Nuk duket se keni rregulluar Gjeovendëzim të saktë. Kjo është një veçori e dobishme dhe pa të nuk do të shihni të dhëna të sakta dhe të plota vendesh për vizitorët tuaj. Ja se si mund të filloni ta përdorni shpejt e shpejt:",
"HowToInstallApacheModule": "Si ta instaloj modulin GeoIP për Apache?",
"HowToInstallNginxModule": "Si ta instaloj modulin GeoIP për Nginx?",
+ "HowToSetupGeoIP": "Si të ujdiset gjeovendëzim i saktë me dbip",
+ "HowToSetupGeoIPIntro": "Nuk duket se keni rregulluar Gjeovendëzim të saktë. Kjo është një veçori e dobishme dhe pa të s’do të shihni të dhëna të sakta dhe të plota vendesh për vizitorët tuaj. Ja se si mund të filloni ta përdorni shpejt e shpejt:",
+ "HowToSetupGeoIP_Step1": "%1$sShkarkoni%2$s bazën e të dhënave DBIP City Lite prej %3$sdbip%4$s.",
+ "HowToSetupGeoIP_Step2": "Përftojeni këtë kartelë dhe kopjojeni përfundimin, %1$s te nëndrejtoria %2$smisc%3$s e Matomo-s dhe riemërtojeni si %4$s (këtë mund ta bëni me FTP ose SSH).",
+ "HowToSetupGeoIP_Step3": "Ringarkoni këtë skenë. Furnizuesi %1$sDBIP / GeoIP (PHP)%2$s tani do të jetë %3$sinstaluar%4$s. Përzgjidheni.",
+ "HowToSetupGeoIP_Step4": "Dhe mbaruat! Sapo e rregulluat Matomo-n të përdorë DBIP, që do të thotë se do të jeni në gjendje të shihni rajonet dhe qytetet e vizitorëve tuaj, tok me të dhëna shumë të sakta vendi.",
"HttpServerModule": "Modul Shërbyesi HTTP",
- "InvalidGeoIPUpdatePeriod": "Periudhë e pavlefshme për përditësuesin GeoIP: %1$s. Vlera të vlefshme janë %2$s.",
"IPurchasedGeoIPDBs": "Bleva baza të dhënash më të sakta nga %3$sdbip%4$s ose %1$sMaxMind%2$s dhe dua të rregulloj përditësime të vetvetishme.",
"ISPDatabase": "Bazë të Dhënash MShI",
"ISPRequiresProviderPlugin": "Ndjekja e furnizuesve të shërbimeve Internet lyp instalimin dhe aktivizimin e shtojcës Furnizues.",
"IWantToDownloadFreeGeoIP": "Dua të shkarkoj bazën DBIP falas të të dhënave…",
- "PluginDescription": "Furnizon shërbime vendndodhjesh DBIP \/ GeoIP2.",
+ "InvalidGeoIPUpdateHost": "Streha e URL-së së përditësimit GeoIP %1$s s’është e besuar. Për të lejuar të shkarkohen përditësime GeoIP prej strehësh të tjera nga %2$s, ju lutemi, përimtoni te formësimi rregullimin për %3$s.",
+ "InvalidGeoIPUpdatePeriod": "Periudhë e pavlefshme për përditësuesin GeoIP: %1$s. Vlera të vlefshme janë %2$s.",
"LocationDatabase": "Bazë të dhënash Vendi",
"LocationDatabaseHint": "Një bazë të dhënash vendi është bazë të dhënash vendesh, rajonesh ose qytetesh.",
- "LocationProviderDesc_Php": "Ky furnizues vendndodhjesh sh është më i thjeshti për t’u instaluar, ngaqë nuk lyp formësim shërbyesish (ideal për strehim të përbashkët!). Për të përcaktuar saktë vendin e vizitorëve tuaj, përdor një bazë të dhënash DBIP ose GeoIP 2 dhe API-n PHP të MaxMind-it.",
+ "LocationProviderDesc_Php": "Ky furnizues vendndodhjesh është më i thjeshti për t’u instaluar, ngaqë s’lyp formësim shërbyesish (ideal për strehim të përbashkët!). Për të përcaktuar saktë vendin e vizitorëve tuaj, përdor një bazë të dhënash DBIP ose GeoIP 2 dhe API-n PHP të MaxMind-it.",
"LocationProviderDesc_Php_WithExtension": "Ky furnizues vendndodhjesh përshpejtohet nga zgjerimi %1$smaxminddb%2$s i instaluar.",
"LocationProviderDesc_ServerModule": "Ky furnizues vendndodhjesh përdor modulin GeoIP 2 që është instaluar te shërbyesi juaj HTTP. Ky furnizues është i shpejtë dhe i përpiktë, por %1$smund të përdoret vetëm me ndjekje të zakonshme të shfletimit.%2$s",
"LocationProviderDesc_ServerModule2": "Nëse ju duhet të importoni kartela regjistër ose të bëni diçka tjetër që lyp caktim adresash IP, përdorni %3$ssendërtimin PHP GeoIP 2%4$s dhe instaloni %1$szgjerimin maxminddb%2$s.",
- "MalFormedUpdateUrl": "URL-ja %1$s duket e pavlefshme. Ju lutemi, sigurohuni të jepni një URL të vlefshme që fillon me http:\/\/ ose https:\/\/",
- "InvalidGeoIPUpdateHost": "Streha e URL-së së përditësimit GeoIP %1$s s’është e besuar. Për të lejuar të shkarkohen përditësime GeoIP prej strehësh të tjera nga %2$s, ju lutemi, përimtoni rregullimin për %3$s te formësimet.",
+ "MalFormedUpdateUrl": "URL-ja %1$s duket e pavlefshme. Ju lutemi, sigurohuni të jepni një URL të vlefshme që fillon me http:// ose https://",
"NotManagingGeoIPDBs": "Matomo hëpërhë s’administron ndonjë bazë të dhënash DBIP ose MaxMind.",
+ "PluginDescription": "Furnizon shërbime vendndodhjesh DBIP / GeoIP2.",
+ "ServerBasedVariablesConfiguration": "Formësim për ndryshore shërbyesi të përdorura nga module GeoIP 2 shërbyesi",
+ "ServerVariableFor": "Ndryshore shërbyesi për %s",
+ "SetupAutomaticUpdatesOfGeoIP": "Rregulloni përditësime të vetvetishme të bazave të të dhënave për gjeovendëzim",
+ "ShowCustomServerVariablesConfig": "Përdor modulin e shërbyesit Geoip2 (Nginx, Apache…) dhe dua të formësoj ndryshore shërbyesi",
+ "ThisUrlIsNotAValidGeoIPDB": "Kartela e shkarkuar s’është bazë të dhënash gjeovendëzimi e vlefshme. Ju lutemi, rikontrolloni URL-në ose shkarkojeni kartelën dorazi.",
"UnsupportedArchiveType": "U has lloj i pambuluar arkivi %1$s.",
"UpdaterHasNotBeenRun": "Përditësuesi s’është xhiruar ndonjëherë.",
"UpdaterIsNotScheduledToRun": "S’është vënë në plan të xhirohet në të ardhmen.",
"UpdaterScheduledForNextRun": "Është vënë në plan të xhirojë gjatë përmbushjes së ardhshme të urdhrit cron core:archive.",
"UpdaterWasLastRun": "Përditësuesi u xhirua së fundi më %s.",
- "UpdaterWillRunNext": "Është planifikuar të xhirojë sërish më %s.",
- "ShowCustomServerVariablesConfig": "Përdor modulin e shërbyesit Geoip2 (Nginx, Apache…) dhe dua të formësoj ndryshore shërbyesi",
- "ServerBasedVariablesConfiguration": "Formësim për ndryshore shërbyesi të përdorura nga module GeoIP 2 shërbyesi",
- "ServerVariableFor": "Ndryshore shërbyesi për %s",
- "SetupAutomaticUpdatesOfGeoIP": "Rregulloni përditësime të vetvetishme të bazave të të dhënave për gjeovendëzim",
- "ThisUrlIsNotAValidGeoIPDB": "Kartela e shkarkuar s’është bazë të dhënash gjeovendëzimi e vlefshme. Ju lutemi, rikontrolloni URL-në ose shkarkojeni kartelën dorazi."
+ "UpdaterWillRunNext": "Është planifikuar të xhirojë sërish më %s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Goals/Archiver.php b/plugins/Goals/Archiver.php
index 08575466da..de991c3100 100644
--- a/plugins/Goals/Archiver.php
+++ b/plugins/Goals/Archiver.php
@@ -129,7 +129,7 @@ class Archiver extends \Piwik\Plugin\Archiver
private function hasAnyGoalOrEcommerce($idSite)
{
- return $this->usesEcommerce($idSite) || GoalManager::getGoalIds($idSite);
+ return $this->usesEcommerce($idSite) || !empty(GoalManager::getGoalIds($idSite));
}
private function usesEcommerce($idSite)
@@ -154,9 +154,25 @@ class Archiver extends \Piwik\Plugin\Archiver
$goals = new DataArray();
$visitsToConversions = $daysToConversions = [];
+ $siteHasEcommerceOrGoals = $this->hasAnyGoalOrEcommerce($this->getSiteId());
+
+ // Special handling for sites that contain subordinated sites, like in roll up reporting.
+ // A roll up site, might not have ecommerce enabled or any configured goals,
+ // but if a subordinated site has, we calculate the overview conversion metrics nevertheless
+ if ($siteHasEcommerceOrGoals === false) {
+ $idSitesToArchive = $this->getProcessor()->getParams()->getIdSites();
+
+ foreach ($idSitesToArchive as $idSite) {
+ if ($this->hasAnyGoalOrEcommerce($idSite)) {
+ $siteHasEcommerceOrGoals = true;
+ break;
+ }
+ }
+ }
+
// try to query goal data only, if goals or ecommerce is actually used
// otherwise we simply insert empty records
- if ($this->hasAnyGoalOrEcommerce($this->getSiteId())) {
+ if ($siteHasEcommerceOrGoals) {
$selects = [];
$selects = array_merge($selects, LogAggregator::getSelectsFromRangedColumn(
self::VISITS_COUNT_FIELD, self::$visitCountRanges, self::LOG_CONVERSION_TABLE, $prefixes[self::VISITS_UNTIL_RECORD_NAME]
diff --git a/plugins/Goals/Categories/ManageGoalsSubcategory.php b/plugins/Goals/Categories/ManageGoalsSubcategory.php
index 8ff2deb9e6..7741642ab9 100644
--- a/plugins/Goals/Categories/ManageGoalsSubcategory.php
+++ b/plugins/Goals/Categories/ManageGoalsSubcategory.php
@@ -20,6 +20,6 @@ class ManageGoalsSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Goals_ManageGoalsSubcategoryHelp1') . '</p>'
- . '<p><a href="https://matomo.org/docs/tracking-goals-web-analytics/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Goals_ManageGoalsSubcategoryHelp2') . '</a></p>';
+ . '<p><a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Goals_ManageGoalsSubcategoryHelp2') . '</a></p>';
}
}
diff --git a/plugins/Goals/Columns/DaysToConversion.php b/plugins/Goals/Columns/DaysToConversion.php
index 9be44fcd11..64f2228aac 100644
--- a/plugins/Goals/Columns/DaysToConversion.php
+++ b/plugins/Goals/Columns/DaysToConversion.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DaysToConversion extends Dimension
{
diff --git a/plugins/Goals/Columns/VisitsUntilConversion.php b/plugins/Goals/Columns/VisitsUntilConversion.php
index e1c883c305..2fbdbd911c 100644
--- a/plugins/Goals/Columns/VisitsUntilConversion.php
+++ b/plugins/Goals/Columns/VisitsUntilConversion.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitsUntilConversion extends Dimension
{
diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php
index fd7ddc109a..c0c7d2f766 100644
--- a/plugins/Goals/Controller.php
+++ b/plugins/Goals/Controller.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Goals;
-use Piwik\API\Proxy;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
@@ -17,7 +16,6 @@ use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\FrontController;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Plugins\Live\Live;
use Piwik\Plugins\Referrers\API as APIReferrers;
@@ -80,6 +78,7 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setEditGoalsViewVariables($view);
$this->setGoalOptions($view);
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
@@ -125,6 +124,7 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setGoalOptions($view);
$view->onlyShowAddNewGoal = true;
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
@@ -134,9 +134,35 @@ class Controller extends \Piwik\Plugin\Controller
$this->setGeneralVariablesView($view);
$this->setEditGoalsViewVariables($view);
$this->setGoalOptions($view);
+ $this->execAndSetResultsForTwigEvents($view);
return $view->render();
}
+ private function execAndSetResultsForTwigEvents(View $view)
+ {
+ if (empty($view->onlyShowAddGoal)) {
+ $beforeGoalListActionsBody = [];
+ foreach ($view->goals as $goal) {
+ $str = '';
+ Piwik::postEvent('Template.beforeGoalListActionsBody', [&$str, $goal]);
+
+ $beforeGoalListActionsBody[$goal['idgoal']] = $str;
+ }
+ $view->beforeGoalListActionsBodyEventResult = $beforeGoalListActionsBody;
+
+ $str = '';
+ Piwik::postEvent('Template.beforeGoalListActionsHead', [&$str]);
+ $view->beforeGoalListActionsHead = $str;
+ }
+
+ if (!empty($view->userCanEditGoals)) {
+ $str = '';
+ Piwik::postEvent('Template.endGoalEditTable', [&$str]);
+
+ $view->endEditTable = $str;
+ }
+ }
+
public function hasConversions()
{
$this->checkSitePermission();
@@ -376,6 +402,7 @@ class Controller extends \Piwik\Plugin\Controller
if (isset($goal['pattern'])) {
$goal['pattern'] = Common::unsanitizeInputValue($goal['pattern']);
}
+ $goal['revenue_pretty'] = \Piwik\piwik_format_money($goal['revenue'], $this->idSite);
}
$view->goals = $goals;
diff --git a/plugins/Goals/Conversions.php b/plugins/Goals/Conversions.php
index 27c8352b11..a954174863 100644
--- a/plugins/Goals/Conversions.php
+++ b/plugins/Goals/Conversions.php
@@ -9,9 +9,6 @@
namespace Piwik\Plugins\Goals;
use Piwik\API\Request;
-use Piwik\Cache;
-use Piwik\Common;
-use Piwik\Db;
class Conversions
{
diff --git a/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php b/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
index ae2c1669c7..83b9317429 100644
--- a/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
+++ b/plugins/Goals/DataTable/Filter/AppendNameToColumnNames.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Goals\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
use Piwik\DataTable;
-use Piwik\Metrics;
/**
* Appends a string to each column name in each row of a table. Please note this filter even appends the name to a
diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php
index 413eccc6ab..a06be4ccf7 100644
--- a/plugins/Goals/Goals.php
+++ b/plugins/Goals/Goals.php
@@ -94,7 +94,6 @@ class Goals extends \Piwik\Plugin
public function registerEvents()
{
$hooks = array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'Tracker.Cache.getSiteAttributes' => 'fetchGoalsFromDb',
'API.getReportMetadata.end' => 'getReportMetadataEnd',
@@ -340,13 +339,6 @@ class Goals extends \Piwik\Plugin
return $reportsWithGoals;
}
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/Goals/angularjs/common/directives/goal-page-link.js";
- $jsFiles[] = "plugins/Goals/angularjs/manage-goals/manage-goals.controller.js";
- $jsFiles[] = "plugins/Goals/angularjs/manage-goals/manage-goals.directive.js";
- }
-
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/Goals/stylesheets/goals.css";
@@ -364,12 +356,51 @@ class Goals extends \Piwik\Plugin
$translationKeys[] = 'Goals_AddNewGoal';
$translationKeys[] = 'Goals_UpdateGoal';
$translationKeys[] = 'Goals_DeleteGoalConfirm';
- $translationKeys[] = 'Goals_UpdateGoal';
- $translationKeys[] = 'Goals_DeleteGoalConfirm';
$translationKeys[] = 'Goals_Ecommerce';
$translationKeys[] = 'Goals_Optional';
$translationKeys[] = 'Goals_TimeInMinutes';
$translationKeys[] = 'Goals_Pattern';
$translationKeys[] = 'Goals_ClickToViewThisGoal';
+ $translationKeys[] = 'Goals_ManageGoals';
+ $translationKeys[] = 'Goals_GoalName';
+ $translationKeys[] = 'Goals_GoalIsTriggeredWhen';
+ $translationKeys[] = 'Goals_ThereIsNoGoalToManage';
+ $translationKeys[] = 'Goals_ManuallyTriggeredUsingJavascriptFunction';
+ $translationKeys[] = 'Goals_VisitUrl';
+ $translationKeys[] = 'Goals_ClickOutlink';
+ $translationKeys[] = 'Goals_SendEvent';
+ $translationKeys[] = 'Goals_GoalIsTriggered';
+ $translationKeys[] = 'Goals_WhereThe';
+ $translationKeys[] = 'Goals_URL';
+ $translationKeys[] = 'General_ForExampleShort';
+ $translationKeys[] = 'Goals_Contains';
+ $translationKeys[] = 'Goals_IsExactly';
+ $translationKeys[] = 'Goals_MatchesExpression';
+ $translationKeys[] = 'Goals_AllowMultipleConversionsPerVisit';
+ $translationKeys[] = 'Goals_HelpOneConversionPerVisit';
+ $translationKeys[] = 'Goals_DefaultRevenueHelp';
+ $translationKeys[] = 'Goals_DefaultRevenueLabel';
+ $translationKeys[] = 'Goals_GoalRevenue';
+ $translationKeys[] = 'Goals_Filename';
+ $translationKeys[] = 'Goals_ExternalWebsiteUrl';
+ $translationKeys[] = 'Goals_VisitDuration';
+ $translationKeys[] = 'Goals_AtLeastMinutes';
+ $translationKeys[] = 'Goals_VisitPageTitle';
+ $translationKeys[] = 'Intl_NMinutes';
+ $translationKeys[] = 'Goals_PageTitle';
+ $translationKeys[] = 'Goals_UseEventValueAsRevenue';
+ $translationKeys[] = 'Goals_EventValueAsRevenueHelp';
+ $translationKeys[] = 'Goals_EventValueAsRevenueHelp2';
+ $translationKeys[] = 'Events_EventCategory';
+ $translationKeys[] = 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore';
+ $translationKeys[] = 'Goals_LearnMoreAboutGoalTrackingDocumentation';
+ $translationKeys[] = 'Goals_EcommerceReports';
+ $translationKeys[] = 'SitesManager_WebsitesManagement';
+ $translationKeys[] = 'Goals_CaseSensitive';
+ $translationKeys[] = 'Goals_Download';
+ $translationKeys[] = 'Events_EventAction';
+ $translationKeys[] = 'Events_EventCategory';
+ $translationKeys[] = 'Events_EventName';
+ $translationKeys[] = 'Goals_YouCanEnableEcommerceReports';
}
}
diff --git a/plugins/Goals/Reports/Base.php b/plugins/Goals/Reports/Base.php
index 969b4f64c4..24e6ecc725 100644
--- a/plugins/Goals/Reports/Base.php
+++ b/plugins/Goals/Reports/Base.php
@@ -11,8 +11,6 @@ namespace Piwik\Plugins\Goals\Reports;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
-use Piwik\Plugins\Goals\Goals;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/Goals/Reports/Get.php b/plugins/Goals/Reports/Get.php
index 445f6fd1cc..5d0f3b1411 100644
--- a/plugins/Goals/Reports/Get.php
+++ b/plugins/Goals/Reports/Get.php
@@ -11,14 +11,12 @@ namespace Piwik\Plugins\Goals\Reports;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Metrics\Formatter;
use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\Plugins\Goals\API;
use Piwik\Plugins\Goals\Goals;
use Piwik\Plugins\Goals\Pages;
use Piwik\Report\ReportWidgetFactory;
@@ -113,7 +111,7 @@ class Get extends Base
if ($onlySummary && !empty($idGoal)) {
if (is_numeric($idGoal)) {
- $view->config->title_attributes = array('piwik-goal-page-link' => $idGoal);
+ $view->config->title_attributes = array('goal-page-link' => $idGoal);
}
// in Goals overview summary we show proper title for a goal
diff --git a/plugins/Goals/Updates/3.0.0-b1.php b/plugins/Goals/Updates/3.0.0-b1.php
index 42c7d32ad9..55d2fbb626 100644
--- a/plugins/Goals/Updates/3.0.0-b1.php
+++ b/plugins/Goals/Updates/3.0.0-b1.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Goals;
-use Piwik\Common;
use Piwik\Updater;
use Piwik\Updates;
use Piwik\Updater\Migration\Factory as MigrationFactory;
diff --git a/plugins/Goals/Visualizations/Goals.php b/plugins/Goals/Visualizations/Goals.php
index 0463bde48d..02bc042f5a 100644
--- a/plugins/Goals/Visualizations/Goals.php
+++ b/plugins/Goals/Visualizations/Goals.php
@@ -8,16 +8,12 @@
namespace Piwik\Plugins\Goals\Visualizations;
-use Piwik\API\DataTablePostProcessor;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable;
use Piwik\DataTable\Filter\AddColumnsProcessedMetricsGoal;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Site;
-use Piwik\View;
require_once PIWIK_INCLUDE_PATH . '/core/Twig.php';
diff --git a/plugins/Goals/Widgets/AddNewGoal.php b/plugins/Goals/Widgets/AddNewGoal.php
index 65245b63d4..d84cce1240 100644
--- a/plugins/Goals/Widgets/AddNewGoal.php
+++ b/plugins/Goals/Widgets/AddNewGoal.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Goals\Widgets;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
use Piwik\Widget\WidgetConfig;
class AddNewGoal extends \Piwik\Widget\Widget
diff --git a/plugins/Goals/Widgets/EditGoals.php b/plugins/Goals/Widgets/EditGoals.php
index a3f892cd1e..10fcc5dbdb 100644
--- a/plugins/Goals/Widgets/EditGoals.php
+++ b/plugins/Goals/Widgets/EditGoals.php
@@ -10,8 +10,6 @@ namespace Piwik\Plugins\Goals\Widgets;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Piwik;
-use Piwik\Plugins\Goals\API;
use Piwik\Widget\WidgetConfig;
class EditGoals extends \Piwik\Widget\Widget
diff --git a/plugins/Goals/angularjs/common/directives/goal-page-link.js b/plugins/Goals/angularjs/common/directives/goal-page-link.js
deleted file mode 100644
index 9624e8daf4..0000000000
--- a/plugins/Goals/angularjs/common/directives/goal-page-link.js
+++ /dev/null
@@ -1,45 +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-goal-page-link="idGoal">
- */
-(function () {
- angular.module('piwikApp.directive').directive('piwikGoalPageLink', piwikGoalPageLink);
-
- piwikGoalPageLink.$inject = ['$location', 'piwik'];
-
- function piwikGoalPageLink($location, piwik){
-
- return {
- restrict: 'A',
- compile: function (element, attrs) {
-
- if (attrs.piwikGoalPageLink && piwik.helper.isAngularRenderingThePage()) {
- var title = element.text();
- element.html('<a></a>');
- var link = element.find('a');
- link.text(title);
- link.attr('href', 'javascript:void(0)');
- link.attr('title', _pk_translate('Goals_ClickToViewThisGoal'));
- link.bind('click', function () {
- var $search = $location.search();
- $search.category = 'Goals_Goals';
- $search.subcategory = encodeURIComponent(attrs.piwikGoalPageLink);
- $location.search($search);
- });
- }
-
- return function (scope, element, attrs) {
-
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js b/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
deleted file mode 100644
index 1b8ecff484..0000000000
--- a/plugins/Goals/angularjs/manage-goals/manage-goals.controller.js
+++ /dev/null
@@ -1,215 +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('ManageGoalsController', ManageGoalsController);
-
- ManageGoalsController.$inject = ['piwik', 'piwikApi', '$timeout', '$location', 'reportingMenuModel', '$rootScope'];
-
- function ManageGoalsController(piwik, piwikApi, $timeout, $location, reportingMenuModel, $rootScope) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
-
- if (!this.goal) {
- this.goal = {};
- }
- this.showEditGoal = false;
- this.showGoalList = true;
-
- function scrollToTop()
- {
- $timeout(function () {
- piwik.helper.lazyScrollTo(".pageWrap", 200);
- });
- }
-
- function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, useEventValueAsRevenue, goalId) {
-
- $rootScope.$emit('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
-
- self.goal = {};
- self.goal.name = goalName;
- self.goal.description = description;
-
- if (matchAttribute == 'manually') {
- self.goal.triggerType = 'manually';
- matchAttribute = 'url';
- } else {
- self.goal.triggerType = 'visitors';
- }
-
- if (0 === matchAttribute.indexOf('event')) {
- self.goal.eventType = matchAttribute;
- matchAttribute = 'event';
- } else {
- self.goal.eventType = 'event_category';
- }
-
- self.goal.matchAttribute = matchAttribute;
- self.goal.allowMultiple = allowMultiple == true ? "1" : "0";
- self.goal.patternType = patternType;
- self.goal.pattern = pattern;
- self.goal.caseSensitive = caseSensitive;
- self.goal.revenue = revenue;
- self.goal.apiMethod = goalMethodAPI;
- self.goal.useEventValueAsRevenue = useEventValueAsRevenue;
-
- self.goal.submitText = submitText;
- self.goal.goalId = goalId;
-
- $timeout(function () {
- var text = _pk_translate('Goals_AddNewGoal');
- if (goalId) {
- text = _pk_translate('Goals_UpdateGoal')
- }
-
- $('.addEditGoal .card-title').text(text);
- });
- }
-
- this.isManuallyTriggered = function () {
- return this.goal.triggerType == 'manually';
- }
-
- this.save = function () {
-
- var parameters = {};
- parameters.name = encodeURIComponent(this.goal.name);
- parameters.description = encodeURIComponent(this.goal.description);
-
- if (this.isManuallyTriggered()) {
- parameters.matchAttribute = 'manually';
- parameters.patternType = 'regex';
- parameters.pattern = '.*';
- parameters.caseSensitive = 0;
- } else {
- parameters.matchAttribute = this.goal.matchAttribute;
-
- if (parameters.matchAttribute === 'event') {
- parameters.matchAttribute = this.goal.eventType;
- }
-
- parameters.patternType = this.goal.patternType;
- parameters.pattern = encodeURIComponent(this.goal.pattern);
- parameters.caseSensitive = this.goal.caseSensitive == true ? 1 : 0;
- }
- parameters.revenue = this.goal.revenue || 0;
- parameters.allowMultipleConversionsPerVisit = this.goal.allowMultiple == true ? 1 : 0;
- parameters.useEventValueAsRevenue = this.goal.useEventValueAsRevenue == true ? 1 : 0;
-
- parameters.idGoal = this.goal.goalId;
- parameters.method = this.goal.apiMethod;
-
- var isCreate = parameters.method === 'Goals.addGoal';
- var isUpdate = parameters.method === 'Goals.updateGoal';
-
- if (isUpdate) {
- $rootScope.$emit('Goals.beforeUpdateGoal', parameters, piwikApi);
- } else if (isCreate) {
- $rootScope.$emit('Goals.beforeAddGoal', parameters, piwikApi);
- }
-
- if (parameters && 'undefined' !== typeof parameters.cancelRequest && parameters.cancelRequest) {
- return;
- }
-
- this.isLoading = true;
-
- piwikApi.fetch(parameters).then(function () {
- var search = $location.search();
- if (search
- && search.subcategory
- && search.subcategory == 'Goals_AddNewGoal'
- && piwik.helper.isAngularRenderingThePage()) {
- // when adding a goal for the first time we need to load manage goals page afterwards
- reportingMenuModel.reloadMenuItems().then(function () {
- $location.search('subcategory', 'Goals_ManageGoals');
- self.isLoading = false;
- });
- } else {
- location.reload();
- }
- }, function () {
- scrollToTop();
- self.isLoading = false;
- });
- };
-
- this.changedTriggerType = function () {
- if (!this.isManuallyTriggered() && !this.goal.patternType) {
- this.goal.patternType = 'contains';
- }
- }
-
- this.showListOfReports = function (shouldScrollToTop) {
- $rootScope.$emit('Goals.cancelForm');
-
- this.showGoalList = true;
- this.showEditGoal = false;
- scrollToTop();
- };
-
- this.showAddEditForm = function () {
- this.showGoalList = false;
- this.showEditGoal = true;
- };
-
- this.createGoal = function () {
-
- var parameters = {isAllowed: true};
- $rootScope.$emit('Goals.initAddGoal', parameters);
- if (parameters && !parameters.isAllowed) {
- return;
- }
-
- this.showAddEditForm();
- initGoalForm('Goals.addGoal', _pk_translate('Goals_AddGoal'), '', '', 'url', '', 'contains', /*caseSensitive = */false, '', /*allowMultiple = */ false, /*useEventValueAsRevenue = */ false, 0);
- scrollToTop();
- };
-
- this.editGoal = function (goalId) {
- this.showAddEditForm();
- var goal = piwik.goals[goalId];
- initGoalForm("Goals.updateGoal", _pk_translate('Goals_UpdateGoal'), goal.name, goal.description, goal.match_attribute, goal.pattern, goal.pattern_type, (goal.case_sensitive != '0'), goal.revenue, goal.allow_multiple, (goal.event_value_as_revenue != '0'), goalId);
- scrollToTop();
- };
-
- this.deleteGoal = function (goalId) {
- var goal = piwik.goals[goalId];
-
- $('#confirm').find('h2').text(sprintf(_pk_translate('Goals_DeleteGoalConfirm'), '"' + goal.name + '"'));
- piwikHelper.modalConfirm('#confirm', {yes: function () {
- self.isLoading = true;
-
- piwikApi.fetch({idGoal: goalId, method: 'Goals.deleteGoal'}).then(function () {
- location.reload();
- }, function () {
- self.isLoading = false;
- });
-
- }});
- };
-
- this.isMatchAttributeNumeric = function () {
- return ['visit_duration'].indexOf(this.goal.matchAttribute) > -1;
- };
-
- this.initPatternType = function () {
- if (this.isMatchAttributeNumeric()) {
- this.goal.patternType = 'greater_than';
- } else {
- this.goal.patternType = 'contains';
- }
- };
-
- this.getPatternFieldLabel = function () {
- return this.goal.matchAttribute === 'visit_duration' ? _pk_translate('Goals_TimeInMinutes') : _pk_translate('Goals_Pattern');
- };
-
- this.showListOfReports(false);
- }
-})();
diff --git a/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js b/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js
deleted file mode 100644
index 91b5e6b4b6..0000000000
--- a/plugins/Goals/angularjs/manage-goals/manage-goals.directive.js
+++ /dev/null
@@ -1,38 +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-manage-goals>
- */
-(function () {
- angular.module('piwikApp').directive('piwikManageGoals', piwikManageGoals);
-
- piwikManageGoals.$inject = ['piwik'];
-
- function piwikManageGoals(piwik){
-
- return {
- restrict: 'A',
- priority: 10,
- controller: 'ManageGoalsController',
- controllerAs: 'manageGoals',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs, controller) {
- if (attrs.showAddGoal) {
- controller.createGoal();
- } else if (attrs.showGoal) {
- controller.editGoal(attrs.showGoal);
- }
-
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Goals/lang/ca.json b/plugins/Goals/lang/ca.json
index b8fa85a54b..e573bc769e 100644
--- a/plugins/Goals/lang/ca.json
+++ b/plugins/Goals/lang/ca.json
@@ -6,38 +6,49 @@
"AddNewGoalOrEditExistingGoal": "%1$sAfegeix un nou objectiu%2$s o %3$sEdita objectius existents%4$s",
"AllowGoalConvertedMoreThanOncePerVisit": "Permetre convertir un objectiu més d'una vegada per visita",
"AllowMultipleConversionsPerVisit": "Permetre múltiples conversions per visita",
+ "AtLeastMinutes": "almenys %1$s minuts. Utilitzeu decimals per fer coincidir segons, per exemple, %2$s per fer coincidir 30 segons.",
"BestCountries": "Els millors paísos amb conversions són:",
"BestKeywords": "Les paraules clau amb més conversions són:",
"BestReferrers": "Els llocs webs de referència amb més conversions són:",
- "CaseSensitive": "Concidència sensible a minúscules\/majúscules",
+ "CancelAndReturnToGoals": "Cancel·la i %1$storna a la llista d'objectius%2$s",
+ "CaseSensitive": "Concidència sensible a minúscules/majúscules",
+ "CategoryTextDevicesDetection_DevicesDetection": "Dispositius",
+ "CategoryTextGeneral_Visit": "compromís",
+ "CategoryTextGeneral_Visitors": "Ubicació de l'usuari",
"CategoryTextReferrers_Referrers": "Referents",
"CategoryTextVisitsSummary_VisitsSummary": "atribut d'usuari",
- "CategoryTextDevicesDetection_DevicesDetection": "Dispositius",
"ClickOutlink": "Click a un enllaç a un lloc web extern",
+ "ClickToViewThisGoal": "Feu clic per veure aquest objectiu.",
"ColumnAverageOrderRevenueDocumentation": "La Mitja de Valor d'una Commanda (MVC) és el nombre total d'ingressos de totes les comandes electròniques dividit pel nombre de comandes.",
"ColumnAveragePriceDocumentation": "La mitja d'ingresos per aquest %s.",
"ColumnAverageQuantityDocumentation": "La quantitat mitja d'aquest %s venut a les comandes Ecommerce.",
"ColumnConversionRateDocumentation": "El percentatge de visites que han arribat a l'objectiu %s.",
"ColumnConversionRateProductDocumentation": "El %s rati de conversió és el nombre de comandes que contenen aquest producte dividit pel nombre de visites a la pàgina del producte.",
"ColumnConversions": "Conversions",
- "ColumnConversionsDocumentation": "El nombre de conversions per %s",
+ "ColumnConversionsDocumentation": "El nombre de conversions per %s.",
"ColumnOrdersDocumentation": "El nombre total de comandes de compra que contenen aquest %s almenys una vegada.",
+ "ColumnOverallRevenue": "Ingressos globals",
"ColumnPurchasedProductsDocumentation": "El nombre de productes comprats és la suma de les quantitats de productes que s'han venut en els comandes.",
"ColumnQuantityDocumentation": "La quantitat és el nombre total de productes que s'han venut per cada %s.",
"ColumnRevenueDocumentation": "Ingressos totals generats per %s.",
"ColumnRevenuePerVisitDocumentation": "Els ingresos totals generats per %s dividit pel nombre de visites.",
"ColumnVisits": "El nombre total de visites, sense tenir en compte si s'ha assolit l'objectiu o no.",
- "ColumnVisitsProductDocumentation": "El nombre de visites a la pagina del Producte\/Categoria. S'utiltiza per calcular el rati de conversió del %s. Aquesta mètrica està a l'informe si",
+ "ColumnVisitsProductDocumentation": "El nombre de visites a la pàgina Producte/Categoria. També s'utilitza per processar la taxa de conversió %s. Aquesta mètrica es troba a l'informe si el seguiment de visualitzacions de comerç electrònic s'ha configurat a les pàgines de productes/categories.",
"Contains": "conté %s",
+ "Conversion": "Conversió",
"ConversionByTypeReportDocumentation": "Aquest informe proporciona informació detallada sobre la productivitat dels objectius (conversions, rati de conversións i ingresos per visita) per cada una de les catagories disponibles al panell de l'esquerra. %1$s Cliqueu alguna de les categories per veure l'informe. %2$s Per mes informació, llegiu %3$s la documetnació sobre el rastreig d'objectius a piwik.org%4$s",
"ConversionRate": "Rati de coversió de %s",
- "Conversions": "%s conversions",
+ "Conversions": "%s de conversions",
+ "ConversionsDescription": "conversions",
"ConversionsOverview": "Vista general de les conversions",
"ConversionsOverviewBy": "Vista general de les conversións per tipus de visita",
"DaysToConv": "Dies per la conversió",
- "DefaultGoalConvertedOncePerVisit": "(per defecte) Un objectiu només es pot assolir una vegada per visita.",
+ "DaysToConvReportDocumentation": "Aquest informe mostra quants dies passen abans que els vostres visitants converteixin un objectiu.",
+ "DefaultGoalConvertedOncePerVisit": "(per defecte) L'objectiu només es pot convertir una vegada per visita",
"DefaultRevenueHelp": "Per exemple, un formulari de contacte emplenat per un visitant pot valdre 10€ de mitja. El Matomo t'ajuda a entendre com es comportent els segments de visitants.",
+ "DefaultRevenueLabel": "Ingressos predeterminats de l'objectiu",
"DeleteGoalConfirm": "Esteu segurs que voleu eliminar l'objectiu %s?",
+ "Details": "Detalls de l'objectiu",
"DocumentationRevenueGeneratedByProductSales": "Ventes de productes. Sense impostos, despeses d'enviament ni descomptes",
"Download": "Descarrega un fitxer",
"Ecommerce": "Ecomerç",
@@ -46,6 +57,8 @@
"EcommerceOrder": "Ordre d'ecomerç",
"EcommerceOverview": "Vista general ecomerç",
"EcommerceReports": "Informes d'Ecommerce",
+ "EventValueAsRevenueHelp": "Si l'esdeveniment corresponent té uns ingressos i es fa un seguiment d'aquests ingressos com a valor de l'esdeveniment, podeu activar aquesta opció per registrar el valor de l'esdeveniment com a ingressos de la conversió de l'objectiu. Si els ingressos de l'objectiu no varien per conversió, podeu ignorar aquesta opció i establir uns ingressos predeterminats més amunt.",
+ "EventValueAsRevenueHelp2": "Nota: si es defineixen tant un ingressos d'objectiu predeterminat com un valor d'esdeveniment, s'utilitzarà el valor de l'esdeveniment. Si aquesta opció està activada i no s'envia cap valor d'esdeveniment en una sol·licitud, s'utilitzaran els ingressos predeterminats (si es defineixen).",
"ExceptionInvalidMatchingString": "Si escolleu 'coïncidencia exacta', el cadena de coincidència ha de ser una URL que comença per %1$s. Per exemple, '%2$s'.",
"ExternalWebsiteUrl": "URL del lloc web extern",
"Filename": "nom del fitxer",
@@ -55,34 +68,66 @@
"GoalIsTriggered": "S'ha assolit l'objectiu",
"GoalIsTriggeredWhen": "S'asoleix l'objectiu quan",
"GoalName": "Nom de l'objectiu",
+ "GoalRevenue": "Ingressos de l'objectiu",
+ "GoalX": "Objectiu %s",
"Goals": "Objectius",
+ "GoalsAdjective": "Objectius %s",
+ "GoalsBy": "Objectius per %s",
"GoalsOverview": "Vista general d'objectius",
"GoalsOverviewDocumentation": "Això es una vista global de les conversions dels vostres objectius. Inicialment el gràfic mostra la suma de totes les conversions. %s Davalla del gràfic, podeu veure els informes de conversions per cada un dels vostres objectius. Els minigràfics es pot ampliar fent clic sobre ells.",
- "GoalX": "Objectiu %s",
+ "GoalsOverviewSubcategoryHelp1": "La visió general dels objectius informa sobre el rendiment dels objectius definits per al vostre lloc web. Podeu accedir als percentatges de conversió dels vostres objectius, a la quantitat d'ingressos generats i als informes complets de cadascun d'ells.",
+ "GoalsOverviewSubcategoryHelp2": "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.",
"HelpOneConversionPerVisit": "Si la pàgina de l'objectiu es refresca o es visita més d'una vegada en una sola visita l'objectiu només es contarà una vegada (la primera de totes).",
"IsExactly": "es exactament %s",
+ "LearnMoreAboutGoalTrackingDocumentation": "Més informació sobre %1$sCom seguir objectius a Matomo%2$s a la documentació d'usuari.",
"LeftInCart": "queda %s a la cistella",
+ "ManageGoals": "Gestiona objectius",
+ "ManageGoalsSubcategoryHelp1": "Aquesta secció us permet crear i editar objectius per a accions específiques que fan els visitants al vostre lloc, com ara visitar una pàgina determinada o enviar un formulari específic. Els informes d'objectius varien, però poden ajudar-vos a fer un seguiment del rendiment del vostre lloc web en comparació amb els objectius empresarials, com ara la generació de contactes, les vendes en línia i l'augment de l'exposició de la marca.",
+ "ManageGoalsSubcategoryHelp2": "Més informació a la nostra guia d'objectius aquí.",
"Manually": "manualment",
- "ManuallyTriggeredUsingJavascriptFunction": "L'objectiu s'asoleix manualment utilitzat la funció trackGoal() de l'API de Javascript.",
+ "ManuallyTriggeredUsingJavascriptFunction": "L'objectiu s'activa manualment mitjançant l'API de JavaScript trackGoal()",
"MatchesExpression": "compleix l'expresió %s",
+ "NGoals": "%s objectius",
+ "NItems": "%s elements",
+ "NRevenue": "%s d'ingressos",
+ "NeedAccess": "Només un administrador o un usuari amb accés de superusuari pot gestionar els objectius d'un lloc web determinat.",
+ "NewGoalIntro": "El seguiment de conversions d'objectius és una de les maneres més eficients de mesurar i millorar els vostres objectius empresarials.",
"NewVisitorsConversionRateIs": "El rati de conversió dels nous visitants es %s",
+ "NoConversionsNoReportsMessage": "Els informes no es mostren perquè no hi ha dades de conversió per a l'objectiu i el període seleccionats.",
+ "NoGoalsNeedAccess2": "Només un usuari d'escriptura, un administrador o un usuari amb accés de superusuari poden gestionar els objectius d'un lloc web determinat. Demaneu al vostre administrador de Matomo que configuri un objectiu per al vostre lloc web. <br>El seguiment dels objectius és una manera fantàstica d'ajudar a comprendre i maximitzar el rendiment del vostre lloc web!",
"Optional": "(opcional)",
+ "OverallConversionRate": "percentatge de conversió global (visites amb un objectiu completat)",
+ "OverallRevenue": "ingressos globals",
+ "OverviewReportDocumentation": "Aquest informe ofereix una visió general de com els vostres visitants converteixen un objectiu específic.",
"PageTitle": "Títol de la pàgina",
"Pattern": "Patró",
+ "PluginDescription": "Creeu objectius i consulteu informes detallats sobre les conversions dels vostres objectius: evolució al llarg del temps, ingressos per visita, conversions per referent, per paraula clau i molt més.",
"ProductCategory": "Categoria de Producte",
"ProductName": "Nom del producte",
- "Products": "Productes",
+ "ProductNames": "Noms de producte",
+ "ProductPrice": "Preu del producte",
+ "ProductQuantity": "Quantitat de producte",
"ProductSKU": "Referència del producte",
+ "ProductSKUs": "SKU del producte",
+ "Products": "Productes",
"ReturningVisitorsConversionRateIs": "EL rati de conversió dels visitants que retornen és %s",
+ "SendEvent": "Envia un esdeveniment",
"SingleGoalOverviewDocumentation": "Això es una visió global de les conversions d'un únic objectiu. %s Els minigràfics es poden ampliar fent clic sobre ells.",
- "UpdateGoal": "Actualtizar objectiu",
+ "ThereIsNoGoalToManage": "No hi ha cap objectiu per gestionar per al lloc web %s",
+ "TimeInMinutes": "Temps en minuts",
"URL": "URL",
+ "UpdateGoal": "Actualtizar objectiu",
+ "UseEventValueAsRevenue": "Utilitzeu el valor de l'esdeveniment (si existeix) com a ingressos de la conversió de l'objectiu.",
"ViewAndEditGoals": "Mostra i edita els objectius",
+ "VisitDuration": "la durada de la visita és",
+ "VisitDurationMatchAttr": "Roman durant un cert temps",
"VisitPageTitle": "Visitar un pàgina amb el títol donat",
- "VisitsUntilConv": "Visites convertides",
"VisitUrl": "Visitar una URL donada (pàgina o grup de pàgines)",
+ "VisitsUntilConv": "Visites convertides",
+ "VisitsUntilConvReportDocumentation": "Aquest informe mostra el nombre de visites realitzades abans que un visitant converteixi un objectiu.",
"WhenVisitors": "quan el visitant",
"WhereThe": "quan el",
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "La pàgina visitada ha de contenir una crida al mètode \"trackGoal\" de JavaScript (%1$smés informació%2$s)",
"YouCanEnableEcommerceReports": "Podeu activar el %1$s per aquest lloc web a la pàgina %2$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Goals/lang/id.json b/plugins/Goals/lang/id.json
index 287185bfa6..07f8ec405b 100644
--- a/plugins/Goals/lang/id.json
+++ b/plugins/Goals/lang/id.json
@@ -18,11 +18,12 @@
"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": "Persentasi kunjungan yang dipacu oleh tujuan %s.",
+ "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.",
"ColumnConversions": "Konversi",
"ColumnConversionsDocumentation": "Jumlah konversi untuk %s.",
"ColumnOrdersDocumentation": "Jumlah permintaan Niaga-E yang mengandung %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.",
"ColumnRevenueDocumentation": "Total pendapatan yang dihasilkan oleh %s.",
@@ -68,6 +69,7 @@
"Manually": "manual",
"ManuallyTriggeredUsingJavascriptFunction": "Tujuan terpicu secara manual menggunakan API JavaScript trackGoal()",
"MatchesExpression": "sesuai dengan ekspresi %s",
+ "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)",
diff --git a/plugins/Goals/lang/it.json b/plugins/Goals/lang/it.json
index 51ca154713..a041a65a74 100644
--- a/plugins/Goals/lang/it.json
+++ b/plugins/Goals/lang/it.json
@@ -6,34 +6,36 @@
"AddNewGoalOrEditExistingGoal": "%1$sAggiungi un nuovo Goal%2$s o %3$sModifica%4$s i Goal esistenti",
"AllowGoalConvertedMoreThanOncePerVisit": "Consenti di convertire il Goal più di una volta per visita",
"AllowMultipleConversionsPerVisit": "Permetti conversioni multiple per visita",
+ "AtLeastMinutes": "almeno %1$s minuti. Usa i decimali per aggiungere i secondi, per esempio, %2$s per aggiungere 30 secondi.",
"BestCountries": "Le tue nazioni che convertono meglio sono:",
"BestKeywords": "Le tue keyword che convertono meglio sono:",
"BestReferrers": "I tuoi referenti che convertono meglio sono:",
- "CaseSensitive": "Corrispondenza maiuscole e minuscole",
"CancelAndReturnToGoals": "Annulla e %1$storna all'elenco dei goal%2$s",
+ "CaseSensitive": "Corrispondenza maiuscole e minuscole",
+ "CategoryTextDevicesDetection_DevicesDetection": "Dispositivi",
+ "CategoryTextGeneral_Visit": "impegno",
"CategoryTextGeneral_Visitors": "Località utente",
"CategoryTextReferrers_Referrers": "Referenti",
"CategoryTextVisitsSummary_VisitsSummary": "Attributo utente",
- "CategoryTextDevicesDetection_DevicesDetection": "Dispositivi",
- "CategoryTextGeneral_Visit": "impegno",
"ClickOutlink": "Click su un Link a un sito esterno",
- "SendEvent": "Invia un evento",
+ "ClickToViewThisGoal": "Clicca per vedere questo obiettivo.",
"ColumnAverageOrderRevenueDocumentation": "Il valore medio ordini (Average Order Value, AOV) è il ricavo totale di tutti gli ordini Ecommerce diviso per il numero di ordini.",
"ColumnAveragePriceDocumentation": "Il ricavo medio per questo %s.",
"ColumnAverageQuantityDocumentation": "Quantità media di questo %s venduta negli ordini Ecommerce.",
"ColumnConversionRateDocumentation": "Percentuale di visite che hanno attivato l'obiettivo %s.",
"ColumnConversionRateProductDocumentation": "Il tasso di conversione %s è il numero di ordini in cui compare il prodotto, diviso per il numero di visite sulla pagina del prodotto.",
"ColumnConversions": "Conversioni",
- "Conversion": "Conversione",
"ColumnConversionsDocumentation": "Numero di conversioni per %s.",
"ColumnOrdersDocumentation": "Numero complessivo di ordini Ecommerce che contenevano questo %s almeno una volta.",
+ "ColumnOverallRevenue": "Ricavo complessivo",
"ColumnPurchasedProductsDocumentation": "Il numero di prodotti acquistati è la somma delle quantità dei prodotti venduti in tutti gli ordini Ecommerce.",
"ColumnQuantityDocumentation": "La quantità è il numero complessivo di prodotti venduti per ciascuna %s.",
"ColumnRevenueDocumentation": "Incasso totale generato da %s.",
"ColumnRevenuePerVisitDocumentation": "Incasso totale generato da %s diviso per il numero di visite.",
"ColumnVisits": "Numero totale delle visite, indipendentemente dal fatto se un obiettivo sia stato attivato o meno.",
- "ColumnVisitsProductDocumentation": "Numero di visite sulla pagina del Prodotto\/Categoria. Questo è anche utilizzato per elaborare la percentuale di conversioni %s. Questa metrica è nel report se è stato impostato nelle pagine Prodotto\/Categoria il view tracking Ecommerce.",
+ "ColumnVisitsProductDocumentation": "Numero di visite sulla pagina del Prodotto/Categoria. Questo è anche utilizzato per elaborare la percentuale di conversioni %s. Questa metrica è nel report se è stato impostato nelle pagine Prodotto/Categoria il view tracking Ecommerce.",
"Contains": "contiene %s",
+ "Conversion": "Conversione",
"ConversionByTypeReportDocumentation": "Questo report fornisce informazioni dettagliate sull'andamento degli obiettivi (conversioni, tassi di conversione ed entrate per visita), per ciascuna delle categorie disponibili nel pannello di sinistra. %1$s Si prega di cliccare su una delle categorie per visualizzare il report. %2$s Per ulteriori informazioni, leggere la %3$sDocumentazione sul Tracking dei Goal%4$s",
"ConversionRate": "%s rapporto di conversione",
"Conversions": "%s conversioni",
@@ -42,11 +44,11 @@
"ConversionsOverviewBy": "Panoramica conversioni per tipo di visita",
"DaysToConv": "Giorni alla Conversione",
"DaysToConvReportDocumentation": "Questo report mostra quanti giorni passano prima che i tuoi visitatori convertano un goal.",
- "Details": "Dettagli Goal",
"DefaultGoalConvertedOncePerVisit": "(default) Un Goal può essere convertito solo una volta per ogni visita",
- "DefaultRevenueLabel": "Ricavo predefinito obiettivo",
"DefaultRevenueHelp": "Per esempio, un Form di Contatto inviato da un visitatore può valere mediamente $10. Matomo può aiutarti a capire quanto rendono i tuoi visitatori.",
+ "DefaultRevenueLabel": "Ricavo predefinito obiettivo",
"DeleteGoalConfirm": "Sei sicuro di voler cancellare il Goal %s?",
+ "Details": "Dettagli Goal",
"DocumentationRevenueGeneratedByProductSales": "Vendite prodotti. Escluse tasse, spedizione e sconto",
"Download": "Scarica un file",
"Ecommerce": "Ecommerce",
@@ -55,6 +57,8 @@
"EcommerceOrder": "Ordini Ecommerce",
"EcommerceOverview": "Panoramica Ecommerce",
"EcommerceReports": "Report Ecommerce",
+ "EventValueAsRevenueHelp": "Se l'evento di cui si sta eseguendo la corrispondenza ha dei ricavi, ed essi sono tracciati come valore dell'evento, è possibile abilitare questa opzione per registrare il valore dell'evento come ricavi della conversione dell'obiettivo. Se le entrate del tuo obiettivo non variano in base alla conversione, puoi ignorare questa opzione e impostare solo le entrate predefinite qui sopra.",
+ "EventValueAsRevenueHelp2": "Nota: se sono definiti sia un guadagno obiettivo che un valore evento, verrà utilizzato il valore dell'evento. Se questa opzione è abilitata e nessun valore evento viene inviato in una richiesta, verranno utilizzate le entrate predefinite (se definite).",
"ExceptionInvalidMatchingString": "Se scegli 'corrispondenza esatta', la stringa corrispondente deve essere un URL che inizia con %1$s. Ad esempio, '%2$s'.",
"ExternalWebsiteUrl": "URL sito esterno",
"Filename": "nome file",
@@ -64,30 +68,37 @@
"GoalIsTriggered": "L'obiettivo si attiva",
"GoalIsTriggeredWhen": "L'obiettivo si attiva quando",
"GoalName": "Nome Goal",
+ "GoalRevenue": "Ricavi Obiettivo",
+ "GoalX": "Goal %s",
"Goals": "Goals (Obiettivi)",
- "NGoals": "%s obiettivi",
- "NRevenue": "%s di ricavo",
- "NItems": "%s elementi",
- "ManageGoals": "Gestione Obiettivi (Goals)",
+ "GoalsAdjective": "Goal %s",
+ "GoalsBy": "Goal per %s",
"GoalsOverview": "Panoramica Goal",
"GoalsOverviewDocumentation": "Questa è una panoramica delle vostre conversioni degli obiettivi. Inizialmente il grafico mostra la somma di tutte le conversioni. %sSotto il grafico è possibile vedere i reports di conversione per ciascuno dei tuoi obiettivi. Le sparklines possono essere ingrandite cliccandoci sopra.",
- "GoalX": "Goal %s",
+ "GoalsOverviewSubcategoryHelp1": "La Panoramica degli Obiettivi riporta il rendimento degli obiettivi definiti per il tuo sito web. Puoi accedere alle percentuali di conversione del tuo obiettivo, all'importo delle entrate generate e ai report completi per ciascuno di essi.",
+ "GoalsOverviewSubcategoryHelp2": "Clicca su una singola metrica all'interno del grafico sparkline per focalizzarti su di essa all'interno del grafico dell'evoluzione a grandezza naturale.",
"HelpOneConversionPerVisit": "Se una pagina corrispondente a un Obiettivo è aggiornata o visualizzata più di una volta in una visita, l'Obiettivo verrà registrato solo la prima volta che la pagina è stata caricata durante questa visita.",
"IsExactly": "è esattamente %s",
"LearnMoreAboutGoalTrackingDocumentation": "Impara di più sul %1$sTracciamento dei Goal in Matomo%2$s nella documentazione per l'utente.",
"LeftInCart": "%s lasciato nel carrello",
+ "ManageGoals": "Gestione Obiettivi (Goals)",
+ "ManageGoalsSubcategoryHelp1": "Questa sezione ti consente di creare e modificare gli obiettivi per azioni specifiche che i visitatori intraprendono sul tuo sito, come visitare una determinata pagina o inviare un modulo specifico. I report sugli obiettivi variano ma possono aiutarti a monitorare le prestazioni del tuo sito web rispetto agli obiettivi di business come la generazione di lead, le vendite online e una maggiore visibilità del marchio.",
+ "ManageGoalsSubcategoryHelp2": "Scopri di più nella nostra guida agli Obiettivi qui.",
"Manually": "manualmente",
- "ManuallyTriggeredUsingJavascriptFunction": "Il Goal si attiva manualmente usando l'API Javascript trackGoal()",
+ "ManuallyTriggeredUsingJavascriptFunction": "Il Goal si attiva manualmente usando l'API JavaScript trackGoal()",
"MatchesExpression": "soddisfa l'espressione %s",
+ "NGoals": "%s obiettivi",
+ "NItems": "%s elementi",
+ "NRevenue": "%s di ricavo",
+ "NeedAccess": "Solo un Amministratore o un utente con privilegi di Super User può gestire gli Obiettivi di un dato sito.",
"NewGoalIntro": "Il tracciamento delle Conversioni Goal è uno dei modi più efficaci per misurare e migliorare i vostri obiettivi di business.",
"NewVisitorsConversionRateIs": "Il rapporto di conversione dei nuovi visitatori è %s",
- "NoGoalsNeedAccess2": "Solo un utente con diritti di scrittura, un Amministratore o un Super User può gestire gli Obiettivi per un determinato sito web. Chiedi al tuo amministratore di Matomo di impostare un Obiettivo per il tuo sito web. <br>Il tracciamento dei Goal è un grande modo per capire e massimizzare le prestazioni del tuo sito!",
"NoConversionsNoReportsMessage": "I report non vengono visualizzati perché non ci sono dati di conversione per il goal e il periodo selezionati.",
- "NeedAccess": "Solo un Amministratore o un utente con privilegi di Super User può gestire gli Obiettivi di un dato sito.",
+ "NoGoalsNeedAccess2": "Solo un utente con diritti di scrittura, un Amministratore o un Super User può gestire gli Obiettivi per un determinato sito web. Chiedi al tuo amministratore di Matomo di impostare un Obiettivo per il tuo sito web. <br>Il tracciamento dei Goal è un grande modo per capire e massimizzare le prestazioni del tuo sito!",
"Optional": "(opzionale)",
"OverallConversionRate": "rapporto complessivo conversioni (visite con un obiettivo raggiunto)",
- "ColumnOverallRevenue": "Ricavo complessivo",
"OverallRevenue": "ricavo complessivo",
+ "OverviewReportDocumentation": "Questo report fornisce una panoramica di quanto i tuoi visitatori convertano bene uno specifico goal.",
"PageTitle": "Titolo pagina",
"Pattern": "Pattern",
"PluginDescription": "Crea dei Goal e vedi i report dettagliati sulle tue conversioni dei goal: evoluzione nel tempo, guadagno per visita, conversioni per referrer, per keyword, e altro ancora.",
@@ -96,38 +107,27 @@
"ProductNames": "Nomi Prodotto",
"ProductPrice": "Prezzo Prodotto",
"ProductQuantity": "Quantità Prodotto",
- "Products": "Prodotti",
"ProductSKU": "SKU prodotto",
"ProductSKUs": "Codici Inventario Prodotto",
+ "Products": "Prodotti",
"ReturningVisitorsConversionRateIs": "Il rapporto di conversione dei visitatori che tornano è %s",
+ "SendEvent": "Invia un evento",
"SingleGoalOverviewDocumentation": "Questa è una panoramica delle conversioni per un unico obiettivo. %sLe sparklines sotto il grafico possono essere ingrandite cliccandoci sopra.",
"ThereIsNoGoalToManage": "Non ci sono goal da gestire per il sito %s",
- "UpdateGoal": "Aggiorna un Goal",
+ "TimeInMinutes": "Tempo in Minuti",
"URL": "URL",
+ "UpdateGoal": "Aggiorna un Goal",
+ "UseEventValueAsRevenue": "Usa il valore evento (se esiste) come ricavo della conversione obiettivo.",
"ViewAndEditGoals": "Guarda e Modifica i Goal",
- "GoalsBy": "Goal per %s",
- "GoalsAdjective": "Goal %s",
+ "VisitDuration": "la durata della visita è",
+ "VisitDurationMatchAttr": "Rimani per un certo periodo di tempo",
"VisitPageTitle": "Visita un determinato Titolo Pagina",
+ "VisitUrl": "Visitano uno specifico URL (pagina o gruppo di pagine)",
"VisitsUntilConv": "Visite alla Conversione",
"VisitsUntilConvReportDocumentation": "Questo report mostra il numero delle visite prima che i tuoi visitatori convertano un goal.",
- "VisitUrl": "Visitano uno specifico URL (pagina o gruppo di pagine)",
- "VisitDurationMatchAttr": "Rimani per un certo periodo di tempo",
- "VisitDuration": "la durata della visita è",
"WhenVisitors": "quando i visitatori",
"WhereThe": "dove le",
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "La pagina visitata deve contenere una chiamata al metodo JavaScript 'trackGoal' (%1$sleggi di più%2$s)",
- "YouCanEnableEcommerceReports": "Puoi abilitare %1$s per questo sito nella pagina %2$s.",
- "UseEventValueAsRevenue": "Usa il valore evento (se esiste) come ricavo della conversione obiettivo.",
- "GoalRevenue": "Ricavi Obiettivo",
- "EventValueAsRevenueHelp": "Se l'evento di cui si sta eseguendo la corrispondenza ha dei ricavi, ed essi sono tracciati come valore dell'evento, è possibile abilitare questa opzione per registrare il valore dell'evento come ricavi della conversione dell'obiettivo. Se le entrate del tuo obiettivo non variano in base alla conversione, puoi ignorare questa opzione e impostare solo le entrate predefinite qui sopra.",
- "EventValueAsRevenueHelp2": "Nota: se sono definiti sia un guadagno obiettivo che un valore evento, verrà utilizzato il valore dell'evento. Se questa opzione è abilitata e nessun valore evento viene inviato in una richiesta, verranno utilizzate le entrate predefinite (se definite).",
- "AtLeastMinutes": "almeno %1$s minuti. Usa i decimali per aggiungere i secondi, per esempio, %2$s per aggiungere 30 secondi.",
- "TimeInMinutes": "Tempo in Minuti",
- "ClickToViewThisGoal": "Clicca per vedere questo obiettivo.",
- "OverviewReportDocumentation": "Questo report fornisce una panoramica di quanto i tuoi visitatori convertano bene uno specifico goal.",
- "GoalsOverviewSubcategoryHelp1": "La Panoramica degli Obiettivi riporta il rendimento degli obiettivi definiti per il tuo sito web. Puoi accedere alle percentuali di conversione del tuo obiettivo, all'importo delle entrate generate e ai report completi per ciascuno di essi.",
- "GoalsOverviewSubcategoryHelp2": "Clicca su una singola metrica all'interno del grafico sparkline per focalizzarti su di essa all'interno del grafico dell'evoluzione a grandezza naturale.",
- "ManageGoalsSubcategoryHelp1": "Questa sezione ti consente di creare e modificare gli obiettivi per azioni specifiche che i visitatori intraprendono sul tuo sito, come visitare una determinata pagina o inviare un modulo specifico. I report sugli obiettivi variano ma possono aiutarti a monitorare le prestazioni del tuo sito web rispetto agli obiettivi di business come la generazione di lead, le vendite online e una maggiore visibilità del marchio.",
- "ManageGoalsSubcategoryHelp2": "Scopri di più nella nostra guida agli Obiettivi qui."
+ "YouCanEnableEcommerceReports": "Puoi abilitare %1$s per questo sito nella pagina %2$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Goals/lang/nb.json b/plugins/Goals/lang/nb.json
index b3ad679534..6f1a876827 100644
--- a/plugins/Goals/lang/nb.json
+++ b/plugins/Goals/lang/nb.json
@@ -6,6 +6,7 @@
"AddNewGoalOrEditExistingGoal": "%1$sLegg til nytt mål%2$s eller %3$sRediger%4$s eksisterende mål",
"AllowGoalConvertedMoreThanOncePerVisit": "Tillat mål å bli konvertert mer enn én gang per besøk",
"AllowMultipleConversionsPerVisit": "Tillat flere konverteringer per besøk",
+ "AtLeastMinutes": "minst %1$s minutter. Bruk desimaler for å samsvare med sekunder, for eksempel %2$s for 30 sekunder.",
"BestCountries": "Dine best konverterende land er:",
"BestKeywords": "Dine best konverterende nøkkelord er:",
"BestReferrers": "Dine best konverterende nettstedshenvisere er:",
@@ -71,16 +72,24 @@
"GoalsBy": "Mål etter %s",
"GoalsOverview": "Måloversikt",
"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.",
"IsExactly": "er akuratt %s",
"LeftInCart": "%s igjen i handlekurv",
"ManageGoals": "Behandle mål",
"Manually": "manuelt",
+ "ManuallyTriggeredUsingJavascriptFunction": "Målet utløses manuelt ved bruk av JavaScript-API-ets trackGoal()",
+ "MatchesExpression": "samsvarer med utrykket «%s»",
"NGoals": "%s mål",
"NItems": "%s elementer",
"NRevenue": "%s omsetning",
+ "NeedAccess": "Kun en administrator eller en bruker med superbrukertilgang kan håndtere mål for en gitt nettside.",
"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.",
"Optional": "(valgfritt)",
+ "OverallConversionRate": "samlet konverteringsrate (besøk med et fullført mål)",
"OverallRevenue": "samlet omsetning",
+ "OverviewReportDocumentation": "Denne rapporten gir deg en oversikt over utstrekningen dine besøkende konverterte et gitt mål.",
"PageTitle": "Sidetittel",
"Pattern": "Mønster",
"PluginDescription": "Opprett mål og få detaljerte rapporter om dine målkonverteringer: utvikling over tid, omsetning per besøk, konverteringer per henviser, per nøkkelord, med mer.",
@@ -92,15 +101,23 @@
"ProductSKU": "Produkt-SKU",
"ProductSKUs": "Produktvarianter",
"Products": "Produkter",
+ "ReturningVisitorsConversionRateIs": "Konverteringsrate for tilbakevendende besøkende er %s",
"SendEvent": "Send en hendelse",
+ "SingleGoalOverviewDocumentation": "Dette er en oversikt over konverteringene for et enkelt mål. %s-minidiagrammer under diagrammet kan forstørres ved å klikke på dem.",
+ "ThereIsNoGoalToManage": "Det er ingen mål å håndtere for nettsiden %s",
"TimeInMinutes": "Tid i minutter",
"URL": "URL",
"UpdateGoal": "Oppdater mål",
"UseEventValueAsRevenue": "Bruk hendelsesverdien (hvis den finnes) for å se målsatt konverteringsomsetning.",
"ViewAndEditGoals": "Vis og rediger mål",
"VisitDuration": "besøksvarigheten er",
+ "VisitDurationMatchAttr": "Bli værende en gitt mengde tid",
+ "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.",
"WhenVisitors": "når besøkende",
- "WhereThe": "hvor"
+ "WhereThe": "hvor",
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "Besøkt side må inneholde et kall til «trackGoal»-JavaScript-metoden (%1$slær mer%2$s)",
+ "YouCanEnableEcommerceReports": "Du kan skru på %1$s for denne nettsiden fra %2$s-siden."
}
}
diff --git a/plugins/Goals/lang/sq.json b/plugins/Goals/lang/sq.json
index 8722d4ad53..5b70bb32c3 100644
--- a/plugins/Goals/lang/sq.json
+++ b/plugins/Goals/lang/sq.json
@@ -6,35 +6,37 @@
"AddNewGoalOrEditExistingGoal": "%1$sShtoni Objektiv të ri%2$s ose %3$sPërpunoni%4$s Objektiva ekzistuese",
"AllowGoalConvertedMoreThanOncePerVisit": "Lejoje Objektivin të shndërrohet më shumë se një herë për vizitë",
"AllowMultipleConversionsPerVisit": "Lejo shndërrime shumëfishe për vizitë",
+ "AtLeastMinutes": "të paktën %1$s minuta. Përdorni shifra dhjetore për sekonda, për shembull, %2$s për përputhje me 30 sekonda.",
"BestCountries": "Vendet me shndërrime më të mira për ju janë:",
"BestKeywords": "Fjalëkyçet kryesues për shndërrimet tuaja janë:",
"BestReferrers": "Sjellësit më të mirë të shndërrimeve nga sajte për ju janë:",
- "CaseSensitive": "Përputhje për siç është shkruar",
"CancelAndReturnToGoals": "Anulojeni dhe %1$skthehuni te lista e objektivave%2$s",
+ "CaseSensitive": "Përputhje për siç është shkruar",
+ "CategoryTextDevicesDetection_DevicesDetection": "Pajisje",
+ "CategoryTextGeneral_Visit": "angazhim",
"CategoryTextGeneral_Visitors": "Vend përdoruesi",
"CategoryTextReferrers_Referrers": "Sjellës",
"CategoryTextVisitsSummary_VisitsSummary": "Atribut përdoruesi",
- "CategoryTextDevicesDetection_DevicesDetection": "Pajisje",
- "CategoryTextGeneral_Visit": "angazhim",
"ClickOutlink": "Klikon mbi një Lidhje për te një sajt i jashtëm",
- "SendEvent": "Dërgoni një akt",
+ "ClickToViewThisGoal": "Klikoni për të parë këtë objektiv.",
"ColumnAverageOrderRevenueDocumentation": "Vlera Mesatare për Porosi (VMP) është shifra e marrë nga pjesëtimi i të ardhurave gjithsej nga krejt Porositë E-tregti me numrin e porosive.",
"ColumnAveragePriceDocumentation": "Të ardhurat mesatare për këtë %s.",
"ColumnAverageQuantityDocumentation": "Sasia mesatare e këtij %s shitur nga porosi E-tregtie.",
"ColumnConversionRateDocumentation": "Përqindja e vizitave që shkaktuan veprimtari për objektivin %s.",
"ColumnConversionRateProductDocumentation": "Koeficienti i shndërrimit %s është numri i porosive që përmbajnë këtë produkt pjesëtuar me numrin e vizitave bërë te faqja e produktit.",
"ColumnConversions": "Shndërrime",
- "Conversion": "Shndërrim",
"ColumnConversionsDocumentation": "Numër shndërrimesh për %s.",
"ColumnOrdersDocumentation": "Numri gjithsej i porosive E-tregti që e përmbanin këtë %s të paktën një herë.",
+ "ColumnOverallRevenue": "Të ardhura gjithsej",
"ColumnPurchasedProductsDocumentation": "Numri i produkteve të blera është shuma e sasive të Produkteve të shitura nga krejt porositë E-tregti.",
"ColumnQuantityDocumentation": "Sasia është numri gjithsej i produkteve të shitura për secilin %s.",
"ColumnRevenueDocumentation": "Të ardhura gjithsej fituar nga %s.",
"ColumnRevenuePerVisitDocumentation": "Të ardhura gjithsej të rrjedhura nga %s pjesëtuar me numrin e vizitave.",
"ColumnVisits": "Numër vizitash gjithsej, pavarësisht nëse u shkaktua a jo veprimtari te një objektiv.",
- "ColumnVisitsProductDocumentation": "Numri i vizitave te faqja Produkt\/Kategori. Kjo përdoret gjithashtu për të përpunuar koeficientin %s e shndërrimeve. Kjo vlerë gjendet te raporti, nëse ndjekja e parjeve E-tregti është rregulluar te faqet Produkt\/Kategori.",
+ "ColumnVisitsProductDocumentation": "Numri i vizitave te faqja Produkt/Kategori. Kjo përdoret gjithashtu për të përpunuar koeficientin %s të shndërrimeve. Kjo vlerë gjendet te raporti, nëse ndjekja e parjeve E-tregti është rregulluar te faqet Produkt/Kategori.",
"Contains": "përmban %s",
- "ConversionByTypeReportDocumentation": "Ky raport ofron të dhëna të hollësishme rreth funksionimit të objektivave (shndërrime, koeficient shndërrimesh dhe të ardhura për vizitë) për secilën prej kategorive të mundshme te paneli majtas. %1$s Ju lutemi, klikoni mbi një nga këto kategori që të shihni raportin. %2$s Për më tepër të dhëna, lexoni %3$sdokumentimin për Ndjekje%4$s",
+ "Conversion": "Shndërrim",
+ "ConversionByTypeReportDocumentation": "Ky raport ofron të dhëna të hollësishme rreth funksionimit të objektivave (shndërrime, koeficient shndërrimesh dhe të ardhura për vizitë) për secilën prej kategorive të mundshme te paneli majtas. %1$s Ju lutemi, klikoni mbi një nga këto kategori që të shihni raportin. %2$s Për më hollësi, lexoni %3$sdokumentimin për Ndjekje%4$s",
"ConversionRate": "Koeficient shndërrimi %s",
"Conversions": "Shndërrime %s",
"ConversionsDescription": "shndërrime",
@@ -42,19 +44,21 @@
"ConversionsOverviewBy": "Përmbledhje shndërrimesh sipas llojit të vizitave",
"DaysToConv": "Ditë për Shndërrim",
"DaysToConvReportDocumentation": "Ky raport shfaq sa ditë kalojnë para se vizitorët tuaj të shndërrojnë një objektiv.",
- "Details": "Hollësi objektivi",
"DefaultGoalConvertedOncePerVisit": "(parazgjedhje) Objektivi mund të shndërrohet një herë për vizitë",
- "DefaultRevenueLabel": "Të ardhura parazgjedhje objektivi",
"DefaultRevenueHelp": "Për shembull, një Formular Kontakti parashtruar nga një vizitor mund të vlejë mesatarisht 10 euro. Matomo do t’ju ndihmojë të kuptoni se si shtresëzohen segmentet e vizitorëve tuaj.",
+ "DefaultRevenueLabel": "Të ardhura parazgjedhje objektivi",
"DeleteGoalConfirm": "Jeni i sigurt se doni të fshihet Objektivi %s?",
+ "Details": "Hollësi objektivi",
"DocumentationRevenueGeneratedByProductSales": "Shitje produkti. Pa taksa, dërgesë dhe zbritje çmimi",
"Download": "Shkarkon një kartelë",
"Ecommerce": "E-tregti",
- "EcommerceAndGoalsMenu": "E-tregti & Objektiva",
+ "EcommerceAndGoalsMenu": "E-tregti &amp; Objektiva",
"EcommerceLog": "Regjistër E-tregtie",
"EcommerceOrder": "Porosi E-tregtie",
"EcommerceOverview": "Përmbledhje E-tregtie",
"EcommerceReports": "Raporte E-tregtie",
+ "EventValueAsRevenueHelp": "Nëse veprimtaria për të cilën po kërkoni përputhje, ka të ardhura dhe këto të ardhura ndiqen si vlera e veprimtarisë, mund ta aktivizoni këtë mundësi për të regjistruar vlerën e veprimtarisë si të ardhura shndërrimi objektivi. Nëse të ardhurat e objektivit tuaja nuk ndryshojnë sipas shndërrimesh, mund ta shpërfillni këtë mundësi dhe thjesht të caktoni më sipër një të ardhur parazgjedhje.",
+ "EventValueAsRevenueHelp2": "Shënim: Nëse janë caktuar si e ardhura parazgjedhje e objektivit, ashtu edhe vlera e veprimtarisë, do të përdoret vlera e veprimtarisë. Nëse kjo mundësi është e aktivizuar dhe në një kërkesë s’është dërguar vlerë veprimtarie, do të përdoret vlera parazgjedhje (në pastë të caktuar një të tillë).",
"ExceptionInvalidMatchingString": "Nëse zgjidhni 'përputhje e përpiktë', vargu për përputhje duhet të jetë një URL që fillon me %1$s. Për shembull, '%2$s'.",
"ExternalWebsiteUrl": "URL sajti të jashtëm",
"Filename": "emër kartele",
@@ -64,30 +68,37 @@
"GoalIsTriggered": "Objektivi vihet në punë",
"GoalIsTriggeredWhen": "Objektivi vihet në punë kur",
"GoalName": "Emër Objektivi",
+ "GoalRevenue": "Të ardhura Objektivi",
+ "GoalX": "Objektiv %s",
"Goals": "Objektiva",
- "NGoals": "%s synime",
- "NRevenue": "%s të ardhura",
- "NItems": "%s objekte",
- "ManageGoals": "Administroni Objektiva",
- "GoalsOverview": "Përmbledhje objektivash",
+ "GoalsAdjective": "Objektiva %s",
+ "GoalsBy": "Objektiva sipas %s",
+ "GoalsOverview": "Përmbledhje Objektivash",
"GoalsOverviewDocumentation": "Kjo është një përmbledhje e shndërrimeve tuaja për objektivat. Fillimisht, grafiku tregon shumën e krejt shndërrimeve. %s Nën grafik, mund të shihni raporte shndërrimesh për secilin prej objektivave tuaj. Grafikët vijëzorë mund të zmadhohen duke klikuar mbi ta.",
- "GoalX": "Objektiv %s",
- "HelpOneConversionPerVisit": "Nëse një faqe që përputhet me këtë Objektiv rifreskohet ose shihet më shumë se një herë gjatë një Vizite, Objektivi do të ndiqet vetëm herën e parë që faqja u ngarkua gjatë kësaj vizite.",
+ "GoalsOverviewSubcategoryHelp1": "Përmbledhje Objektivash raporton mbi funksionimin e objektivave të përkufizuar për sajtin tuaj. Mund të shihni përqindje shndërrimesh për objektivat tuaj, sasinë e të ardhurave dhe raporte të plotë për secilin.",
+ "GoalsOverviewSubcategoryHelp2": "Klikoni mbi një vlerë individuale brenda grafikut që fokusi të kalojë mbi të, brenda grafikut në madhësi të plotë të evolucionit.",
+ "HelpOneConversionPerVisit": "Nëse një faqe që përputhet me këtë Objektiv rifreskohet, ose shihet më shumë se një herë gjatë një Vizite, Objektivi do të ndiqet vetëm herën e parë që faqja u ngarkua gjatë kësaj vizite.",
"IsExactly": "është saktësisht %s",
"LearnMoreAboutGoalTrackingDocumentation": "Mësoni më tepër mbi %1$sNdjekje Objektivash në Matomo%2$s, te dokumentimi i përdoruesit.",
"LeftInCart": "%s ende në shportë",
+ "ManageGoals": "Administroni Objektiva",
+ "ManageGoalsSubcategoryHelp1": "Kjo ndarje ju lejon të krijoni dhe përpunoni Objektiva për veprime të caktuara që bëjnë vizitorët në sajtin tuaj, bie fjala, vizita në një faqe të caktuar ose parashtrimi i një formulari të caktuar. Raportet e objektivave janë të larmishëm, por mund t’ju ndihmojnë të ndiqni suksesin e sajtit tuaj sipas objektivash biznesi, të tillë si, “lead generation”, shitje internetore dhe ekspozim më i madh marke.",
+ "ManageGoalsSubcategoryHelp2": "Mësoni më tepër, te udhërrëfyesi unë për Objektiva, këtu.",
"Manually": "dorazi",
"ManuallyTriggeredUsingJavascriptFunction": "Objektivi vihet në punë dorazi duke përdorur JavaScript API trackGoal()",
- "MatchesExpression": "përputhet me shprehjen %s",
- "NewGoalIntro": "Ndjekja e Shndërrimeve të Objektivave është një rrugët më të efektshme për të matur dhe përmirësuar objektivat e biznesit tuaj.",
+ "MatchesExpression": "ka përputhje me shprehjen %s",
+ "NGoals": "%s synime",
+ "NItems": "%s objekte",
+ "NRevenue": "%s të ardhura",
+ "NeedAccess": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm Përgjegjësi, ose një përdorues me leje Superpërdoruesi.",
+ "NewGoalIntro": "Ndjekja e Shndërrimeve të Objektivave është një nga rrugët më të efektshme për të matur dhe përmirësuar objektivat e biznesit tuaj.",
"NewVisitorsConversionRateIs": "Koeficienti i shndërrimit për vizitorë të rinj është %s",
- "NoGoalsNeedAccess2": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm një përdorues Shkrimesh, një Përgjegjës ose një përdorues me të drejta hyrjeje Superpërdoruesi. Ju lutemi, kërkojini përgjegjësit të Matomo-s tuaj të caktojë një Objektiv për sajtin tuaj. <br>Ndjekja e Objektivave është një mënyrë e bukur për t’ju ndihmuar të kuptoni dhe maksimizoni funksionimin e sajtit tuaj!",
- "NoConversionsNoReportsMessage": "Raportet nuk shfaqen, ngaqë nuk ka të dhëna shndërrimesh për objektivin dhe periudhën e zgjedhur.",
- "NeedAccess": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm Përgjegjësi ose një përdorues me leje Superpërdoruesi.",
+ "NoConversionsNoReportsMessage": "Raportet nuk shfaqen, ngaqë s’ka të dhëna shndërrimesh për objektivin dhe periudhën e zgjedhur.",
+ "NoGoalsNeedAccess2": "Objektivat për një sajt të dhënë mund t’i administrojë vetëm një përdorues Shkrimesh, një Përgjegjës ose një përdorues me të drejta hyrjeje Superpërdoruesi. Ju lutemi, kërkojini përgjegjësit të Matomo-s tuaj të caktojë një Objektiv për sajtin tuaj. <br>Ndjekja e Objektivave është një mënyrë e bukur për t’ju ndihmuar të kuptoni dhe shpini në maksimum funksionimin e sajtit tuaj!",
"Optional": "(opsionale)",
- "OverallConversionRate": "mesatare gjithsej shndërrimesh (vizita me objektiv të plotësuar)",
- "ColumnOverallRevenue": "Të ardhura gjithsej",
+ "OverallConversionRate": "mesatare shndërrimesh gjithsej (vizita me objektiv të plotësuar)",
"OverallRevenue": "të ardhura gjithsej",
+ "OverviewReportDocumentation": "Ky raport jep një përmbledhje se sa mirë shndërrohet për vizitorët tuaj një objektiv të caktuar.",
"PageTitle": "Titull Faqeje",
"Pattern": "Mostër",
"PluginDescription": "Krijoni Objektiva dhe shihni raporte të hollësishëm mbi shndërrime të objektivave tuaj: evolucioni përgjatë kohës, të ardhura për vizitë, shndërrime sipas sjellësish, fjalëkyçesh, etj.",
@@ -96,38 +107,27 @@
"ProductNames": "Emra Produktesh",
"ProductPrice": "Çmim Produkti",
"ProductQuantity": "Sasi Produkti",
- "Products": "Produkte",
"ProductSKU": "SKU Produkti",
- "ProductSKUs": "SKU Produkti",
+ "ProductSKUs": "SKU Produktesh",
+ "Products": "Produkte",
"ReturningVisitorsConversionRateIs": "Koeficienti i shndërrimit për vizitorë të rikthyer është %s",
+ "SendEvent": "Dërgoni një akt",
"SingleGoalOverviewDocumentation": "Kjo është një përmbledhje e shndërrimeve për një objektiv të vetëm. %s Grafikët vijëzorë nën të mund të zgjerohen duke klikuar mbi to.",
"ThereIsNoGoalToManage": "Për sajtin %s s’ka objektiva për administrim",
- "UpdateGoal": "Përditësoni Objektiv",
+ "TimeInMinutes": "Kohë në Minuta",
"URL": "URL",
+ "UpdateGoal": "Përditësoni Objektiv",
+ "UseEventValueAsRevenue": "Përdore vlerën e veprimtarisë (në pastë) si të ardhur shndërrimi objektivi.",
"ViewAndEditGoals": "Shihni dhe Përpunoni Objektiva",
- "GoalsBy": "Objektiva sipas %s",
- "GoalsAdjective": "Objektiva %s",
+ "VisitDuration": "kohëzgjatja e vizitës është",
+ "VisitDurationMatchAttr": "Qëndro për një kohë të caktuar",
"VisitPageTitle": "Vizitoni një Titull Faqeje të dhënë",
- "VisitsUntilConv": "Vizita për Shndërrim",
- "VisitsUntilConvReportDocumentation": "Ky raport shfaq numrin e vizitave të bëra përpara se një vizitor të shndërrojë një objekti.",
"VisitUrl": "Vizitoni një URL të dhënë (faqe ose grup faqesh)",
- "VisitDurationMatchAttr": "Qëndro për një kohë të caktuar",
- "VisitDuration": "gjatësia e vizitës është",
+ "VisitsUntilConv": "Vizita për Shndërrim",
+ "VisitsUntilConvReportDocumentation": "Ky raport shfaq numrin e vizitave të bëra përpara se një vizitor të shndërrojë një objektiv.",
"WhenVisitors": "kur vizitorët",
"WhereThe": "kur",
"WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "Faqja e vizituar lypset të përmbajë një thirrje të metodës JavaScript 'trackGoal' (%1$smësoni më tepër%2$s)",
- "YouCanEnableEcommerceReports": "Për këtë sajt mund të aktivizoni %1$s te faqja %2$s.",
- "UseEventValueAsRevenue": "Përdore vlerën e veprimtarisë (në pastë) si të ardhur shndërrimi objektivi.",
- "GoalRevenue": "Të ardhura Objektivi",
- "EventValueAsRevenueHelp": "Nëse veprimtaria për të cilën keni përputhje ka të ardhura, dhe këto të ardhura ndiqen si vlera e veprimtarisë, mund ta aktivizoni këtë mundësi për të regjistruar vlerën e veprimtarisë si të ardhura shndërrimi objektivi. Nëse të ardhurat e objektivit tuaja nuk ndryshojnë sipas shndërrimesh, mund ta shpërfillni këtë mundësi dhe thjesht të caktoni më sipër një të ardhur parazgjedhje.",
- "EventValueAsRevenueHelp2": "Shënim: Nëse janë caktuar si e ardhura parazgjedhje e objektivit, ashtu edhe vlera e veprimtarisë, do të përdoret vlera e veprimtarisë. Nëse kjo mundësi është e aktivizuar dhe në një kërkesë nuk është dërguar vlerë veprimtarie, do të përdoret vlera parazgjedhje (në pastë të caktuar një të tillë).",
- "AtLeastMinutes": "të paktën %1$s minuta. Përdorni shifra dhjetore për sekonda, për shembull, %2$s për përputhje me 30 sekonda.",
- "TimeInMinutes": "Kohë në Minuta",
- "ClickToViewThisGoal": "Klikoni për të parë këtë objektiv.",
- "OverviewReportDocumentation": "Ky raport jep një përmbledhje se sa mirë e shndërrojnë vizitorët tuaj një objektiv të caktuar.",
- "GoalsOverviewSubcategoryHelp1": "Përmbledhje Objektivash raporton mbi funksionimin e objektivave të përkufizuar për sajtin tuaj. Mund të shihni përqindje shndërrimesh për objektivat tuaj, sasinë e të ardhurave dhe raporte të plotë për secilin.",
- "GoalsOverviewSubcategoryHelp2": "Klikoni mbi një vlerë individuale brenda grafikut që fokusi të kalojë mbi të, brenda grafikut në madhësi të plotë të evolucionit.",
- "ManageGoalsSubcategoryHelp1": "Kjo ndarje ju lejon të krijoni dhe përpunoni Objektiva për veprime të caktuara që bëjnë vizitorët në sajtin tuaj, bie fjala, vizita në një faqe të caktuar ose parashtrimi i një formulari të caktuar. Raportet e objektivave janë të larmishëm, por mund t’ju ndihmojnë të ndiqni suksesin e sajtit tuaj sipas objektivash biznesi, të tillë si, “lead generation”, shitje internetore dhe ekspozim më i madh marke.",
- "ManageGoalsSubcategoryHelp2": "Mësoni më tepër, te udhërrëfyesi unë për Objektiva, këtu."
+ "YouCanEnableEcommerceReports": "Për këtë sajt mund të aktivizoni %1$s te faqja %2$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Goals/templates/_addEditGoal.twig b/plugins/Goals/templates/_addEditGoal.twig
index 16be9c2424..ab1a57acf6 100644
--- a/plugins/Goals/templates/_addEditGoal.twig
+++ b/plugins/Goals/templates/_addEditGoal.twig
@@ -13,22 +13,32 @@
</script>
-<div piwik-manage-goals
- {% if userCanEditGoals %}
- {% if onlyShowAddNewGoal is not defined %}
- {% if idGoal %}
- show-goal="{{ idGoal|e('js') }}"
- {% endif %}
- {% else %}
- show-add-goal="true"
- {% endif %}
- {% endif %}>
-
- {% if onlyShowAddNewGoal is not defined %}
- {% include "@Goals/_listGoalEdit.twig" %}
- {% endif %}
+<div
+ piwik-manage-goals
+ user-can-edit-goals="{{ userCanEditGoals|json_encode|e('html_attr') }}"
+ only-show-add-new-goal="{{ onlyShowAddNewGoal|default(false)|json_encode|e('html_attr') }}"
+ ecommerce-enabled="{{ ecommerceEnabled|json_encode|e('html_attr') }}"
{% if userCanEditGoals %}
- {% include "@Goals/_formAddGoal.twig" %}
+ {% if onlyShowAddNewGoal is not defined or not onlyShowAddNewGoal %}
+ goals="{{ goals|json_encode|e('html_attr') }}"
+ {% if idGoal %}
+ show-goal="{{ idGoal|e('js') }}"
+ {% endif %}
+ {% else %}
+ show-add-goal="true"
+ {% endif %}
+ {% else %}
+ goals="{{ goals|json_encode|e('html_attr') }}"
{% endif %}
- <a id='bottom'></a>
+ {% if addNewGoalIntro is defined %}add-new-goal-intro="{{ addNewGoalIntro|json_encode|e('html_attr') }}"{% endif %}
+ goal-trigger-type-options="{{ goalTriggerTypeOptions|json_encode|e('html_attr') }}"
+ goal-match-attribute-options="{{ goalMatchAttributeOptions|json_encode|e('html_attr') }}"
+ event-type-options="{{ eventTypeOptions|json_encode|e('html_attr') }}"
+ pattern-type-options="{{ patternTypeOptions|json_encode|e('html_attr') }}"
+ numeric-comparison-type-options="{{ numericComparisonTypeOptions|json_encode|e('html_attr') }}"
+ allow-multiple-options="{{ allowMultipleOptions|json_encode|e('html_attr') }}"
+ before-goal-list-actions-body="{{ beforeGoalListActionsBodyEventResult|default(null)|json_encode|e('html_attr') }}"
+ end-edit-table="{{ endEditTable|default(null)|json_encode|e('html_attr') }}"
+ before-goal-list-actions-head="{{ beforeGoalListActionsHead|default(null)|json_encode|e('html_attr') }}"
+>
</div>
diff --git a/plugins/Goals/templates/_formAddGoal.twig b/plugins/Goals/templates/_formAddGoal.twig
deleted file mode 100644
index 174a98ce1e..0000000000
--- a/plugins/Goals/templates/_formAddGoal.twig
+++ /dev/null
@@ -1,183 +0,0 @@
-<div piwik-content-block
- content-title="{{ 'Goals_AddNewGoal'|translate|e('html_attr') }}"
- class="addEditGoal"
- ng-show="manageGoals.showEditGoal">
-
- {% if addNewGoalIntro is defined and addNewGoalIntro %}
- {{ addNewGoalIntro|raw }}
- {% endif %}
-
- <div piwik-form>
- <div piwik-field uicontrol="text" name="goal_name"
- ng-model="manageGoals.goal.name"
- maxlength="50"
- data-title="{{ 'Goals_GoalName'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="text" name="goal_description"
- ng-model="manageGoals.goal.description"
- maxlength="255"
- data-title="{{ 'General_Description'|translate|e('html_attr') }}">
- </div>
-
- <div class="row goalIsTriggeredWhen">
- <div class="col s12">
- <h3>{{ 'Goals_GoalIsTriggered'|translate|e('html_attr') }}</h3>
- </div>
- </div>
-
- <div class="row">
- <div class="col s12 m6 goalTriggerType">
- <div piwik-field uicontrol="select" name="trigger_type"
- ng-model="manageGoals.goal.triggerType"
- ng-change="manageGoals.changedTriggerType()"
- full-width="true"
- options="{{ goalTriggerTypeOptions|json_encode }}">
- </div>
- </div>
- <div class="col s12 m6">
- <div piwik-alert="info" ng-show="manageGoals.goal.triggerType == 'manually'">
- {{ 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore'|translate("<a target='_blank' rel='noreferrer noopener' href='https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions'>","</a>")|raw }}
- </div>
-
- <div piwik-field uicontrol="radio" name="match_attribute"
- ng-show="manageGoals.goal.triggerType != 'manually'"
- full-width="true"
- ng-model="manageGoals.goal.matchAttribute"
- ng-change="manageGoals.initPatternType()"
- options="{{ goalMatchAttributeOptions|json_encode }}">
- </div>
- </div>
- </div>
-
- <div class="row whereTheMatchAttrbiute" ng-show="manageGoals.goal.triggerType != 'manually'">
- <h3 class="col s12">{{ 'Goals_WhereThe'|translate|e('html_attr') }}
- <span ng-show="manageGoals.goal.matchAttribute == 'url'">
- {{ 'Goals_URL'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'title'">
- {{ 'Goals_PageTitle'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'file'">
- {{ 'Goals_Filename'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'external_website'">
- {{ 'Goals_ExternalWebsiteUrl'|translate }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'visit_duration'">
- {{ 'Goals_VisitDuration'|translate }}
- </span>
- </h3>
- </div>
-
- <div class="row" ng-show="manageGoals.goal.triggerType != 'manually'">
- <div class="col s12 m6 l4"
- ng-show="manageGoals.goal.matchAttribute == 'event'">
- <div piwik-field uicontrol="select" name="event_type"
- ng-model="manageGoals.goal.eventType"
- full-width="true"
- options="{{ eventTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4" ng-if="!manageGoals.isMatchAttributeNumeric()">
- <div piwik-field uicontrol="select" name="pattern_type"
- ng-model="manageGoals.goal.patternType"
- full-width="true"
- options="{{ patternTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4" ng-if="manageGoals.isMatchAttributeNumeric()">
- <div piwik-field uicontrol="select" name="pattern_type"
- ng-model="manageGoals.goal.patternType"
- full-width="true"
- options="{{ numericComparisonTypeOptions|json_encode }}">
- </div>
- </div>
-
- <div class="col s12 m6 l4">
- <div piwik-field uicontrol="text" name="pattern"
- ng-model="manageGoals.goal.pattern"
- maxlength="255"
- data-title="{{ "{{ manageGoals.getPatternFieldLabel() }}"|raw }}"
- full-width="true">
- </div>
- </div>
-
- <div id="examples_pattern" class="col s12" piwik-alert="info">
- <span ng-show="manageGoals.goal.matchAttribute == 'url'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'checkout/confirmation'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://example.com/thank-you.html'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)\\\/demo\\\/(.*)'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'title'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'Order confirmation'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'file'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'files/brochure.pdf'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://example.com/files/brochure.pdf'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)\\\.zip'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'external_website'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'amazon.com'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'http://mypartner.com/landing.html'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'http://www.amazon.com\\\/(.*)\\\/yourAffiliateId'") }}
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'event'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_Contains'|translate("'video'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_IsExactly'|translate("'click'") }}
- <br />{{ 'General_ForExampleShort'|translate }} {{ 'Goals_MatchesExpression'|translate("'(.*)_banner'") }}"
- </span>
- <span ng-show="manageGoals.goal.matchAttribute == 'visit_duration'">
- {{ 'General_ForExampleShort'|translate }} {{ 'Goals_AtLeastMinutes'|translate('5', '0.5') }}
- </span>
- </div>
- </div>
-
- <div piwik-field uicontrol="checkbox" name="case_sensitive"
- ng-model="manageGoals.goal.caseSensitive"
- ng-show="manageGoals.goal.triggerType != 'manually' && !manageGoals.isMatchAttributeNumeric()"
- data-title="{{ 'Goals_CaseSensitive'|translate|e('html_attr') }} {{ 'Goals_Optional'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="radio" name="allow_multiple"
- ng-model="manageGoals.goal.allowMultiple"
- ng-if="manageGoals.goal.matchAttribute !== 'visit_duration'"
- options="{{ allowMultipleOptions|json_encode }}"
- introduction="{{ 'Goals_AllowMultipleConversionsPerVisit'|translate|e('html_attr') }}"
- inline-help="{{ 'Goals_HelpOneConversionPerVisit'|translate|e('html_attr') }}">
- </div>
-
- <h3>{{ 'Goals_GoalRevenue'|translate }} {{ 'Goals_Optional'|translate }}</h3>
-
- <div piwik-field uicontrol="number" name="revenue"
- ng-model="manageGoals.goal.revenue"
- placeholder="{{ 'Goals_DefaultRevenueLabel'|translate }}"
- inline-help="{{ 'Goals_DefaultRevenueHelp'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="use_event_value"
- ng-model="manageGoals.goal.useEventValueAsRevenue"
- data-title="{{ 'Goals_UseEventValueAsRevenue'|translate|e('html_attr') }}"
- ng-show="manageGoals.goal.matchAttribute == 'event'"
- inline-help="{{ 'Goals_EventValueAsRevenueHelp'|translate|e('html_attr') }} &lt;br/&gt;&lt;br/&gt; {{ 'Goals_EventValueAsRevenueHelp2'|translate|e('html_attr') }}"
- >
- </div>
-
- {{ postEvent("Template.endGoalEditTable") }}
-
- <input type="hidden" name="goalIdUpdate" value=""/>
- <div piwik-save-button
- saving="manageGoals.isLoading"
- onconfirm="manageGoals.save()"
- ng-value="manageGoals.goal.submitText"></div>
-
- {% if onlyShowAddNewGoal is not defined %}
- <div class='entityCancel' ng-show="manageGoals.showEditGoal" ng-click="manageGoals.showListOfReports()">
- {{ 'General_OrCancel'|translate("<a class='entityCancelLink'>","</a>")|raw }}
- </div>
- {% endif %}
- </div>
-
-</div>
diff --git a/plugins/Goals/templates/_listGoalEdit.twig b/plugins/Goals/templates/_listGoalEdit.twig
deleted file mode 100644
index 1a30547343..0000000000
--- a/plugins/Goals/templates/_listGoalEdit.twig
+++ /dev/null
@@ -1,122 +0,0 @@
-<div id='entityEditContainer' feature="true"
- ng-show="manageGoals.showGoalList"
- piwik-content-block content-title="{{ 'Goals_ManageGoals'|translate|e('html_attr') }}"
- class="managegoals">
-
- <div piwik-activity-indicator loading="manageGoals.isLoading"></div>
-
- <div class="contentHelp">
- {{ 'Goals_LearnMoreAboutGoalTrackingDocumentation'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/docs/tracking-goals-web-analytics/'>","</a>")|raw }}
-
- {% if not ecommerceEnabled %}
- <br /><br/>
- {% set websiteManageText %}
- <a href='{{ linkTo({'module':'SitesManager','action':'index' }) }}'>{{ 'SitesManager_WebsitesManagement'|translate }}</a>
- {% endset %}
- {% set ecommerceReportText %}
- <a href="https://matomo.org/docs/ecommerce-analytics/" rel="noreferrer noopener" target="_blank">{{ 'Goals_EcommerceReports'|translate }}</a>
- {% endset %}
- {{ 'Goals_Optional'|translate }} {{ 'Goals_Ecommerce'|translate }}: {{ 'Goals_YouCanEnableEcommerceReports'|translate(ecommerceReportText,websiteManageText)|raw }}
- {% endif %}
- </div>
-
- <table piwik-content-table>
- <thead>
- <tr>
- <th class="first">Id</th>
- <th>{{ 'Goals_GoalName'|translate }}</th>
- <th>{{ 'General_Description'|translate }}</th>
- <th>{{ 'Goals_GoalIsTriggeredWhen'|translate }}</th>
- <th>{{ 'General_ColumnRevenue'|translate }}</th>
- {{ postEvent("Template.beforeGoalListActionsHead") }}
- {% if userCanEditGoals %}
- <th>{{ 'General_Edit'|translate }}</th>
- <th>{{ 'General_Delete'|translate }}</th>
- {% endif %}
- </tr>
- </thead>
- {% if goals is empty %}
- <tr>
- <td colspan='8'>
- <br/>
- {{ 'Goals_ThereIsNoGoalToManage'|translate(siteName)|rawSafeDecoded }}.
- <br/><br/>
- </td>
- </tr>
- {% else %}
- {% for goal in goals %}
- <tr id="{{ goal.idgoal }}">
- <td class="first">{{ goal.idgoal }}</td>
- <td>{{ goal.name }}</td>
- <td>{{ goal.description }}</td>
- <td>
- <span class='matchAttribute'>{{ goal.match_attribute }}</span>
- {% if goal.match_attribute == 'visit_duration' %}
- {{ 'General_OperationGreaterThan'|translate|lcfirst }} {{ 'Intl_NMinutes'|translate(goal.pattern) }}
- {% else %}
- {% if goal.pattern_type is defined %}
- <br/>
- {{ 'Goals_Pattern'|translate }} {{ goal.pattern_type }}: {{ goal.pattern }}
- {% endif %}
- {% endif %}
- </td>
- <td class="center">
- {% if goal.revenue==0 %}-{% else %}{{ goal.revenue|money(idSite)|raw }}{% endif %}
- </td>
- {{ postEvent("Template.beforeGoalListActionsBody", goal) }}
- {% if userCanEditGoals %}
- <td style="padding-top:2px">
- <button ng-click="manageGoals.editGoal({{ goal.idgoal }})" class="table-action" title="{{ 'General_Edit'|translate }}">
- <span class="icon-edit"></span>
- </button>
- </td>
- <td style="padding-top:2px">
- <button ng-click="manageGoals.deleteGoal({{ goal.idgoal }})" class="table-action" title="{{ 'General_Delete'|translate }}">
- <span class="icon-delete"></span>
- </button>
- </td>
- {% endif %}
- </tr>
- {% endfor %}
- {% endif %}
- </table>
-
- {% if userCanEditGoals and onlyShowAddNewGoal is not defined %}
- <div class="tableActionBar">
- <button id="add-goal" ng-click="manageGoals.createGoal()">
- <span class="icon-add"></span>
- {{ 'Goals_AddNewGoal'|translate }}
- </button>
- </div>
- {% endif %}
-
-</div>
-
-<div class="ui-confirm" id="confirm">
- <h2></h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
-</div>
-
-<script type="text/javascript">
- var goalTypeToTranslation = {
- "manually": "{{ 'Goals_ManuallyTriggeredUsingJavascriptFunction'|translate }}",
- "file": "{{ 'Goals_Download'|translate }}",
- "url": "{{ 'Goals_VisitUrl'|translate }}",
- "title": "{{ 'Goals_VisitPageTitle'|translate }}",
- "external_website": "{{ 'Goals_ClickOutlink'|translate }}",
- "event_action": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventAction'|translate }})",
- "event_category": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventCategory'|translate }})",
- "event_name": "{{ 'Goals_SendEvent'|translate }} ({{ 'Events_EventName'|translate }})",
- "visit_duration": "{{ 'Goals_VisitDuration'|translate|ucfirst }}"
- };
-
- $(document).ready(function () {
- // translation of the goal "match attribute" to human readable description
- $('.matchAttribute').each(function () {
- var matchAttribute = $(this).text();
- var translation = goalTypeToTranslation[matchAttribute];
- $(this).text(translation);
- });
- });
-</script>
diff --git a/plugins/Goals/tests/Integration/APITest.php b/plugins/Goals/tests/Integration/APITest.php
index 478dadaad6..0f6ea4a94f 100644
--- a/plugins/Goals/tests/Integration/APITest.php
+++ b/plugins/Goals/tests/Integration/APITest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\Goals\tests\Integration;
-use Piwik\Piwik;
use Piwik\Plugins\Goals\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
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 5cf257c6b9..6cb1f10071 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:9c1eab5100ef3fbd11fb68cb95ffc2f5c8145f55329cf5353420ccac6c6e14ee
-size 198167
+oid sha256:4d5f0bb76708545cb504070c6b4cd6568f87122fce3997297a27cdffb8f86e44
+size 198169
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 2730f64ab5..49fa2bf91e 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:a72050d060d99208f966b5fd11897aafd61901e56c578be701b15f461c017371
-size 199018
+oid sha256:5dc6b5d99fdb21dda605a06d9a170e65c053eb3e50b28f6c33f6bd9d48922940
+size 199016
diff --git a/plugins/Goals/vue/dist/Goals.umd.js b/plugins/Goals/vue/dist/Goals.umd.js
new file mode 100644
index 0000000000..c87161e4da
--- /dev/null
+++ b/plugins/Goals/vue/dist/Goals.umd.js
@@ -0,0 +1,1147 @@
+(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["Goals"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["Goals"] = 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/Goals/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__, "GoalPageLink", function() { return /* reexport */ GoalPageLink_GoalPageLink; });
+__webpack_require__.d(__webpack_exports__, "ManageGoals", function() { return /* reexport */ ManageGoals; });
+
+// 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");
+
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/GoalPageLink/GoalPageLink.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,
+ GoalPageLink_$ = _window.$; // usage v-goal-page-link="{ idGoal: 5 }"
+
+var GoalPageLink = {
+ mounted: function mounted(el, binding) {
+ if (!external_CoreHome_["Matomo"].helper.isAngularRenderingThePage()) {
+ return;
+ }
+
+ var title = GoalPageLink_$(el).text();
+ var link = GoalPageLink_$('<a></a>');
+ link.text(title);
+ link.attr('title', Object(external_CoreHome_["translate"])('Goals_ClickToViewThisGoal'));
+ link.click(function (e) {
+ e.preventDefault();
+ external_CoreHome_["MatomoUrl"].updateHash(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ category: 'Goals_Goals',
+ subcategory: binding.value.idGoal
+ }));
+ });
+ GoalPageLink_$(el).html(link[0]);
+ }
+};
+/* harmony default export */ var GoalPageLink_GoalPageLink = (GoalPageLink); // manually handle occurrence of goal-page-link on datatable html attributes since dataTable.js is
+// not managed by vue.
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+
+external_CoreHome_["Matomo"].on('Matomo.processDynamicHtml', function ($element) {
+ $element.find('[goal-page-link]').each(function (i, e) {
+ if (GoalPageLink_$(e).attr('goal-page-link-handled')) {
+ return;
+ }
+
+ var idGoal = GoalPageLink_$(e).attr('goal-page-link');
+
+ if (idGoal) {
+ GoalPageLink.mounted(e, {
+ instance: null,
+ value: {
+ idGoal: idGoal
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ });
+ }
+
+ GoalPageLink_$(e).attr('goal-page-link-handled', '1');
+ });
+});
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/GoalPageLink/GoalPageLink.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 piwikGoalPageLink() {
+ return {
+ restrict: 'A',
+ link: function piwikGoalPageLinkLink(scope, element, attrs) {
+ var binding = {
+ instance: null,
+ value: {
+ idGoal: attrs.piwikGoalPageLink
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ GoalPageLink_GoalPageLink.mounted(element[0], binding);
+ }
+ };
+}
+window.angular.module('piwikApp').directive('piwikGoalPageLink', piwikGoalPageLink);
+// 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
+
+var _hoisted_1 = {
+ id: "entityEditContainer",
+ feature: "true",
+ class: "managegoals"
+};
+var _hoisted_2 = {
+ class: "contentHelp"
+};
+var _hoisted_3 = ["innerHTML"];
+var _hoisted_4 = {
+ key: 0
+};
+
+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: "first"
+};
+var _hoisted_9 = {
+ key: 1
+};
+var _hoisted_10 = {
+ key: 2
+};
+var _hoisted_11 = {
+ key: 0
+};
+var _hoisted_12 = {
+ colspan: "8"
+};
+
+var _hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_16 = ["id"];
+var _hoisted_17 = {
+ class: "first"
+};
+var _hoisted_18 = {
+ class: "matchAttribute"
+};
+var _hoisted_19 = {
+ key: 0
+};
+var _hoisted_20 = {
+ key: 1
+};
+
+var _hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_22 = ["innerHTML"];
+var _hoisted_23 = {
+ key: 1,
+ style: {
+ "padding-top": "2px"
+ }
+};
+var _hoisted_24 = ["onClick", "title"];
+
+var _hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-edit"
+}, null, -1);
+
+var _hoisted_26 = [_hoisted_25];
+var _hoisted_27 = {
+ key: 2,
+ style: {
+ "padding-top": "2px"
+ }
+};
+var _hoisted_28 = ["onClick", "title"];
+
+var _hoisted_29 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-delete"
+}, null, -1);
+
+var _hoisted_30 = [_hoisted_29];
+var _hoisted_31 = {
+ key: 0,
+ class: "tableActionBar"
+};
+
+var _hoisted_32 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-add"
+}, null, -1);
+
+var _hoisted_33 = {
+ class: "ui-confirm",
+ ref: "confirm"
+};
+var _hoisted_34 = ["value"];
+var _hoisted_35 = ["value"];
+var _hoisted_36 = {
+ class: "addEditGoal"
+};
+var _hoisted_37 = ["innerHTML"];
+var _hoisted_38 = {
+ class: "row goalIsTriggeredWhen"
+};
+var _hoisted_39 = {
+ class: "col s12"
+};
+var _hoisted_40 = {
+ class: "row"
+};
+var _hoisted_41 = {
+ class: "col s12 m6 goalTriggerType"
+};
+var _hoisted_42 = {
+ class: "col s12 m6"
+};
+var _hoisted_43 = ["innerHTML"];
+var _hoisted_44 = {
+ class: "row whereTheMatchAttrbiute"
+};
+var _hoisted_45 = {
+ class: "col s12"
+};
+var _hoisted_46 = {
+ class: "row"
+};
+var _hoisted_47 = {
+ class: "col s12 m6 l4"
+};
+var _hoisted_48 = {
+ key: 0,
+ class: "col s12 m6 l4"
+};
+var _hoisted_49 = {
+ key: 1,
+ class: "col s12 m6 l4"
+};
+var _hoisted_50 = {
+ class: "col s12 m6 l4"
+};
+var _hoisted_51 = {
+ id: "examples_pattern",
+ class: "col s12"
+};
+
+var _hoisted_52 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_54 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_55 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_57 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_58 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_59 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_60 = {
+ ref: "endedittable"
+};
+
+var _hoisted_61 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "hidden",
+ name: "goalIdUpdate",
+ value: ""
+}, null, -1);
+
+var _hoisted_62 = {
+ key: 0
+};
+var _hoisted_63 = ["innerHTML"];
+
+var _hoisted_64 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ id: "bottom"
+}, null, -1);
+
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _ctx$goalToDelete;
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ 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 _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_content_table = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-table");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ 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_["withDirectives"])(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_["createElementVNode"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.translate('Goals_ManageGoals')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ 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
+ }, 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
+ }, 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) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ id: goal.idgoal,
+ 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)
+ }, 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", {
+ onClick: function onClick($event) {
+ return _ctx.editGoal(goal.idgoal);
+ },
+ class: "table-action",
+ title: _ctx.translate('General_Edit')
+ }, _hoisted_26, 8, _hoisted_24)])) : 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_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ onClick: function onClick($event) {
+ return _ctx.deleteGoal(goal.idgoal);
+ },
+ class: "table-action",
+ title: _ctx.translate('General_Delete')
+ }, _hoisted_30, 8, _hoisted_28)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 8, _hoisted_16);
+ }), 128))])], 512), [[_directive_content_table]]), _ctx.userCanEditGoals && !_ctx.onlyShowAddNewGoal ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ id: "add-goal",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.createGoal();
+ })
+ }, [_hoisted_32, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_AddNewGoal')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
+ }),
+ _: 1
+ }, 8, ["content-title"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showGoalList]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_DeleteGoalConfirm', "\"".concat((_ctx$goalToDelete = _ctx.goalToDelete) === null || _ctx$goalToDelete === void 0 ? void 0 : _ctx$goalToDelete.name, "\""))), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "yes",
+ type: "button",
+ value: _ctx.translate('General_Yes')
+ }, null, 8, _hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "no",
+ type: "button",
+ value: _ctx.translate('General_No')
+ }, null, 8, _hoisted_35)], 512)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.onlyShowAddNewGoal]]), 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_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_36, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.goal.idgoal ? _ctx.translate('Goals_UpdateGoal') : _ctx.translate('Goals_AddNewGoal')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ innerHTML: _ctx.$sanitize(_ctx.addNewGoalIntro)
+ }, null, 8, _hoisted_37), 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: "text",
+ name: "goal_name",
+ modelValue: _ctx.goal.name,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.goal.name = $event;
+ }),
+ maxlength: 50,
+ title: _ctx.translate('Goals_GoalName')
+ }, null, 8, ["modelValue", "title"])]), 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: "goal_description",
+ modelValue: _ctx.goal.description,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.goal.description = $event;
+ }),
+ maxlength: 255,
+ title: _ctx.translate('General_Description')
+ }, null, 8, ["modelValue", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_38, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_39, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalIsTriggered')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_41, [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: "trigger_type",
+ "model-value": _ctx.triggerType,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ _ctx.triggerType = $event;
+
+ _ctx.changedTriggerType();
+ }),
+ "full-width": true,
+ options: _ctx.goalTriggerTypeOptions
+ }, null, 8, ["model-value", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_42, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ severity: "info"
+ }, {
+ 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
+ }, null, 8, _hoisted_43)];
+ }),
+ _: 1
+ }, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType === 'manually']]), 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: "radio",
+ name: "match_attribute",
+ "full-width": true,
+ "model-value": _ctx.goal.match_attribute,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ _ctx.goal.match_attribute = $event;
+
+ _ctx.initPatternType();
+ }),
+ options: _ctx.goalMatchAttributeOptions
+ }, null, 8, ["model-value", "options"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_44, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", _hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_WhereThe')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_URL')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'url']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_PageTitle')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'title']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Filename')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'file']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_ExternalWebsiteUrl')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'external_website']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_VisitDuration')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'visit_duration']])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_47, [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: "event_type",
+ modelValue: _ctx.eventType,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.eventType = $event;
+ }),
+ "full-width": true,
+ options: _ctx.eventTypeOptions
+ }, null, 8, ["modelValue", "options"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']]), !_ctx.isMatchAttributeNumeric ? (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_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "pattern_type",
+ modelValue: _ctx.goal.pattern_type,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.goal.pattern_type = $event;
+ }),
+ "full-width": true,
+ options: _ctx.patternTypeOptions
+ }, null, 8, ["modelValue", "options"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.isMatchAttributeNumeric ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_49, [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: "pattern_type",
+ modelValue: _ctx.goal.pattern_type,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.goal.pattern_type = $event;
+ }),
+ "full-width": true,
+ options: _ctx.numericComparisonTypeOptions
+ }, null, 8, ["modelValue", "options"])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_50, [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: "pattern",
+ modelValue: _ctx.goal.pattern,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.goal.pattern = $event;
+ }),
+ maxlength: 255,
+ title: _ctx.patternFieldLabel,
+ "full-width": true
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_51, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ severity: "info"
+ }, {
+ 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"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'checkout/confirmation'")) + " ", 1), _hoisted_52, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://example.com/thank-you.html'")) + " ", 1), _hoisted_53, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)\\\/demo\\\/(.*)'")), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'url']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'Order confirmation'")), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'title']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(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('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'files/brochure.pdf'")) + " ", 1), _hoisted_54, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://example.com/files/brochure.pdf'")) + " ", 1), _hoisted_55, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)\\\.zip'")), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'file']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(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('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'amazon.com'")) + " ", 1), _hoisted_56, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'http://mypartner.com/landing.html'")) + " ", 1), _hoisted_57, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.matchesExpressionExternal), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'external_website']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(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('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Contains', "'video'")) + " ", 1), _hoisted_58, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_IsExactly', "'click'")) + " ", 1), _hoisted_59, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_MatchesExpression', "'(.*)_banner'")) + "\" ", 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ForExampleShort')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_AtLeastMinutes', '5', '0.5')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'visit_duration']])];
+ }),
+ _: 1
+ })])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually']]), 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: "checkbox",
+ name: "case_sensitive",
+ modelValue: _ctx.goal.case_sensitive,
+ "onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.goal.case_sensitive = $event;
+ }),
+ title: _ctx.caseSensitiveTitle
+ }, null, 8, ["modelValue", "title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.triggerType !== 'manually' && !_ctx.isMatchAttributeNumeric]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.goal.match_attribute !== 'visit_duration' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_Field, {
+ key: 0,
+ uicontrol: "radio",
+ name: "allow_multiple",
+ "model-value": _ctx.goal.allow_multiple ? 1 : 0,
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = function ($event) {
+ return _ctx.goal.allow_multiple = $event;
+ }),
+ options: _ctx.allowMultipleOptions,
+ introduction: _ctx.translate('Goals_AllowMultipleConversionsPerVisit'),
+ "inline-help": _ctx.translate('Goals_HelpOneConversionPerVisit')
+ }, null, 8, ["model-value", "options", "introduction", "inline-help"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalRevenue')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Optional')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "number",
+ name: "revenue",
+ modelValue: _ctx.goal.revenue,
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = function ($event) {
+ return _ctx.goal.revenue = $event;
+ }),
+ placeholder: _ctx.translate('Goals_DefaultRevenueLabel'),
+ "inline-help": _ctx.translate('Goals_DefaultRevenueHelp')
+ }, null, 8, ["modelValue", "placeholder", "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: "checkbox",
+ name: "use_event_value",
+ modelValue: _ctx.goal.event_value_as_revenue,
+ "onUpdate:modelValue": _cache[12] || (_cache[12] = function ($event) {
+ return _ctx.goal.event_value_as_revenue = $event;
+ }),
+ title: _ctx.translate('Goals_UseEventValueAsRevenue'),
+ "inline-help": _ctx.useEventValueAsRevenueHelp
+ }, null, 8, ["modelValue", "title", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.goal.match_attribute === 'event']])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_60, [_ctx.endEditTableComponent ? (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.endEditTableComponent), {
+ key: 0
+ })) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), _hoisted_61, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ saving: _ctx.isLoading,
+ onConfirm: _cache[13] || (_cache[13] = function ($event) {
+ return _ctx.save();
+ }),
+ value: _ctx.submitText
+ }, null, 8, ["saving", "value"]), !_ctx.onlyShowAddNewGoal ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_62, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "entityCancel",
+ onClick: _cache[14] || (_cache[14] = function ($event) {
+ return _ctx.showListOfReports();
+ }),
+ innerHTML: _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
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/PiwikApiMock.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
+*/
+// the piwikApi angularjs service is passed in some frontend events to allow plugins to modify
+// a request before it is sent. for the time being in Vue we use this mock, which has the same
+// API as the piwikApi service, to modify the input used with AjaxHelper. this provides BC
+// with for plugins that haven't been converted.
+//
+// should be removed in Matomo 5.
+var PiwikApiMock = /*#__PURE__*/function () {
+ function PiwikApiMock(parameters, options) {
+ _classCallCheck(this, PiwikApiMock);
+
+ _defineProperty(this, "parameters", void 0);
+
+ _defineProperty(this, "options", void 0);
+
+ this.parameters = parameters;
+ this.options = options;
+ }
+
+ _createClass(PiwikApiMock, [{
+ key: "addParams",
+ value: function addParams(params) {
+ Object.assign(this.parameters, params);
+ }
+ }, {
+ key: "withTokenInUrl",
+ value: function withTokenInUrl() {
+ this.options.withTokenInUrl = true;
+ }
+ }, {
+ key: "reset",
+ value: function reset() {
+ var _this = this;
+
+ Object.keys(this.parameters).forEach(function (name) {
+ delete _this.parameters[name];
+ });
+ delete this.options.postParams;
+ }
+ }, {
+ key: "addPostParams",
+ value: function addPostParams(params) {
+ this.options.postParams = Object.assign(Object.assign({}, this.options.postParams), params);
+ }
+ }]);
+
+ return PiwikApiMock;
+}();
+
+
+// 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/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var ManageGoalsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ inheritAttrs: false,
+ props: {
+ onlyShowAddNewGoal: Boolean,
+ userCanEditGoals: Boolean,
+ ecommerceEnabled: Boolean,
+ goals: {
+ type: Object,
+ required: true
+ },
+ addNewGoalIntro: String,
+ goalTriggerTypeOptions: Object,
+ goalMatchAttributeOptions: Array,
+ eventTypeOptions: Array,
+ patternTypeOptions: Array,
+ numericComparisonTypeOptions: Array,
+ allowMultipleOptions: Array,
+ showAddGoal: Boolean,
+ showGoal: Number,
+ beforeGoalListActionsBody: Object,
+ endEditTable: String,
+ beforeGoalListActionsHead: String
+ },
+ data: function data() {
+ return {
+ showEditGoal: false,
+ showGoalList: true,
+ goal: {},
+ isLoading: false,
+ eventType: 'event_category',
+ triggerType: 'visitors',
+ apiMethod: '',
+ submitText: '',
+ goalToDelete: null,
+ addEditTableComponent: false
+ };
+ },
+ components: {
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ Field: external_CorePluginsAdmin_["Field"],
+ Alert: external_CoreHome_["Alert"]
+ },
+ directives: {
+ ContentTable: external_CoreHome_["ContentTable"],
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ mounted: function mounted() {
+ var _this = this;
+
+ if (this.showAddGoal) {
+ this.createGoal();
+ } else if (this.showGoal) {
+ this.editGoal(this.showGoal);
+ }
+
+ this.showListOfReports(); // this component can be used in multiple places, one where
+ // Matomo.helper.compileAngularComponents() is already called, one where it's not.
+ // to make sure this function is only applied once to the slot data, we explicitly do not
+ // add it to vue, then on the next update, add it and call compileAngularComponents()
+
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ _this.addEditTableComponent = true;
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ var el = _this.$refs.endedittable;
+ var scope = external_CoreHome_["Matomo"].helper.getAngularDependency('$rootScope').$new(true);
+ $(el).data('scope', scope);
+ external_CoreHome_["Matomo"].helper.compileAngularComponents(el, {
+ scope: scope
+ });
+ });
+ });
+ },
+ beforeUnmount: function beforeUnmount() {
+ var el = this.$refs.endedittable;
+ $(el).data('scope').$destroy();
+ },
+ methods: {
+ scrollToTop: function scrollToTop() {
+ setTimeout(function () {
+ external_CoreHome_["Matomo"].helper.lazyScrollTo('.pageWrap', 200);
+ });
+ },
+ initGoalForm: function initGoalForm(goalMethodAPI, submitText, goalName, description, matchAttribute, pattern, patternType, caseSensitive, revenue, allowMultiple, useEventValueAsRevenue, goalId) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
+ this.apiMethod = goalMethodAPI;
+ this.goal = {};
+ this.goal.name = goalName;
+ this.goal.description = description;
+ var actualMatchAttribute = matchAttribute;
+
+ if (actualMatchAttribute === 'manually') {
+ this.triggerType = 'manually';
+ actualMatchAttribute = 'url';
+ } else {
+ this.triggerType = 'visitors';
+ }
+
+ if (actualMatchAttribute.indexOf('event') === 0) {
+ this.eventType = actualMatchAttribute;
+ actualMatchAttribute = 'event';
+ } else {
+ this.eventType = 'event_category';
+ }
+
+ this.goal.match_attribute = actualMatchAttribute;
+ this.goal.allow_multiple = allowMultiple;
+ this.goal.pattern_type = patternType;
+ this.goal.pattern = pattern;
+ this.goal.case_sensitive = caseSensitive;
+ this.goal.revenue = revenue;
+ this.goal.event_value_as_revenue = useEventValueAsRevenue;
+ this.submitText = submitText;
+ this.goal.idgoal = goalId;
+ },
+ showListOfReports: function showListOfReports() {
+ external_CoreHome_["Matomo"].postEvent('Goals.cancelForm');
+ this.showGoalList = true;
+ this.showEditGoal = false;
+ this.scrollToTop();
+ },
+ showAddEditForm: function showAddEditForm() {
+ this.showGoalList = false;
+ this.showEditGoal = true;
+ },
+ createGoal: function createGoal() {
+ var parameters = {
+ isAllowed: true
+ };
+ external_CoreHome_["Matomo"].postEvent('Goals.initAddGoal', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.showAddEditForm();
+ this.initGoalForm('Goals.addGoal', Object(external_CoreHome_["translate"])('Goals_AddGoal'), '', '', 'url', '', 'contains', false, 0, false, false, 0);
+ this.scrollToTop();
+ },
+ editGoal: function editGoal(goalId) {
+ this.showAddEditForm();
+ var goal = this.goals["".concat(goalId)];
+ this.initGoalForm('Goals.updateGoal', Object(external_CoreHome_["translate"])('Goals_UpdateGoal'), goal.name, goal.description, goal.match_attribute, goal.pattern, goal.pattern_type, !!goal.case_sensitive && goal.case_sensitive !== '0', parseInt("".concat(goal.revenue), 10), !!goal.allow_multiple && goal.allow_multiple !== '0', !!goal.event_value_as_revenue && goal.event_value_as_revenue !== '0', goalId);
+ this.scrollToTop();
+ },
+ deleteGoal: function deleteGoal(goalId) {
+ var _this2 = this;
+
+ this.goalToDelete = this.goals["".concat(goalId)];
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.confirm, {
+ yes: function yes() {
+ _this2.isLoading = true;
+ external_CoreHome_["AjaxHelper"].fetch({
+ idGoal: goalId,
+ method: 'Goals.deleteGoal'
+ }).then(function () {
+ window.location.reload();
+ }).finally(function () {
+ _this2.isLoading = false;
+ });
+ }
+ });
+ },
+ save: function save() {
+ var _this3 = this;
+
+ var parameters = {}; // TODO: test removal of encoding, should be handled by ajax request
+
+ parameters.name = this.goal.name;
+ parameters.description = this.goal.description;
+
+ if (this.isManuallyTriggered) {
+ parameters.matchAttribute = 'manually';
+ parameters.patternType = 'regex';
+ parameters.pattern = '.*';
+ parameters.caseSensitive = 0;
+ } else {
+ parameters.matchAttribute = this.goal.match_attribute;
+
+ if (parameters.matchAttribute === 'event') {
+ parameters.matchAttribute = this.eventType;
+ }
+
+ parameters.patternType = this.goal.pattern_type;
+ parameters.pattern = this.goal.pattern;
+ parameters.caseSensitive = this.goal.case_sensitive ? 1 : 0;
+ }
+
+ parameters.revenue = this.goal.revenue || 0;
+ parameters.allowMultipleConversionsPerVisit = this.goal.allow_multiple ? 1 : 0;
+ parameters.useEventValueAsRevenue = this.goal.event_value_as_revenue ? 1 : 0;
+ parameters.idGoal = this.goal.idgoal;
+ parameters.method = this.apiMethod;
+ var isCreate = parameters.method === 'Goals.addGoal';
+ var isUpdate = parameters.method === 'Goals.updateGoal';
+ var options = {};
+ var piwikApiMock = new PiwikApiMock(parameters, options);
+
+ if (isUpdate) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeUpdateGoal', parameters, piwikApiMock);
+ } else if (isCreate) {
+ external_CoreHome_["Matomo"].postEvent('Goals.beforeAddGoal', parameters, piwikApiMock);
+ }
+
+ if (parameters !== null && parameters !== void 0 && parameters.cancelRequest) {
+ return;
+ }
+
+ this.isLoading = true;
+ external_CoreHome_["AjaxHelper"].fetch(parameters, options).then(function () {
+ var subcategory = external_CoreHome_["MatomoUrl"].parsed.value.subcategory;
+
+ if (subcategory === 'Goals_AddNewGoal' && external_CoreHome_["Matomo"].helper.isAngularRenderingThePage()) {
+ // when adding a goal for the first time we need to load manage goals page afterwards
+ external_CoreHome_["ReportingMenuStore"].reloadMenuItems().then(function () {
+ external_CoreHome_["MatomoUrl"].updateHash(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ subcategory: 'Goals_ManageGoals'
+ }));
+ _this3.isLoading = false;
+ });
+ } else {
+ window.location.reload();
+ }
+ }).catch(function () {
+ _this3.scrollToTop();
+
+ _this3.isLoading = false;
+ });
+ },
+ changedTriggerType: function changedTriggerType() {
+ if (!this.isManuallyTriggered && !this.goal.pattern_type) {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ initPatternType: function initPatternType() {
+ if (this.isMatchAttributeNumeric) {
+ this.goal.pattern_type = 'greater_than';
+ } else {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ lcfirst: function lcfirst(s) {
+ return "".concat(s.substr(0, 1).toLowerCase()).concat(s.substr(1));
+ },
+ ucfirst: function ucfirst(s) {
+ return "".concat(s.substr(0, 1).toUpperCase()).concat(s.substr(1));
+ }
+ },
+ computed: {
+ learnMoreAboutGoalTracking: function learnMoreAboutGoalTracking() {
+ return Object(external_CoreHome_["translate"])('Goals_LearnMoreAboutGoalTrackingDocumentation', '<a target="_blank" rel="noreferrer noopener" ' + 'href="https://matomo.org/docs/tracking-goals-web-analytics/">', '</a>');
+ },
+ youCanEnableEcommerceReports: function youCanEnableEcommerceReports() {
+ var link = external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ module: 'SitesManager',
+ action: 'index'
+ }));
+ var ecommerceReportsText = '<a href="https://matomo.org/docs/ecommerce-analytics/" ' + "rel=\"noreferrer noopener\" target=\"_blank\">".concat(Object(external_CoreHome_["translate"])('Goals_EcommerceReports'), "</a>");
+ var websiteManageText = "<a href='".concat(link, "'>").concat(Object(external_CoreHome_["translate"])('SitesManager_WebsitesManagement'), "</a>");
+ return Object(external_CoreHome_["translate"])('Goals_YouCanEnableEcommerceReports', ecommerceReportsText, websiteManageText);
+ },
+ siteName: function siteName() {
+ return external_CoreHome_["Matomo"].helper.htmlDecode(external_CoreHome_["Matomo"].siteName);
+ },
+ whereVisitedPageManuallyCallsJsTrackerText: function whereVisitedPageManuallyCallsJsTrackerText() {
+ var link = 'https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions';
+ return Object(external_CoreHome_["translate"])('Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore', "<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"".concat(link, "\">"), '</a>');
+ },
+ caseSensitiveTitle: function caseSensitiveTitle() {
+ return "".concat(Object(external_CoreHome_["translate"])('Goals_CaseSensitive'), " ").concat(Object(external_CoreHome_["translate"])('Goals_Optional'));
+ },
+ useEventValueAsRevenueHelp: function useEventValueAsRevenueHelp() {
+ return "".concat(Object(external_CoreHome_["translate"])('Goals_EventValueAsRevenueHelp'), " <br/><br/> ").concat(Object(external_CoreHome_["translate"])('Goals_EventValueAsRevenueHelp2'));
+ },
+ cancelText: function cancelText() {
+ return Object(external_CoreHome_["translate"])('General_OrCancel', '<a class=\'entityCancelLink\'>', '</a>');
+ },
+ isMatchAttributeNumeric: function isMatchAttributeNumeric() {
+ return ['visit_duration'].indexOf(this.goal.match_attribute) > -1;
+ },
+ patternFieldLabel: function patternFieldLabel() {
+ return this.goal.match_attribute === 'visit_duration' ? Object(external_CoreHome_["translate"])('Goals_TimeInMinutes') : Object(external_CoreHome_["translate"])('Goals_Pattern');
+ },
+ goalMatchAttributeTranslations: function goalMatchAttributeTranslations() {
+ return {
+ manually: Object(external_CoreHome_["translate"])('Goals_ManuallyTriggeredUsingJavascriptFunction'),
+ file: Object(external_CoreHome_["translate"])('Goals_Download'),
+ url: Object(external_CoreHome_["translate"])('Goals_VisitUrl'),
+ title: Object(external_CoreHome_["translate"])('Goals_VisitPageTitle'),
+ external_website: Object(external_CoreHome_["translate"])('Goals_ClickOutlink'),
+ event_action: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventAction'), ")"),
+ event_category: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventCategory'), ")"),
+ event_name: "".concat(Object(external_CoreHome_["translate"])('Goals_SendEvent'), " (").concat(Object(external_CoreHome_["translate"])('Events_EventName'), ")"),
+ visit_duration: "".concat(this.ucfirst(Object(external_CoreHome_["translate"])('Goals_VisitDuration')))
+ };
+ },
+ beforeGoalListActionsBodyComponent: function beforeGoalListActionsBodyComponent() {
+ var _this4 = this;
+
+ if (!this.beforeGoalListActionsBody) {
+ return {};
+ }
+
+ var componentsByIdGoal = {};
+ Object.values(this.goals).forEach(function (g) {
+ componentsByIdGoal[g.idgoal] = {
+ template: _this4.beforeGoalListActionsBody[g.idgoal]
+ };
+ });
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])(componentsByIdGoal);
+ },
+ endEditTableComponent: function endEditTableComponent() {
+ if (!this.endEditTable || !this.addEditTableComponent) {
+ return null;
+ }
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])({
+ template: this.endEditTable
+ });
+ },
+ beforeGoalListActionsHeadComponent: function beforeGoalListActionsHeadComponent() {
+ if (!this.beforeGoalListActionsHead) {
+ return null;
+ }
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["markRaw"])({
+ template: this.beforeGoalListActionsHead
+ });
+ },
+ isManuallyTriggered: function isManuallyTriggered() {
+ return this.triggerType === 'manually';
+ },
+ matchesExpressionExternal: function matchesExpressionExternal() {
+ var url = "'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";
+ return Object(external_CoreHome_["translate"])('Goals_MatchesExpression', url);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
+
+
+
+ManageGoalsvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var ManageGoals = (ManageGoalsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.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 ManageGoals_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: ManageGoals,
+ directiveName: 'piwikManageGoals',
+ scope: {
+ userCanEditGoals: {
+ angularJsBind: '<'
+ },
+ onlyShowAddNewGoal: {
+ angularJsBind: '<'
+ },
+ ecommerceEnabled: {
+ angularJsBind: '<'
+ },
+ goals: {
+ angularJsBind: '<'
+ },
+ showGoal: {
+ angularJsBind: '<'
+ },
+ showAddGoal: {
+ angularJsBind: '<'
+ },
+ addNewGoalIntro: {
+ angularJsBind: '<'
+ },
+ goalTriggerTypeOptions: {
+ angularJsBind: '<'
+ },
+ goalMatchAttributeOptions: {
+ angularJsBind: '<'
+ },
+ eventTypeOptions: {
+ angularJsBind: '<'
+ },
+ patternTypeOptions: {
+ angularJsBind: '<'
+ },
+ numericComparisonTypeOptions: {
+ angularJsBind: '<'
+ },
+ allowMultipleOptions: {
+ angularJsBind: '<'
+ },
+ beforeGoalListActionsBody: {
+ angularJsBind: '<'
+ },
+ endEditTable: {
+ angularJsBind: '<'
+ },
+ beforeGoalListActionsHead: {
+ angularJsBind: '<'
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Goals/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=Goals.umd.js.map \ No newline at end of file
diff --git a/plugins/Goals/vue/dist/Goals.umd.min.js b/plugins/Goals/vue/dist/Goals.umd.min.js
new file mode 100644
index 0000000000..beedb32148
--- /dev/null
+++ b/plugins/Goals/vue/dist/Goals.umd.min.js
@@ -0,0 +1,21 @@
+(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["Goals"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Goals"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,a){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.l=!0,o.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 o in e)a.d(n,o,function(t){return e[t]}.bind(null,o));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/Goals/vue/dist/",a(a.s="fae3")}({"19dc":function(t,a){t.exports=e},"8bbf":function(e,a){e.exports=t},a5a2:function(e,t){e.exports=a},fae3:function(e,t,a){"use strict";if(a.r(t),a.d(t,"GoalPageLink",(function(){return s})),a.d(t,"ManageGoals",(function(){return De})),"undefined"!==typeof window){var n=window.document.currentScript,o=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(a.p=o[1])}var l=a("19dc"),r=window,i=r.$,c={mounted:function(e,t){if(l["Matomo"].helper.isAngularRenderingThePage()){var a=i(e).text(),n=i("<a></a>");n.text(a),n.attr("title",Object(l["translate"])("Goals_ClickToViewThisGoal")),n.click((function(e){e.preventDefault(),l["MatomoUrl"].updateHash(Object.assign(Object.assign({},l["MatomoUrl"].hashParsed.value),{},{category:"Goals_Goals",subcategory:t.value.idGoal}))})),i(e).html(n[0])}}},s=c;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @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}
+/*!
+* Matomo - free/libre analytics platform
+*
+* @link https://matomo.org
+* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+*/var Se=function(){function e(t,a){Ve(this,e),Te(this,"parameters",void 0),Te(this,"options",void 0),this.parameters=t,this.options=a}return we(e,[{key:"addParams",value:function(e){Object.assign(this.parameters,e)}},{key:"withTokenInUrl",value:function(){this.options.withTokenInUrl=!0}},{key:"reset",value:function(){var e=this;Object.keys(this.parameters).forEach((function(t){delete e.parameters[t]})),delete this.options.postParams}},{key:"addPostParams",value:function(e){this.options.postParams=Object.assign(Object.assign({},this.options.postParams),e)}}]),e}(),ke=Object(d["defineComponent"])({inheritAttrs:!1,props:{onlyShowAddNewGoal:Boolean,userCanEditGoals:Boolean,ecommerceEnabled:Boolean,goals:{type:Object,required:!0},addNewGoalIntro:String,goalTriggerTypeOptions:Object,goalMatchAttributeOptions:Array,eventTypeOptions:Array,patternTypeOptions:Array,numericComparisonTypeOptions:Array,allowMultipleOptions:Array,showAddGoal:Boolean,showGoal:Number,beforeGoalListActionsBody:Object,endEditTable:String,beforeGoalListActionsHead:String},data:function(){return{showEditGoal:!1,showGoalList:!0,goal:{},isLoading:!1,eventType:"event_category",triggerType:"visitors",apiMethod:"",submitText:"",goalToDelete:null,addEditTableComponent:!1}},components:{SaveButton:Ee["SaveButton"],ContentBlock:l["ContentBlock"],ActivityIndicator:l["ActivityIndicator"],Field:Ee["Field"],Alert:l["Alert"]},directives:{ContentTable:l["ContentTable"],Form:Ee["Form"]},mounted:function(){var e=this;this.showAddGoal?this.createGoal():this.showGoal&&this.editGoal(this.showGoal),this.showListOfReports(),Object(d["nextTick"])((function(){e.addEditTableComponent=!0,Object(d["nextTick"])((function(){var t=e.$refs.endedittable,a=l["Matomo"].helper.getAngularDependency("$rootScope").$new(!0);$(t).data("scope",a),l["Matomo"].helper.compileAngularComponents(t,{scope:a})}))}))},beforeUnmount:function(){var e=this.$refs.endedittable;$(e).data("scope").$destroy()},methods:{scrollToTop:function(){setTimeout((function(){l["Matomo"].helper.lazyScrollTo(".pageWrap",200)}))},initGoalForm:function(e,t,a,n,o,r,i,c,s,u,d,b){l["Matomo"].postEvent("Goals.beforeInitGoalForm",e,b),this.apiMethod=e,this.goal={},this.goal.name=a,this.goal.description=n;var p=o;"manually"===p?(this.triggerType="manually",p="url"):this.triggerType="visitors",0===p.indexOf("event")?(this.eventType=p,p="event"):this.eventType="event_category",this.goal.match_attribute=p,this.goal.allow_multiple=u,this.goal.pattern_type=i,this.goal.pattern=r,this.goal.case_sensitive=c,this.goal.revenue=s,this.goal.event_value_as_revenue=d,this.submitText=t,this.goal.idgoal=b},showListOfReports:function(){l["Matomo"].postEvent("Goals.cancelForm"),this.showGoalList=!0,this.showEditGoal=!1,this.scrollToTop()},showAddEditForm:function(){this.showGoalList=!1,this.showEditGoal=!0},createGoal:function(){var e={isAllowed:!0};l["Matomo"].postEvent("Goals.initAddGoal",e),e&&!e.isAllowed||(this.showAddEditForm(),this.initGoalForm("Goals.addGoal",Object(l["translate"])("Goals_AddGoal"),"","","url","","contains",!1,0,!1,!1,0),this.scrollToTop())},editGoal:function(e){this.showAddEditForm();var t=this.goals["".concat(e)];this.initGoalForm("Goals.updateGoal",Object(l["translate"])("Goals_UpdateGoal"),t.name,t.description,t.match_attribute,t.pattern,t.pattern_type,!!t.case_sensitive&&"0"!==t.case_sensitive,parseInt("".concat(t.revenue),10),!!t.allow_multiple&&"0"!==t.allow_multiple,!!t.event_value_as_revenue&&"0"!==t.event_value_as_revenue,e),this.scrollToTop()},deleteGoal:function(e){var t=this;this.goalToDelete=this.goals["".concat(e)],l["Matomo"].helper.modalConfirm(this.$refs.confirm,{yes:function(){t.isLoading=!0,l["AjaxHelper"].fetch({idGoal:e,method:"Goals.deleteGoal"}).then((function(){window.location.reload()})).finally((function(){t.isLoading=!1}))}})},save:function(){var e=this,t={};t.name=this.goal.name,t.description=this.goal.description,this.isManuallyTriggered?(t.matchAttribute="manually",t.patternType="regex",t.pattern=".*",t.caseSensitive=0):(t.matchAttribute=this.goal.match_attribute,"event"===t.matchAttribute&&(t.matchAttribute=this.eventType),t.patternType=this.goal.pattern_type,t.pattern=this.goal.pattern,t.caseSensitive=this.goal.case_sensitive?1:0),t.revenue=this.goal.revenue||0,t.allowMultipleConversionsPerVisit=this.goal.allow_multiple?1:0,t.useEventValueAsRevenue=this.goal.event_value_as_revenue?1:0,t.idGoal=this.goal.idgoal,t.method=this.apiMethod;var a="Goals.addGoal"===t.method,n="Goals.updateGoal"===t.method,o={},r=new Se(t,o);n?l["Matomo"].postEvent("Goals.beforeUpdateGoal",t,r):a&&l["Matomo"].postEvent("Goals.beforeAddGoal",t,r),null!==t&&void 0!==t&&t.cancelRequest||(this.isLoading=!0,l["AjaxHelper"].fetch(t,o).then((function(){var t=l["MatomoUrl"].parsed.value.subcategory;"Goals_AddNewGoal"===t&&l["Matomo"].helper.isAngularRenderingThePage()?l["ReportingMenuStore"].reloadMenuItems().then((function(){l["MatomoUrl"].updateHash(Object.assign(Object.assign({},l["MatomoUrl"].hashParsed.value),{},{subcategory:"Goals_ManageGoals"})),e.isLoading=!1})):window.location.reload()})).catch((function(){e.scrollToTop(),e.isLoading=!1})))},changedTriggerType:function(){this.isManuallyTriggered||this.goal.pattern_type||(this.goal.pattern_type="contains")},initPatternType:function(){this.isMatchAttributeNumeric?this.goal.pattern_type="greater_than":this.goal.pattern_type="contains"},lcfirst:function(e){return"".concat(e.substr(0,1).toLowerCase()).concat(e.substr(1))},ucfirst:function(e){return"".concat(e.substr(0,1).toUpperCase()).concat(e.substr(1))}},computed:{learnMoreAboutGoalTracking:function(){return Object(l["translate"])("Goals_LearnMoreAboutGoalTrackingDocumentation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/tracking-goals-web-analytics/">',"</a>")},youCanEnableEcommerceReports:function(){var e=l["MatomoUrl"].stringify(Object.assign(Object.assign({},l["MatomoUrl"].urlParsed.value),{},{module:"SitesManager",action:"index"})),t='<a href="https://matomo.org/docs/ecommerce-analytics/" '+'rel="noreferrer noopener" target="_blank">'.concat(Object(l["translate"])("Goals_EcommerceReports"),"</a>"),a="<a href='".concat(e,"'>").concat(Object(l["translate"])("SitesManager_WebsitesManagement"),"</a>");return Object(l["translate"])("Goals_YouCanEnableEcommerceReports",t,a)},siteName:function(){return l["Matomo"].helper.htmlDecode(l["Matomo"].siteName)},whereVisitedPageManuallyCallsJsTrackerText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions";return Object(l["translate"])("Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore",'<a target="_blank" rel="noreferrer noopener" href="'.concat(e,'">'),"</a>")},caseSensitiveTitle:function(){return"".concat(Object(l["translate"])("Goals_CaseSensitive")," ").concat(Object(l["translate"])("Goals_Optional"))},useEventValueAsRevenueHelp:function(){return"".concat(Object(l["translate"])("Goals_EventValueAsRevenueHelp")," <br/><br/> ").concat(Object(l["translate"])("Goals_EventValueAsRevenueHelp2"))},cancelText:function(){return Object(l["translate"])("General_OrCancel","<a class='entityCancelLink'>","</a>")},isMatchAttributeNumeric:function(){return["visit_duration"].indexOf(this.goal.match_attribute)>-1},patternFieldLabel:function(){return"visit_duration"===this.goal.match_attribute?Object(l["translate"])("Goals_TimeInMinutes"):Object(l["translate"])("Goals_Pattern")},goalMatchAttributeTranslations:function(){return{manually:Object(l["translate"])("Goals_ManuallyTriggeredUsingJavascriptFunction"),file:Object(l["translate"])("Goals_Download"),url:Object(l["translate"])("Goals_VisitUrl"),title:Object(l["translate"])("Goals_VisitPageTitle"),external_website:Object(l["translate"])("Goals_ClickOutlink"),event_action:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventAction"),")"),event_category:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventCategory"),")"),event_name:"".concat(Object(l["translate"])("Goals_SendEvent")," (").concat(Object(l["translate"])("Events_EventName"),")"),visit_duration:"".concat(this.ucfirst(Object(l["translate"])("Goals_VisitDuration")))}},beforeGoalListActionsBodyComponent:function(){var e=this;if(!this.beforeGoalListActionsBody)return{};var t={};return Object.values(this.goals).forEach((function(a){t[a.idgoal]={template:e.beforeGoalListActionsBody[a.idgoal]}})),Object(d["markRaw"])(t)},endEditTableComponent:function(){return this.endEditTable&&this.addEditTableComponent?Object(d["markRaw"])({template:this.endEditTable}):null},beforeGoalListActionsHeadComponent:function(){return this.beforeGoalListActionsHead?Object(d["markRaw"])({template:this.beforeGoalListActionsHead}):null},isManuallyTriggered:function(){return"manually"===this.triggerType},matchesExpressionExternal:function(){var e="'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";return Object(l["translate"])("Goals_MatchesExpression",e)}}});ke.render=Ge;var De=ke;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(l["createAngularJsAdapter"])({component:De,directiveName:"piwikManageGoals",scope:{userCanEditGoals:{angularJsBind:"<"},onlyShowAddNewGoal:{angularJsBind:"<"},ecommerceEnabled:{angularJsBind:"<"},goals:{angularJsBind:"<"},showGoal:{angularJsBind:"<"},showAddGoal:{angularJsBind:"<"},addNewGoalIntro:{angularJsBind:"<"},goalTriggerTypeOptions:{angularJsBind:"<"},goalMatchAttributeOptions:{angularJsBind:"<"},eventTypeOptions:{angularJsBind:"<"},patternTypeOptions:{angularJsBind:"<"},numericComparisonTypeOptions:{angularJsBind:"<"},allowMultipleOptions:{angularJsBind:"<"},beforeGoalListActionsBody:{angularJsBind:"<"},endEditTable:{angularJsBind:"<"},beforeGoalListActionsHead:{angularJsBind:"<"}}})}})}));
+//# sourceMappingURL=Goals.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Goals/vue/dist/umd.metadata.json b/plugins/Goals/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/Goals/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Goals/vue/src/Goal.ts b/plugins/Goals/vue/src/Goal.ts
new file mode 100644
index 0000000000..7609ea75ee
--- /dev/null
+++ b/plugins/Goals/vue/src/Goal.ts
@@ -0,0 +1,24 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+interface Goal {
+ idgoal: string|number;
+ name: string;
+ allow_multiple: string|number|boolean;
+ case_sensitive: string|number|boolean;
+ deleted: string|number|boolean;
+ description: string;
+ event_value_as_revenue: string|number|boolean;
+ idsite: string|number;
+ match_attribute: string;
+ pattern: string;
+ pattern_type: string;
+ revenue: string|number;
+ revenue_pretty?: string;
+}
+
+export default Goal;
diff --git a/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.adapter.ts b/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.adapter.ts
new file mode 100644
index 0000000000..5966c7f3c1
--- /dev/null
+++ b/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.adapter.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
+ */
+
+import { IAttributes, IDirective, IScope } from 'angular';
+import GoalPageLink from './GoalPageLink';
+
+export default function piwikGoalPageLink(): IDirective {
+ return {
+ restrict: 'A',
+ link: function piwikGoalPageLinkLink(scope: IScope, element: JQuery, attrs: IAttributes) {
+ const binding = {
+ instance: null,
+ value: {
+ idGoal: attrs.piwikGoalPageLink,
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ GoalPageLink.mounted(element[0], binding);
+ },
+ };
+}
+
+window.angular.module('piwikApp').directive('piwikGoalPageLink', piwikGoalPageLink);
diff --git a/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.ts b/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.ts
new file mode 100644
index 0000000000..c4a62da735
--- /dev/null
+++ b/plugins/Goals/vue/src/GoalPageLink/GoalPageLink.ts
@@ -0,0 +1,69 @@
+/*!
+ * 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 { Matomo, translate, MatomoUrl } from 'CoreHome';
+
+interface GoalPageLinkArgs {
+ idGoal: string|number;
+}
+
+const { $ } = window;
+
+// usage v-goal-page-link="{ idGoal: 5 }"
+const GoalPageLink = {
+ mounted(el: HTMLElement, binding: DirectiveBinding<GoalPageLinkArgs>): void {
+ if (!Matomo.helper.isAngularRenderingThePage()) {
+ return;
+ }
+
+ const title = $(el).text();
+
+ const link = $('<a></a>');
+ link.text(title);
+ link.attr('title', translate('Goals_ClickToViewThisGoal'));
+ link.click((e) => {
+ e.preventDefault();
+
+ MatomoUrl.updateHash({
+ ...MatomoUrl.hashParsed.value,
+ category: 'Goals_Goals',
+ subcategory: binding.value.idGoal,
+ });
+ });
+
+ $(el).html(link[0]);
+ },
+};
+
+export default GoalPageLink;
+
+// manually handle occurrence of goal-page-link on datatable html attributes since dataTable.js is
+// not managed by vue.
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+Matomo.on('Matomo.processDynamicHtml', ($element: JQuery) => {
+ $element.find('[goal-page-link]').each((i, e) => {
+ if ($(e).attr('goal-page-link-handled')) {
+ return;
+ }
+
+ const idGoal = $(e).attr('goal-page-link');
+ if (idGoal) {
+ GoalPageLink.mounted(e, {
+ instance: null,
+ value: {
+ idGoal,
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ });
+ }
+
+ $(e).attr('goal-page-link-handled', '1');
+ });
+});
diff --git a/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts b/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts
new file mode 100644
index 0000000000..72237788a8
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/ManageGoals.adapter.ts
@@ -0,0 +1,64 @@
+/*!
+ * 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 ManageGoals from './ManageGoals.vue';
+
+export default createAngularJsAdapter({
+ component: ManageGoals,
+ directiveName: 'piwikManageGoals',
+ scope: {
+ userCanEditGoals: {
+ angularJsBind: '<',
+ },
+ onlyShowAddNewGoal: {
+ angularJsBind: '<',
+ },
+ ecommerceEnabled: {
+ angularJsBind: '<',
+ },
+ goals: {
+ angularJsBind: '<',
+ },
+ showGoal: {
+ angularJsBind: '<',
+ },
+ showAddGoal: {
+ angularJsBind: '<',
+ },
+ addNewGoalIntro: {
+ angularJsBind: '<',
+ },
+ goalTriggerTypeOptions: {
+ angularJsBind: '<',
+ },
+ goalMatchAttributeOptions: {
+ angularJsBind: '<',
+ },
+ eventTypeOptions: {
+ angularJsBind: '<',
+ },
+ patternTypeOptions: {
+ angularJsBind: '<',
+ },
+ numericComparisonTypeOptions: {
+ angularJsBind: '<',
+ },
+ allowMultipleOptions: {
+ angularJsBind: '<',
+ },
+ beforeGoalListActionsBody: {
+ angularJsBind: '<',
+ },
+ endEditTable: {
+ angularJsBind: '<',
+ },
+ beforeGoalListActionsHead: {
+ angularJsBind: '<',
+ },
+ },
+});
diff --git a/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
new file mode 100644
index 0000000000..667935117b
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
@@ -0,0 +1,821 @@
+<!--
+ 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-show required until funnels/multiattribution are using vue and not angularjs -->
+ <div v-show="!onlyShowAddNewGoal">
+ <div
+ id='entityEditContainer'
+ feature="true"
+ v-show="showGoalList"
+ class="managegoals"
+ >
+ <ContentBlock :content-title="translate('Goals_ManageGoals')">
+ <ActivityIndicator :loading="isLoading"/>
+
+ <div class="contentHelp">
+ <span v-html="learnMoreAboutGoalTracking"/>
+ <span v-if="!ecommerceEnabled">
+ <br /><br/>
+
+ {{ translate('Goals_Optional') }} {{ translate('Goals_Ecommerce') }}:
+ <span v-html="youCanEnableEcommerceReports"/>
+ </span>
+ </div>
+
+ <table v-content-table>
+ <thead>
+ <tr>
+ <th class="first">{{ translate('General_Id') }}</th>
+ <th>{{ translate('Goals_GoalName') }}</th>
+ <th>{{ translate('General_Description') }}</th>
+ <th>{{ translate('Goals_GoalIsTriggeredWhen') }}</th>
+ <th>{{ translate('General_ColumnRevenue') }}</th>
+
+ <component
+ v-if="beforeGoalListActionsHeadComponent"
+ :is="beforeGoalListActionsHeadComponent"
+ ></component>
+
+ <th v-if="userCanEditGoals">{{ translate('General_Edit') }}</th>
+ <th v-if="userCanEditGoals">{{ translate('General_Delete') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr v-if="!Object.keys(goals || {}).length">
+ <td colspan='8'>
+ <br/>
+ {{ translate('Goals_ThereIsNoGoalToManage', siteName) }}
+ <br/><br/>
+ </td>
+ </tr>
+ <tr v-for="goal in goals || []" :id="goal.idgoal" :key="goal.idgoal">
+ <td class="first">{{ goal.idgoal }}</td>
+ <td>{{ goal.name }}</td>
+ <td>{{ goal.description }}</td>
+ <td>
+ <span class='matchAttribute'>
+ {{ goalMatchAttributeTranslations[goal.match_attribute]
+ || goal.match_attribute }}
+ </span>
+ <span v-if="goal.match_attribute === 'visit_duration'">
+ {{ lcfirst(translate('General_OperationGreaterThan')) }}
+ {{ translate('Intl_NMinutes', goal.pattern) }}
+ </span>
+ <span v-else-if="!!goal.pattern_type">
+ <br/>
+ {{ translate('Goals_Pattern') }} {{ goal.pattern_type }}: {{ goal.pattern }}
+ </span>
+ </td>
+ <td
+ class="center"
+ v-html="goal.revenue === 0 || goal.revenue === '0'
+ ? '-'
+ : $sanitize(goal.revenue_pretty)"
+ >
+ </td>
+
+ <component
+ v-if="beforeGoalListActionsBodyComponent[goal.idgoal]"
+ :is="beforeGoalListActionsBodyComponent[goal.idgoal]"
+ ></component>
+
+ <td v-if="userCanEditGoals" style="padding-top:2px">
+ <button
+ @click="editGoal(goal.idgoal)"
+ class="table-action"
+ :title="translate('General_Edit')"
+ >
+ <span class="icon-edit"></span>
+ </button>
+ </td>
+ <td v-if="userCanEditGoals" style="padding-top:2px">
+ <button
+ @click="deleteGoal(goal.idgoal)"
+ class="table-action"
+ :title="translate('General_Delete')"
+ >
+ <span class="icon-delete"></span>
+ </button>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <div class="tableActionBar" v-if="userCanEditGoals && !onlyShowAddNewGoal">
+ <button id="add-goal" @click="createGoal()">
+ <span class="icon-add"></span>
+ {{ translate('Goals_AddNewGoal') }}
+ </button>
+ </div>
+ </ContentBlock>
+ </div>
+
+ <div class="ui-confirm" ref="confirm">
+ <h2>{{ translate('Goals_DeleteGoalConfirm', `"${goalToDelete?.name}"`) }}</h2>
+ <input role="yes" type="button" :value="translate('General_Yes')"/>
+ <input role="no" type="button" :value="translate('General_No')"/>
+ </div>
+ </div>
+
+ <!-- v-show required until funnels/multiattribution are using vue and not angularjs -->
+ <div v-show="userCanEditGoals">
+ <div class="addEditGoal" v-show="showEditGoal">
+ <ContentBlock
+ :content-title="goal.idgoal
+ ? translate('Goals_UpdateGoal')
+ : translate('Goals_AddNewGoal')"
+ >
+ <div v-html="$sanitize(addNewGoalIntro)"></div>
+
+ <div v-form>
+ <div>
+ <Field
+ uicontrol="text"
+ name="goal_name"
+ v-model="goal.name"
+ :maxlength="50"
+ :title="translate('Goals_GoalName')">
+ </Field>
+ </div>
+
+ <div>
+ <Field
+ uicontrol="text"
+ name="goal_description"
+ v-model="goal.description"
+ :maxlength="255"
+ :title="translate('General_Description')"
+ />
+ </div>
+
+ <div class="row goalIsTriggeredWhen">
+ <div class="col s12">
+ <h3>{{ translate('Goals_GoalIsTriggered') }}</h3>
+ </div>
+ </div>
+
+ <div class="row">
+ <div class="col s12 m6 goalTriggerType">
+ <div>
+ <Field
+ uicontrol="select" name="trigger_type"
+ :model-value="triggerType"
+ @update:model-value="triggerType = $event; changedTriggerType()"
+ :full-width="true"
+ :options="goalTriggerTypeOptions"
+ />
+ </div>
+ </div>
+ <div class="col s12 m6">
+ <Alert severity="info" v-show="triggerType === 'manually'">
+ <span v-html="whereVisitedPageManuallyCallsJsTrackerText"></span>
+ </Alert>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="match_attribute"
+ v-show="triggerType !== 'manually'"
+ :full-width="true"
+ :model-value="goal.match_attribute"
+ @update:model-value="goal.match_attribute = $event; initPatternType()"
+ :options="goalMatchAttributeOptions"
+ />
+ </div>
+ </div>
+ </div>
+
+ <div class="row whereTheMatchAttrbiute" v-show="triggerType !== 'manually'">
+ <h3 class="col s12">{{ translate('Goals_WhereThe') }}
+ <span v-show="goal.match_attribute === 'url'">
+ {{ translate('Goals_URL') }}
+ </span>
+ <span v-show="goal.match_attribute === 'title'">
+ {{ translate('Goals_PageTitle') }}
+ </span>
+ <span v-show="goal.match_attribute === 'file'">
+ {{ translate('Goals_Filename') }}
+ </span>
+ <span v-show="goal.match_attribute === 'external_website'">
+ {{ translate('Goals_ExternalWebsiteUrl') }}
+ </span>
+ <span v-show="goal.match_attribute === 'visit_duration'">
+ {{ translate('Goals_VisitDuration') }}
+ </span>
+ </h3>
+ </div>
+
+ <div class="row" v-show="triggerType !== 'manually'">
+ <div class="col s12 m6 l4"
+ v-show="goal.match_attribute === 'event'">
+ <div>
+ <Field
+ uicontrol="select" name="event_type"
+ v-model="eventType"
+ :full-width="true"
+ :options="eventTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4" v-if="!isMatchAttributeNumeric">
+ <div>
+ <Field
+ uicontrol="select"
+ name="pattern_type"
+ v-model="goal.pattern_type"
+ :full-width="true"
+ :options="patternTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4" v-if="isMatchAttributeNumeric">
+ <div>
+ <Field
+ uicontrol="select" name="pattern_type"
+ v-model="goal.pattern_type"
+ :full-width="true"
+ :options="numericComparisonTypeOptions"
+ />
+ </div>
+ </div>
+
+ <div class="col s12 m6 l4">
+ <div>
+ <Field
+ uicontrol="text" name="pattern"
+ v-model="goal.pattern"
+ :maxlength="255"
+ :title="patternFieldLabel"
+ :full-width="true"
+ />
+ </div>
+ </div>
+
+ <div id="examples_pattern" class="col s12">
+ <Alert severity="info">
+ <span v-show="goal.match_attribute === 'url'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'checkout/confirmation'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://example.com/thank-you.html'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)\\\/demo\\\/(.*)'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'title'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'Order confirmation'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'file'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'files/brochure.pdf'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://example.com/files/brochure.pdf'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)\\\.zip'") }}
+ </span>
+ <span v-show="goal.match_attribute === 'external_website'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'amazon.com'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'http://mypartner.com/landing.html'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ matchesExpressionExternal }}
+ </span>
+ <span v-show="goal.match_attribute === 'event'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_Contains', "'video'") }}
+ <br />
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_IsExactly', "'click'") }}
+ <br />{{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_MatchesExpression', "'(.*)_banner'") }}"
+ </span>
+ <span v-show="goal.match_attribute === 'visit_duration'">
+ {{ translate('General_ForExampleShort') }}
+ {{ translate('Goals_AtLeastMinutes', '5', '0.5') }}
+ </span>
+ </Alert>
+ </div>
+ </div>
+
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="case_sensitive"
+ v-model="goal.case_sensitive"
+ v-show="triggerType !== 'manually' && !isMatchAttributeNumeric"
+ :title="caseSensitiveTitle"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="allow_multiple"
+ :model-value="goal.allow_multiple ? 1 : 0"
+ @update:model-value="goal.allow_multiple = $event"
+ v-if="goal.match_attribute !== 'visit_duration'"
+ :options="allowMultipleOptions"
+ :introduction="translate('Goals_AllowMultipleConversionsPerVisit')"
+ :inline-help="translate('Goals_HelpOneConversionPerVisit')"
+ />
+ </div>
+
+ <h3>{{ translate('Goals_GoalRevenue') }} {{ translate('Goals_Optional') }}</h3>
+
+ <div>
+ <Field
+ uicontrol="number"
+ name="revenue"
+ v-model="goal.revenue"
+ :placeholder="translate('Goals_DefaultRevenueLabel')"
+ :inline-help="translate('Goals_DefaultRevenueHelp')"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="use_event_value"
+ v-model="goal.event_value_as_revenue"
+ :title="translate('Goals_UseEventValueAsRevenue')"
+ v-show="goal.match_attribute === 'event'"
+ :inline-help="useEventValueAsRevenueHelp"
+ />
+ </div>
+
+ <div ref="endedittable">
+ <component :is="endEditTableComponent" v-if="endEditTableComponent"/>
+ </div>
+
+ <input type="hidden" name="goalIdUpdate" value=""/>
+
+ <SaveButton
+ :saving="isLoading"
+ @confirm="save()"
+ :value="submitText"
+ />
+
+ <div v-if="!onlyShowAddNewGoal">
+ <div
+ class='entityCancel'
+ v-show="showEditGoal"
+ @click="showListOfReports()"
+ v-html="cancelText"
+ >
+ </div>
+ </div>
+ </div>
+ </ContentBlock>
+ </div>
+ </div>
+
+ <a id='bottom'></a>
+ </div>
+</template>
+
+<script lang="ts">
+import { IScope } from 'angular';
+import { defineComponent, markRaw, nextTick } from 'vue';
+import {
+ Matomo,
+ AjaxHelper,
+ AjaxOptions,
+ translate,
+ ContentBlock,
+ ActivityIndicator,
+ MatomoUrl,
+ ContentTable,
+ Alert,
+ ReportingMenuStore,
+} from 'CoreHome';
+import {
+ Form,
+ Field,
+ SaveButton,
+} from 'CorePluginsAdmin';
+import Goal from '../Goal';
+import PiwikApiMock from './PiwikApiMock';
+
+interface ManageGoalsState {
+ showEditGoal: boolean;
+ showGoalList: boolean;
+ goal: Goal;
+ isLoading: boolean;
+ eventType: string;
+ triggerType: string;
+ apiMethod: string;
+ submitText: string;
+ goalToDelete: Goal|null;
+ addEditTableComponent: boolean;
+}
+
+export default defineComponent({
+ inheritAttrs: false,
+ props: {
+ onlyShowAddNewGoal: Boolean,
+ userCanEditGoals: Boolean,
+ ecommerceEnabled: Boolean,
+ goals: {
+ type: Object,
+ required: true,
+ },
+ addNewGoalIntro: String,
+ goalTriggerTypeOptions: Object,
+ goalMatchAttributeOptions: Array,
+ eventTypeOptions: Array,
+ patternTypeOptions: Array,
+ numericComparisonTypeOptions: Array,
+ allowMultipleOptions: Array,
+ showAddGoal: Boolean,
+ showGoal: Number,
+ beforeGoalListActionsBody: Object,
+ endEditTable: String,
+ beforeGoalListActionsHead: String,
+ },
+ data(): ManageGoalsState {
+ return {
+ showEditGoal: false,
+ showGoalList: true,
+ goal: {} as unknown as Goal,
+ isLoading: false,
+ eventType: 'event_category',
+ triggerType: 'visitors',
+ apiMethod: '',
+ submitText: '',
+ goalToDelete: null,
+ addEditTableComponent: false,
+ };
+ },
+ components: {
+ SaveButton,
+ ContentBlock,
+ ActivityIndicator,
+ Field,
+ Alert,
+ },
+ directives: {
+ ContentTable,
+ Form,
+ },
+ mounted() {
+ if (this.showAddGoal) {
+ this.createGoal();
+ } else if (this.showGoal) {
+ this.editGoal(this.showGoal);
+ }
+
+ this.showListOfReports();
+
+ // this component can be used in multiple places, one where
+ // Matomo.helper.compileAngularComponents() is already called, one where it's not.
+ // to make sure this function is only applied once to the slot data, we explicitly do not
+ // add it to vue, then on the next update, add it and call compileAngularComponents()
+ nextTick(() => {
+ this.addEditTableComponent = true;
+
+ nextTick(() => {
+ const el = this.$refs.endedittable as HTMLElement;
+ const scope = Matomo.helper.getAngularDependency('$rootScope').$new(true);
+ $(el).data('scope', scope);
+ Matomo.helper.compileAngularComponents(el, { scope });
+ });
+ });
+ },
+ beforeUnmount() {
+ const el = this.$refs.endedittable as HTMLElement;
+ ($(el).data('scope') as IScope).$destroy();
+ },
+ methods: {
+ scrollToTop() {
+ setTimeout(() => {
+ Matomo.helper.lazyScrollTo('.pageWrap', 200);
+ });
+ },
+ initGoalForm(
+ goalMethodAPI: string,
+ submitText: string,
+ goalName: string,
+ description: string,
+ matchAttribute: string,
+ pattern: string,
+ patternType: string,
+ caseSensitive: boolean,
+ revenue: number,
+ allowMultiple: boolean,
+ useEventValueAsRevenue: boolean,
+ goalId: string|number,
+ ) {
+ Matomo.postEvent('Goals.beforeInitGoalForm', goalMethodAPI, goalId);
+
+ this.apiMethod = goalMethodAPI;
+
+ this.goal = {} as unknown as Goal;
+ this.goal.name = goalName;
+ this.goal.description = description;
+
+ let actualMatchAttribute = matchAttribute;
+ if (actualMatchAttribute === 'manually') {
+ this.triggerType = 'manually';
+ actualMatchAttribute = 'url';
+ } else {
+ this.triggerType = 'visitors';
+ }
+
+ if (actualMatchAttribute.indexOf('event') === 0) {
+ this.eventType = actualMatchAttribute;
+ actualMatchAttribute = 'event';
+ } else {
+ this.eventType = 'event_category';
+ }
+
+ this.goal.match_attribute = actualMatchAttribute;
+ this.goal.allow_multiple = allowMultiple;
+ this.goal.pattern_type = patternType;
+ this.goal.pattern = pattern;
+ this.goal.case_sensitive = caseSensitive;
+ this.goal.revenue = revenue;
+ this.goal.event_value_as_revenue = useEventValueAsRevenue;
+ this.submitText = submitText;
+ this.goal.idgoal = goalId;
+ },
+ showListOfReports() {
+ Matomo.postEvent('Goals.cancelForm');
+ this.showGoalList = true;
+ this.showEditGoal = false;
+ this.scrollToTop();
+ },
+ showAddEditForm() {
+ this.showGoalList = false;
+ this.showEditGoal = true;
+ },
+ createGoal() {
+ const parameters = {
+ isAllowed: true,
+ };
+ Matomo.postEvent('Goals.initAddGoal', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.showAddEditForm();
+ this.initGoalForm(
+ 'Goals.addGoal',
+ translate('Goals_AddGoal'),
+ '',
+ '',
+ 'url',
+ '',
+ 'contains',
+ false,
+ 0,
+ false,
+ false,
+ 0,
+ );
+ this.scrollToTop();
+ },
+ editGoal(goalId: string|number) {
+ this.showAddEditForm();
+ const goal = this.goals[`${goalId}`] as Goal;
+ this.initGoalForm(
+ 'Goals.updateGoal',
+ translate('Goals_UpdateGoal'),
+ goal.name,
+ goal.description,
+ goal.match_attribute,
+ goal.pattern,
+ goal.pattern_type,
+ !!goal.case_sensitive && goal.case_sensitive !== '0',
+ parseInt(`${goal.revenue}`, 10),
+ !!goal.allow_multiple && goal.allow_multiple !== '0',
+ !!goal.event_value_as_revenue && goal.event_value_as_revenue !== '0',
+ goalId,
+ );
+ this.scrollToTop();
+ },
+ deleteGoal(goalId: string|number) {
+ this.goalToDelete = this.goals[`${goalId}`];
+ Matomo.helper.modalConfirm((this.$refs.confirm as HTMLElement), {
+ yes: () => {
+ this.isLoading = true;
+
+ AjaxHelper.fetch({
+ idGoal: goalId,
+ method: 'Goals.deleteGoal',
+ }).then(() => {
+ window.location.reload();
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ });
+ },
+ save() {
+ const parameters: QueryParameters = {};
+ // TODO: test removal of encoding, should be handled by ajax request
+ parameters.name = this.goal.name;
+ parameters.description = this.goal.description;
+
+ if (this.isManuallyTriggered) {
+ parameters.matchAttribute = 'manually';
+ parameters.patternType = 'regex';
+ parameters.pattern = '.*';
+ parameters.caseSensitive = 0;
+ } else {
+ parameters.matchAttribute = this.goal.match_attribute;
+
+ if (parameters.matchAttribute === 'event') {
+ parameters.matchAttribute = this.eventType;
+ }
+
+ parameters.patternType = this.goal.pattern_type;
+ parameters.pattern = this.goal.pattern;
+ parameters.caseSensitive = this.goal.case_sensitive ? 1 : 0;
+ }
+ parameters.revenue = this.goal.revenue || 0;
+ parameters.allowMultipleConversionsPerVisit = this.goal.allow_multiple ? 1 : 0;
+ parameters.useEventValueAsRevenue = this.goal.event_value_as_revenue ? 1 : 0;
+
+ parameters.idGoal = this.goal.idgoal;
+ parameters.method = this.apiMethod;
+
+ const isCreate = parameters.method === 'Goals.addGoal';
+ const isUpdate = parameters.method === 'Goals.updateGoal';
+
+ const options: AjaxOptions = {};
+
+ const piwikApiMock = new PiwikApiMock(parameters, options);
+ if (isUpdate) {
+ Matomo.postEvent('Goals.beforeUpdateGoal', parameters, piwikApiMock);
+ } else if (isCreate) {
+ Matomo.postEvent('Goals.beforeAddGoal', parameters, piwikApiMock);
+ }
+
+ if (parameters?.cancelRequest) {
+ return;
+ }
+
+ this.isLoading = true;
+
+ AjaxHelper.fetch(parameters, options).then(() => {
+ const subcategory = MatomoUrl.parsed.value.subcategory as string;
+ if (subcategory === 'Goals_AddNewGoal'
+ && Matomo.helper.isAngularRenderingThePage()
+ ) {
+ // when adding a goal for the first time we need to load manage goals page afterwards
+ ReportingMenuStore.reloadMenuItems().then(() => {
+ MatomoUrl.updateHash({
+ ...MatomoUrl.hashParsed.value,
+ subcategory: 'Goals_ManageGoals',
+ });
+
+ this.isLoading = false;
+ });
+ } else {
+ window.location.reload();
+ }
+ }).catch(() => {
+ this.scrollToTop();
+ this.isLoading = false;
+ });
+ },
+ changedTriggerType() {
+ if (!this.isManuallyTriggered && !this.goal.pattern_type) {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ initPatternType() {
+ if (this.isMatchAttributeNumeric) {
+ this.goal.pattern_type = 'greater_than';
+ } else {
+ this.goal.pattern_type = 'contains';
+ }
+ },
+ lcfirst(s: string) {
+ return `${s.substr(0, 1).toLowerCase()}${s.substr(1)}`;
+ },
+ ucfirst(s: string) {
+ return `${s.substr(0, 1).toUpperCase()}${s.substr(1)}`;
+ },
+ },
+ computed: {
+ learnMoreAboutGoalTracking() {
+ return translate(
+ 'Goals_LearnMoreAboutGoalTrackingDocumentation',
+ '<a target="_blank" rel="noreferrer noopener" '
+ + 'href="https://matomo.org/docs/tracking-goals-web-analytics/">',
+ '</a>',
+ );
+ },
+ youCanEnableEcommerceReports() {
+ const link = MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ module: 'SitesManager',
+ action: 'index',
+ });
+
+ const ecommerceReportsText = '<a href="https://matomo.org/docs/ecommerce-analytics/" '
+ + `rel="noreferrer noopener" target="_blank">${translate('Goals_EcommerceReports')}</a>`;
+ const websiteManageText = `<a href='${link}'>${translate('SitesManager_WebsitesManagement')}</a>`;
+
+ return translate(
+ 'Goals_YouCanEnableEcommerceReports',
+ ecommerceReportsText,
+ websiteManageText,
+ );
+ },
+ siteName() {
+ return Matomo.helper.htmlDecode(Matomo.siteName);
+ },
+ whereVisitedPageManuallyCallsJsTrackerText() {
+ const link = 'https://developer.matomo.org/guides/tracking-javascript-guide#manually-trigger-goal-conversions';
+ return translate(
+ 'Goals_WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore',
+ `<a target="_blank" rel="noreferrer noopener" href="${link}">`,
+ '</a>',
+ );
+ },
+ caseSensitiveTitle() {
+ return `${translate('Goals_CaseSensitive')} ${translate('Goals_Optional')}`;
+ },
+ useEventValueAsRevenueHelp() {
+ return `${translate('Goals_EventValueAsRevenueHelp')} <br/><br/> ${translate('Goals_EventValueAsRevenueHelp2')}`;
+ },
+ cancelText() {
+ return translate(
+ 'General_OrCancel',
+ '<a class=\'entityCancelLink\'>',
+ '</a>',
+ );
+ },
+ isMatchAttributeNumeric() {
+ return ['visit_duration'].indexOf(this.goal.match_attribute) > -1;
+ },
+ patternFieldLabel() {
+ return this.goal.match_attribute === 'visit_duration'
+ ? translate('Goals_TimeInMinutes')
+ : translate('Goals_Pattern');
+ },
+ goalMatchAttributeTranslations() {
+ return {
+ manually: translate('Goals_ManuallyTriggeredUsingJavascriptFunction'),
+ file: translate('Goals_Download'),
+ url: translate('Goals_VisitUrl'),
+ title: translate('Goals_VisitPageTitle'),
+ external_website: translate('Goals_ClickOutlink'),
+ event_action: `${translate('Goals_SendEvent')} (${translate('Events_EventAction')})`,
+ event_category: `${translate('Goals_SendEvent')} (${translate('Events_EventCategory')})`,
+ event_name: `${translate('Goals_SendEvent')} (${translate('Events_EventName')})`,
+ visit_duration: `${this.ucfirst(translate('Goals_VisitDuration'))}`,
+ };
+ },
+ beforeGoalListActionsBodyComponent() {
+ if (!this.beforeGoalListActionsBody) {
+ return {};
+ }
+
+ const componentsByIdGoal: Record<string, unknown> = {};
+ Object.values(this.goals as Record<string, Goal>).forEach((g) => {
+ componentsByIdGoal[g.idgoal] = {
+ template: this.beforeGoalListActionsBody![g.idgoal],
+ };
+ });
+ return markRaw(componentsByIdGoal);
+ },
+ endEditTableComponent() {
+ if (!this.endEditTable || !this.addEditTableComponent) {
+ return null;
+ }
+
+ return markRaw({
+ template: this.endEditTable,
+ });
+ },
+ beforeGoalListActionsHeadComponent() {
+ if (!this.beforeGoalListActionsHead) {
+ return null;
+ }
+
+ return markRaw({
+ template: this.beforeGoalListActionsHead,
+ });
+ },
+ isManuallyTriggered() {
+ return this.triggerType === 'manually';
+ },
+ matchesExpressionExternal() {
+ const url = "'http://www.amazon.com\\/(.*)\\/yourAffiliateId'";
+ return translate('Goals_MatchesExpression', url);
+ },
+ },
+});
+</script>
diff --git a/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts b/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts
new file mode 100644
index 0000000000..9745fe3543
--- /dev/null
+++ b/plugins/Goals/vue/src/ManageGoals/PiwikApiMock.ts
@@ -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
+*/
+
+import { AjaxOptions } from 'CoreHome';
+
+// the piwikApi angularjs service is passed in some frontend events to allow plugins to modify
+// a request before it is sent. for the time being in Vue we use this mock, which has the same
+// API as the piwikApi service, to modify the input used with AjaxHelper. this provides BC
+// with for plugins that haven't been converted.
+//
+// should be removed in Matomo 5.
+export default class PiwikApiMock {
+ constructor(private parameters: QueryParameters, private options: AjaxOptions) {}
+
+ addParams(params: QueryParameters): void {
+ Object.assign(this.parameters, params);
+ }
+
+ withTokenInUrl(): void {
+ this.options.withTokenInUrl = true;
+ }
+
+ reset(): void {
+ Object.keys(this.parameters).forEach((name) => {
+ delete this.parameters[name];
+ });
+
+ delete this.options.postParams;
+ }
+
+ addPostParams(params: QueryParameters): void {
+ this.options.postParams = { ...this.options.postParams, ...params };
+ }
+}
diff --git a/plugins/Goals/vue/src/index.ts b/plugins/Goals/vue/src/index.ts
new file mode 100644
index 0000000000..a792651336
--- /dev/null
+++ b/plugins/Goals/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 './GoalPageLink/GoalPageLink.adapter';
+import './ManageGoals/ManageGoals.adapter';
+
+export { default as GoalPageLink } from './GoalPageLink/GoalPageLink.ts';
+export { default as ManageGoals } from './ManageGoals/ManageGoals.vue';
diff --git a/plugins/ImageGraph/ImageGraph.php b/plugins/ImageGraph/ImageGraph.php
index 8669f32ffc..f4139c91b0 100644
--- a/plugins/ImageGraph/ImageGraph.php
+++ b/plugins/ImageGraph/ImageGraph.php
@@ -14,7 +14,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Period;
use Piwik\Period\Range;
-use Piwik\Piwik;
use Piwik\Scheduler\Scheduler;
use Piwik\Site;
use Piwik\Url;
diff --git a/plugins/ImageGraph/lang/ca.json b/plugins/ImageGraph/lang/ca.json
index a5de45825a..9c0814a59a 100644
--- a/plugins/ImageGraph/lang/ca.json
+++ b/plugins/ImageGraph/lang/ca.json
@@ -1,5 +1,6 @@
{
"ImageGraph": {
- "ColumnOrdinateMissing": "La columan '%1$s' no s'ha trobat en aquest informe. Proveu algun dels següents: %2$s"
+ "ColumnOrdinateMissing": "La columan '%1$s' no s'ha trobat en aquest informe. Proveu algun dels següents: %2$s",
+ "PluginDescription": "Genereu boniques imatges estàtiques de gràfics PNG per a qualsevol dels vostres informes de dades."
}
-} \ No newline at end of file
+}
diff --git a/plugins/ImageGraph/lang/id.json b/plugins/ImageGraph/lang/id.json
index 8b6f9574ec..1589e35f4a 100644
--- a/plugins/ImageGraph/lang/id.json
+++ b/plugins/ImageGraph/lang/id.json
@@ -1,6 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolom '%1$s' tidak ditemukan dalam laporan ini. Coba salah satu dari %2$s",
- "PluginDescription": "Buat gambar Grafik PNG statis cantik untuk semua dari laporan data Anda"
+ "PluginDescription": "Buat gambar Grafik PNG statis yang indah untuk semua laporan data Anda."
}
-} \ No newline at end of file
+}
diff --git a/plugins/ImageGraph/tests/UI/expected-screenshots/ImageGraph_horizontal_bar.png b/plugins/ImageGraph/tests/UI/expected-screenshots/ImageGraph_horizontal_bar.png
index 35c853b512..12286fa9bf 100644
--- a/plugins/ImageGraph/tests/UI/expected-screenshots/ImageGraph_horizontal_bar.png
+++ b/plugins/ImageGraph/tests/UI/expected-screenshots/ImageGraph_horizontal_bar.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9ae523ff51d84c0fc16c9c1c1ce37cf6ac6a915847b35e2ae3b7d79ccc3fc397
-size 16063
+oid sha256:ac442533fc76320034eb72b7a97cc88dea92a052ad7c84ab984c612c27eb1714
+size 16103
diff --git a/plugins/Insights/Controller.php b/plugins/Insights/Controller.php
index 9627902913..546cb783e2 100644
--- a/plugins/Insights/Controller.php
+++ b/plugins/Insights/Controller.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\View;
/**
diff --git a/plugins/Insights/DataTable/Filter/MinGrowth.php b/plugins/Insights/DataTable/Filter/MinGrowth.php
index b30bdf5346..7d987909d9 100644
--- a/plugins/Insights/DataTable/Filter/MinGrowth.php
+++ b/plugins/Insights/DataTable/Filter/MinGrowth.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Insights\DataTable\Filter;
-use Piwik\DataTable;
use Piwik\DataTable\BaseFilter;
/**
diff --git a/plugins/Insights/Visualizations/Insight/RequestConfig.php b/plugins/Insights/Visualizations/Insight/RequestConfig.php
index b229534059..41d90825a5 100644
--- a/plugins/Insights/Visualizations/Insight/RequestConfig.php
+++ b/plugins/Insights/Visualizations/Insight/RequestConfig.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\Plugins\Insights\InsightReport;
-use Piwik\Plugins\Insights\Visualizations\Insight;
use Piwik\ViewDataTable\RequestConfig as VisualizationRequestConfig;
class RequestConfig extends VisualizationRequestConfig
diff --git a/plugins/Insights/lang/ca.json b/plugins/Insights/lang/ca.json
index d04ac3b2ac..05e3390431 100644
--- a/plugins/Insights/lang/ca.json
+++ b/plugins/Insights/lang/ca.json
@@ -1,5 +1,35 @@
{
"Insights": {
- "MoversAndShakersWidgetTitle": "Els més actius"
+ "ControlComparedToDescription": "Creixement en comparació amb",
+ "ControlFilterByDescription": "Mostra-ho tot, només els actius, només nous o només desapareguts",
+ "DatePeriodCombinationNotSupported": "No és possible generar indicadors per a aquesta combinació de data i període.",
+ "DayComparedToPreviousDay": "dia anterior",
+ "DayComparedToPreviousWeek": "mateix dia de la setmana passada",
+ "DayComparedToPreviousYear": "mateix dia de l'any passat",
+ "Filter": "Filtre",
+ "FilterIncreaserAndDecreaser": "Augmentador i reductor",
+ "FilterOnlyDecreaser": "Només reductor",
+ "FilterOnlyDisappeared": "Només desapareguts",
+ "FilterOnlyIncreaser": "Només augmentador",
+ "FilterOnlyMovers": "Només actius",
+ "FilterOnlyNew": "Només nous",
+ "IgnoredChanges": "S'ha ignorat els canvis que afecten menys de %s visites.",
+ "MonthComparedToPreviousMonth": "mes passat",
+ "MonthComparedToPreviousYear": "el mateix mes de l'any passat",
+ "MoversAndShakersWidgetTitle": "Els més actius",
+ "NoResultMatchesCriteria": "No hi ha cap fila que coincideixi amb els criteris",
+ "OverviewWidgetTitle": "Visió general dels indicadors",
+ "PluginDescription": "Proporciona informació sobre el vostre trànsit. Les estadístiques estan disponibles com a ginys del tauler de control, així com una nova icona als informes, que us permet veure les tendències més importants de les vostres dades.",
+ "TitleConsideredInsightsChanges": "Les files van augmentar o disminuir almenys %1$s visites (%2$s%% de %3$s visites totals).",
+ "TitleConsideredInsightsGrowth": "Les files següents tenen un creixement d'almenys %1$s%% en comparació amb %2$s.",
+ "TitleConsideredMoversAndShakersChanges": "Es consideren actius només si van augmentar més del %1$s%% de visites o es van reduir en menys del %2$s%% de visites, les entrades noves només si van augmentar més del %3$s%% de visites (%4$s ), i files desaparegudes si es van reduir menys de %5$s%% visites (%6$s).",
+ "TitleConsideredMoversAndShakersGrowth": "%1$s ha canviat de %2$s a %3$s en comparació amb %4$s. Per tant s'espera una evolució de cada fila de %5$s%%.",
+ "TitleRowChangeDetails": "'%1$s' ha canviat de %2$s (%3$s) a %4$s (%5$s) %6$s.",
+ "TitleRowDisappearedDetails": "'%1$s' es va reduir per %2$s i va desaparèixer el %3$s comparat amb %4$s.",
+ "TitleRowMoverAndShaker": "Aquesta fila va tenir un impacte superior a la mitjana.",
+ "TitleRowNewDetails": "\"%1$s\" va augmentar en %2$s i és nou en comparació amb %3$s.",
+ "WeekComparedToPreviousWeek": "setmana passada",
+ "WidgetCategory": "Indicadors",
+ "YearComparedToPreviousYear": "any passat"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Insights/lang/sq.json b/plugins/Insights/lang/sq.json
index d623482481..dfa2aa608e 100644
--- a/plugins/Insights/lang/sq.json
+++ b/plugins/Insights/lang/sq.json
@@ -1,6 +1,5 @@
{
"Insights": {
- "PluginDescription": "Furnizon Prirje të trafikut tuaj. Prirjet mund të kihen në formë widget-esh pulti, si edhe në formën e një ikone të re në raporte, që t’ju lejojë të shihni tendencat më të rëndësishme në të dhënat tuaja.",
"ControlComparedToDescription": "Rritja e krahasuar me",
"ControlFilterByDescription": "Shfaqi krejt, vetëm protagonistët, vetëm të rinjtë ose vetëm të zhdukurit",
"DatePeriodCombinationNotSupported": "S’është e mundur të prodhohen prirje për këtë ndërthurje date dhe periudhe.",
@@ -8,23 +7,24 @@
"DayComparedToPreviousWeek": "e njëjta ditë javën e kaluar",
"DayComparedToPreviousYear": "e njëjta ditë vitin e kaluar",
"Filter": "Filtrojini",
- "FilterIncreaserAndDecreaser": "Shtues & pakësues",
+ "FilterIncreaserAndDecreaser": "Shtues &amp; pakësues",
"FilterOnlyDecreaser": "Vetëm pakësues",
"FilterOnlyDisappeared": "Vetëm të zhdukur",
"FilterOnlyIncreaser": "Vetëm shtues",
"FilterOnlyMovers": "Vetëm protagonistë",
- "FilterOnlyNew": "Vetëm të rinjtë",
+ "FilterOnlyNew": "Vetëm të rinj",
"IgnoredChanges": "U shpërfillën ndryshimet që u takojnë më pak se %s vizitave.",
"MonthComparedToPreviousMonth": "muaji i mëparshëm",
"MonthComparedToPreviousYear": "i njëjti muaj vitin e shkuar",
"MoversAndShakersWidgetTitle": "Protagonistë",
"NoResultMatchesCriteria": "S’ka rresht me përputhje për kriterin",
"OverviewWidgetTitle": "Përmbledhje Prirjesh",
+ "PluginDescription": "Furnizon Prirje të trafikut tuaj. Prirjet mund të kihen në formë widget-esh pulti, si edhe në formën e një ikone të re në raporte, që t’ju lejojë të shihni tendencat më të rëndësishme në të dhënat tuaja.",
"TitleConsideredInsightsChanges": "Rreshtat u shtuan ose pakësuan me të paktën %1$s vizita (%2$s%% nga %3$s vizita gjithsej).",
"TitleConsideredInsightsGrowth": "Rreshtat vijues kanë një rritje prej të paktën %1$s%% krahasuar me %2$s.",
"TitleConsideredMoversAndShakersChanges": "Të konsideruar protagonistë vetëm nëse u rritën me më tepër se %1$s%% vizita ose u tkurrën me më pak se %2$s%% vizita, zëra të rinj vetëm nëse u shtuan me më shumë se %3$s%% vizita (%4$s), dhe rreshta të zhdukur, nëse u tkurrën në më pak se %5$s%% vizita (%6$s).",
"TitleConsideredMoversAndShakersGrowth": "%1$s ndryshoi nga %2$s në %3$s krahasuar me %4$s. Bazuar në këtë, pritet një evolucion %5$s%% për çdo rresht.",
- "TitleRowChangeDetails": "'%1$s' ndryshoi nga %2$s (%3$s) to %4$s (%5$s) %6$s.",
+ "TitleRowChangeDetails": "'%1$s' ndryshoi nga %2$s (%3$s) në %4$s (%5$s) %6$s.",
"TitleRowDisappearedDetails": "'%1$s' u pakësua me %2$s dhe u zhduk në %3$s krahasuar me %4$s.",
"TitleRowMoverAndShaker": "Ky rresht ka një ndikim më të madh se mesatarja.",
"TitleRowNewDetails": "'%1$s' u rrit me %2$s dhe është i ri krahasuar me %3$s.",
@@ -32,4 +32,4 @@
"WidgetCategory": "Prirje",
"YearComparedToPreviousYear": "viti i mëparshëm"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Insights/lang/tl.json b/plugins/Insights/lang/tl.json
index 0b5eb75897..55d27ba2fd 100644
--- a/plugins/Insights/lang/tl.json
+++ b/plugins/Insights/lang/tl.json
@@ -5,6 +5,7 @@
"DayComparedToPreviousYear": "Sa parehong araw sa nakaraang taon",
"MonthComparedToPreviousMonth": "nakaraang buwan",
"MonthComparedToPreviousYear": "Parehong buwan sa nakaraang taon",
+ "PluginDescription": "Nagbibigay ng mga Insight tungkol sa iyong trapiko sa website. Available ang mga insight bilang mga widget ng dashboard pati na rin ang bagong icon sa mga ulat, para makita mo ang pinakamahahalagang trend sa iyong data.",
"TitleConsideredMoversAndShakersChanges": "Masasabing movers kung ito ay tumaas ng mahigit sa %1$s%% pagbisita o bumababa ng higit sa %2$s%% pagbisita ang mga bagong entry kung ang kanilang pagtaas ay mahigit sa %3$s%% pagbisita (%4$s) at kung mawawala ang rows ng mas mababa sa %5$s%% pagbisita (%6$s).",
"TitleConsideredMoversAndShakersGrowth": "%1$s ay nagbago mula sa %2$s sa %3$s kumpara sa %4$s. Base sa isang paglaki ng bawat hilera ng%5$s%% ay inaasahan.",
"TitleRowChangeDetails": "'%1$s' ay nagbago mula %2$s (%3$s) hanggang %4$s (%5$s) %6$s.",
@@ -14,4 +15,4 @@
"WidgetCategory": "Mga Pananaw",
"YearComparedToPreviousYear": "nakaraang taon"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Insights/tests/Unit/BaseUnitTest.php b/plugins/Insights/tests/Unit/BaseUnitTest.php
index d7f768aacf..c72eb91feb 100644
--- a/plugins/Insights/tests/Unit/BaseUnitTest.php
+++ b/plugins/Insights/tests/Unit/BaseUnitTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* Abstract class because it avoids it being picked up as a test case
diff --git a/plugins/Insights/tests/Unit/FilterOrderByTest.php b/plugins/Insights/tests/Unit/FilterOrderByTest.php
index 82e4ae4aae..dc31919071 100644
--- a/plugins/Insights/tests/Unit/FilterOrderByTest.php
+++ b/plugins/Insights/tests/Unit/FilterOrderByTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Plugins\Insights\DataTable\Filter\OrderBy;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Insights
diff --git a/plugins/Insights/tests/Unit/InsightReportTest.php b/plugins/Insights/tests/Unit/InsightReportTest.php
index cf0a916751..ee8969060a 100644
--- a/plugins/Insights/tests/Unit/InsightReportTest.php
+++ b/plugins/Insights/tests/Unit/InsightReportTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Insights\tests\Unit;
use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Insights\InsightReport;
-use Piwik\Plugins\Insights\Visualizations\Insight;
/**
* @group Insights
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index 413d77aeb6..91b0283c19 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -458,7 +458,6 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$view->addForm($form);
$view->showNextStep = false;
- $view->linkToProfessionalServices = StaticContainer::get('Piwik\ProfessionalServices\Advertising')->getPromoUrlForProfessionalServices($medium = 'App_InstallationFinished');
$output = $view->render();
return $output;
diff --git a/plugins/Installation/FormSuperUser.php b/plugins/Installation/FormSuperUser.php
index a434275adc..9f9799f31d 100644
--- a/plugins/Installation/FormSuperUser.php
+++ b/plugins/Installation/FormSuperUser.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Installation;
use HTML_QuickForm2_DataSource_Array;
use HTML_QuickForm2_Factory;
use HTML_QuickForm2_Rule;
-use Piwik\Container\StaticContainer;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\QuickForm2;
diff --git a/plugins/Installation/Widgets/GetSystemCheck.php b/plugins/Installation/Widgets/GetSystemCheck.php
index f79829d1c9..23b4817095 100644
--- a/plugins/Installation/Widgets/GetSystemCheck.php
+++ b/plugins/Installation/Widgets/GetSystemCheck.php
@@ -15,7 +15,6 @@ use Piwik\Plugins\Diagnostics\DiagnosticReport;
use Piwik\Plugins\Diagnostics\DiagnosticService;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
-use Piwik\View;
class GetSystemCheck extends Widget
{
diff --git a/plugins/Installation/lang/ca.json b/plugins/Installation/lang/ca.json
index 8a222c282e..37852eb79d 100644
--- a/plugins/Installation/lang/ca.json
+++ b/plugins/Installation/lang/ca.json
@@ -1,92 +1,163 @@
{
"Installation": {
- "ConfirmDeleteExistingTables": "Realment voleu esborrar les taules %s de la base de dades? AVÍS: NO ES PODRAN RECUPERAR LES DADES!",
+ "CannotConnectToDb": "No s'ha pogut connectar amb la base de dades",
+ "CannotConnectToDbResolvingExplanation": "Pot ser que sigui un problema temporal, proveu d'%1$sactualitzar la pàgina%2$s. Poseu-vos en contacte amb el vostre administrador de Matomo si el problema persisteix.",
+ "CollaborativeProject": "Matomo és un projecte col·laboratiu fet amb amor.",
+ "ConfigurationHelp": "Corregiu el fitxer de configuració de Matomo eliminant config/config.ini.php i reprenent la instal·lació, o corregint la configuració de la connexió de la base de dades.",
+ "ConfirmDeleteExistingTables": "Voleu eliminar les taules %s de la vostra base de dades? ADVERTÈNCIA: NO ES PODRÀ RECUPERAR LES DADES D'AQUESTES TAULES!",
"Congratulations": "Felicitats",
- "DatabaseAbilities": "Habilitats de la Base de Dades",
+ "CongratulationsHelp": "<p>Enhorabona! La vostra instal·lació de Matomo s'ha completat.</p><p>Assegureu-vos que el vostre codi de seguiment estigui introduït a les vostres pàgines i espereu als vostres primers visitants.</p>",
+ "CopyBelowInfoForSupport": "Copieu o descarregueu la informació següent, en cas que el nostre equip d'assistència us demani aquesta informació.",
+ "CopySystemCheck": "Copia la comprovació del sistema",
+ "DatabaseAbilities": "Capacitats de la base de dades",
"DatabaseCreation": "Creació de la base de dades",
- "DatabaseErrorConnect": "Hi ha hagut un error amb la connexió al servidor de bases de dades.",
- "DatabaseServerVersion": "Versió del servidor de base de dades",
+ "DatabaseErrorConnect": "No s'ha pogut connectar al servidor de bases de dades",
+ "DatabaseServerVersion": "Versió del servidor de bases de dades",
"DatabaseSetup": "Configuració de la base de dades",
"DatabaseSetupAdapter": "Adaptador",
"DatabaseSetupDatabaseName": "Nom de la base de dades",
- "DatabaseSetupLogin": "Usuari",
+ "DatabaseSetupLogin": "Iniciar sessió",
"DatabaseSetupServer": "Servidor de la base de dades",
- "DatabaseSetupTablePrefix": "Prefix de les taules",
- "Email": "Correu-e",
+ "DatabaseSetupTablePrefix": "Prefix de taula",
+ "DefaultSettings": "Configuració predeterminada de Matomo",
+ "DefaultSettingsHelp": "Matomo ve amb la configuració predeterminada. Podeu personalitzar-la ara o fer-ho més tard a la pantalla d'administració.",
+ "DownloadSystemCheck": "Descarregar la comprovació del sistema",
+ "Email": "Correu electrònic",
+ "EmailPrivacyNotice": "La vostra adreça de correu electrònic només s'utilitzarà per enviar-vos el butlletí. Es comparteix amb Mad Mimi per fer-ho, però el proveïdor extern pot canviar. No compartirem el vostre correu electrònic amb ningú ni el farem servir per a cap altre propòsit. Cancel·leu la subscripció en qualsevol moment. La %1$spolítica de privadesa%2$s té més informació.",
"Extension": "extensió",
+ "FasterReportLoading": "càrrega d'informes més ràpida",
"Filesystem": "Sistema de fitxers",
- "GoBackAndDefinePrefix": "Torna enrere i defineix un prefix per a les taules",
+ "GetInvolved": "Si t'agrada el que veus, pots %1$s participar-hi%2$s.",
+ "GoBackAndDefinePrefix": "Torna enrere i defineix un prefix per a les taules de Matomo",
+ "HappyAnalysing": "Feliç anàlisi!",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Si heu instal·lat Matomo abans i teniu algunes taules a la vostra base de dades, no us preocupeu, podeu reutilitzar les mateixes taules i conservar les vostres dades existents.",
+ "InformationalResults": "Resultats informatius",
"Installation": "Instal·lació",
"InstallationStatus": "Estat de la instal·lació",
- "InsufficientPrivilegesHelp": "Podeu afegir aquest usuaris previlegiats utiltizat eines com el phpMyAdmin o executant les sentències SQL corresponents. Si no sabeu com fer cap d'aquestes coses, siusplau poseu-vos amb contacte amb el vostre administrador de sistemes per donar aquestos privilegis per vosaltres.",
- "LargePiwikInstances": "Ajuda per grans instàncies de Matomo",
+ "InsufficientPrivilegesHelp": "Aquests privilegis es poden afegir a phpMyAdmin o executant les consultes SQL adequades. Si no sabeu com, demaneu-ho al vostre administrador del sistema que ho faci.",
+ "InsufficientPrivilegesMain": "O la base de dades no existeix (i no s'ha pogut crear) o l'usuari especificat no té privilegis suficients. L'usuari de la base de dades ha de tenir els privilegis següents: %s",
+ "InvalidStateError": "Error: Matomo ja està instal·lat. %1$s Torna %2$s a Matomo%3$s.",
+ "JSTracking_EndNote": "Nota: després de la instal·lació, podeu generar un codi de seguiment personalitzat a la secció d'administració %1$sCodi de seguiment%2$s.",
+ "JSTracking_Intro": "Per fer un seguiment del vostre trànsit web amb Matomo, heu d'assegurar-vos que s'afegeix algun codi addicional a cadascuna de les vostres pàgines web.",
+ "JsTagArchivingHelp1": "Per als llocs web de trànsit mitjà i alt, determinades optimitzacions ajuden a Matomo a funcionar més ràpid (com ara %1$sconfigurar l'arxivat automàtic%2$s).",
+ "LargePiwikInstances": "Ajuda per als usuaris amb llocs web de gran trànsit",
"Legend": "Llegenda",
- "LoadDataInfileUnavailableHelp": "Fent servir %1$s millorarà la velocitat del proces d'arxiu de Matomo. Per a que estigui disponible per a Matomo, proeu actualitzant el vostre doftwar PHP & MySQL i asegureu-vos que el vostre usuari de base de dades té el privilegi %2$s.",
- "NfsFilesystemWarning": "El vostre servidor està utiltizant un sistema de fitxers NFS.",
- "NfsFilesystemWarningSuffixAdmin": "Això vol dir que el Matomo serà extremadament lent quan utilitzi les sessions basades en fitxers.",
- "NfsFilesystemWarningSuffixInstall": "Utilitzar sessions basades en fitxers amb NFS es extremadament lent, per això Matomo utilizarà les sessions de bases de dades. Si teniu molt usuaris concurrents, potser haureu d'incrementar el nombre de conexions concurrens al servidor de bases de dades.",
+ "LoadDataInfileRecommended": "Hauríeu de solucionar aquest problema si el vostre servidor de Matomo fa un seguiment de llocs web d'alt trànsit (per exemple, &gt; 100.000 pàgines al mes).",
+ "LoadDataInfileUnavailableHelp": "Suggeriment: fer servir %1$s actualitzant el vostre programari PHP i MySQL i assegurant-vos que l'usuari de la vostra base de dades tingui el privilegi %2$s accelera molt el procés d'arxivat de Matomo.",
+ "NfsFilesystemWarning": "El vostre servidor utilitza un sistema de fitxers NFS.",
+ "NfsFilesystemWarningSuffixAdmin": "Això significa que Matomo serà extremadament lent quan utilitzeu sessions basades en fitxers.",
+ "NfsFilesystemWarningSuffixInstall": "L'ús de sessions basades en fitxers a NFS és extremadament lent, de manera que Matomo utilitzarà sessions de base de dades. Si teniu molts usuaris de taulers de control simultanis, és possible que hàgiu d'augmentar el nombre màxim de connexions de client al servidor de bases de dades.",
+ "NoConfigFileFound": "No s'ha pogut trobar el fitxer de configuració de Matomo i esteu intentant accedir a una pàgina de Matomo.",
+ "NotSupported": "no compatible",
"Optional": "Opcional",
"Password": "Contrasenya",
- "PasswordDoNotMatch": "Les contrasenyes no coincideixen",
+ "PasswordDoNotMatch": "contrasenyes no coincidents",
"PasswordRepeat": "Contrasenya (torneu-la a escriure)",
- "PercentDone": "%s%% fet",
+ "PercentDone": "%s %% fet",
+ "PerformanceSettingsDesc1": "El vostre Matomo està configurat i preparat per fer un seguiment i informar sobre el trànsit del vostre lloc web. Configureu %1$sl'arxivat CLI%2$s si us sembla que és lent. Això genera informes en segon pla, més que a demanda.",
+ "PerformanceSettingsDesc2": "Això requereix afegir una ordre Matomo a Cron que l'instal·lador no pot fer automàticament. %1$sLlegiu les nostres FAQ per aprendre a configurar-ho vos mateix.%2$s",
+ "PhpBinaryCheck": "Binari PHP de 64 bits",
+ "PhpBinaryCheckHelp": "32 bits <p>Actualitzeu a un binari PHP de 64 bits abans de gener de 2026 per evitar errors.</p>",
+ "PiwikOrgNewsletter": "subscriu-te al nostre butlletí per rebre informació regular sobre Matomo.",
"PleaseFixTheFollowingErrors": "Siusplau corregiu els següents errors",
- "Requirements": "Requeriments del Matomo",
+ "ProfessionalServicesAdTitle": "Analítiques i serveis avançats",
+ "ProfessionalServicesNewsletter": "envieu-me informació sobre %1$sServeis i productes professionals%2$s per a Matomo",
+ "ProfessionalServicesfessionalDiscoverHow": "Obteniu informació sobre %1$sproductes i serveis addicionals%2$s per a Matomo i com augmentar les vostres conversions i els vostres ingressos.",
+ "ProfessionalServicesfessionalServicesAdText": "La nostra xarxa d'experts pot ajudar la vostra organització a utilitzar Matomo Analytics al màxim.",
+ "Requirements": "Requeriments de Matomo",
"RestartWebServer": "Desprès de fer aquest canvi, reinicieu el vostre servidor web.",
- "SeeBelowForMoreInfo": "Llegiu a continuació per més informació.",
- "SetupWebsite": "Configura un lloc",
- "SetupWebsiteError": "Hi ha hagut un problema en el moment d'afegir el lloc.",
- "SetupWebsiteSetupSuccess": "El lloc %s s'ha creat amb èxit!",
- "SiteSetup": "Siusplau, configureu el primer lloc web que voleu rastrejar i anarlitzar amb el Matomo",
- "SiteSetupFootnote": "Nota: Quan s'haigin finalitzat la instal·lació del Matomo podreu afegir més llocs webs per fer-n'he el seguiment.",
+ "ReusingTables": "Reutilització de les taules",
+ "SeeBelowForMoreInfo": "Més informació a continuació.",
+ "SetupWebSiteName": "Nom del lloc web",
+ "SetupWebSiteURL": "URL del lloc web",
+ "SetupWebsite": "Configura un lloc web",
+ "SetupWebsiteError": "No s'ha pogut afegir el lloc web",
+ "SetupWebsiteSetupSuccess": "S'ha creat el lloc web %s",
+ "SiteSetup": "Configureu el primer lloc web del qual voleu fer seguiment i anàlisi amb Matomo:",
+ "SiteSetupFootnote": "Nota: un cop Matomo estigui completament instal·lat, podeu afegir més llocs web per fer-ne el seguiment.",
"SuperUser": "Superusuari",
- "SuperUserSetupSuccess": "Superusuari creat correctament",
+ "SuperUserLogin": "Inici de sessió de superusuari",
+ "SuperUserSetupError": "No s'ha pogut afegir el superusuari",
+ "SuperUserSetupSuccess": "Superusuari creat.",
"SystemCheck": "Comprovació del sistema",
- "SystemCheckAutoUpdateHelp": "Nota: L'actualització en un click del Matomo requereix permisos d'escriptura a la carpeta Matomo i el seu contingut.",
- "SystemCheckDatabaseHelp": "El Matomo necessita l'extensió mysqli o ambdues extensións PDO i pdo_mysql.",
- "SystemCheckDebugBacktraceHelp": "View::factory no serà capaç de crear vistes per mòdul que la crida.",
- "SystemCheckError": "Hi ha hagut un error i s'ha d'arreglar abans de que pugueu continuar.",
- "SystemCheckEvalHelp": "Necessari per Sistema de plantilles Smarty i el HTML QuickForm",
+ "SystemCheckAutoUpdateHelp": "Nota: l'actualització d'un sol clic de Matomo requereix permís d'escriptura a la carpeta Matomo i al seu contingut.",
+ "SystemCheckCronArchiveProcess": "Configura Cron",
+ "SystemCheckCronArchiveProcessCLI": "Gestió de processos mitjançant CLI",
+ "SystemCheckDatabaseExtensions": "Extensions de MySQL",
+ "SystemCheckDatabaseHelp": "Matomo requereix l'extensió MySQLi o les extensions PDO i pdo_mysql.",
+ "SystemCheckDatabaseSSL": "Connexió SSL a la base de dades",
+ "SystemCheckDatabaseSSLCipher": "S'està utilitzant el xifratge SSL",
+ "SystemCheckDatabaseSSLDisabled": "El suport SSL està desactivat al vostre servidor de bases de dades",
+ "SystemCheckDatabaseSSLNo": "El servidor de bases de dades no està compilat amb suport SSL",
+ "SystemCheckDatabaseSSLNotWorking": "%s està configurat a \"1\", però la connexió SSL no funciona",
+ "SystemCheckDatabaseSSLOn": "La vostra base de dades no utilitza connexions SSL, però és compatible. Comproveu la configuració SSL de la vostra base de dades al fitxer de configuració de Matomo",
+ "SystemCheckDebugBacktraceHelp": "View::factory no podrà crear vistes per al mòdul de trucada.",
+ "SystemCheckError": "S'ha produït un error i s'ha de solucionar abans de continuar",
+ "SystemCheckEvalHelp": "Requerit per HTML QuickForm i el sistema de plantilles Twig.",
"SystemCheckExtensions": "Altres extensions necessàries",
"SystemCheckFileIntegrity": "Integritat dels fitxers",
+ "SystemCheckFilterHelp": "Heu de configurar i reconstruir PHP amb suport de \"filtre\" (no feu servir --disable-filter).",
"SystemCheckFunctions": "Funcions necessàries",
- "SystemCheckGDHelp": "Els gràfics petits no funcionaran.",
- "SystemCheckGlobHelp": "Aquesta funció s'ha deshabilitat al vostre host. El Matomo probarà d'emular aquesta funció però pot trobar-se amb altres restriccions de seguretat. Això impactarà a la funcionalitat.",
+ "SystemCheckGDFreeType": "GD &gt; 2.x + FreeType (gràfics)",
+ "SystemCheckGDHelp": "Les espurnes (gràfics petits) i els gràfics d'imatge (a l'aplicació mòbil Matomo i als informes de correu electrònic) no funcionaran.",
+ "SystemCheckGlobHelp": "Aquesta funció integrada s'ha desactivat al vostre hoste. Matomo intentarà emular la funció, però pot trobar més restriccions de seguretat. La funcionalitat es pot veure afectada.",
"SystemCheckGzcompressHelp": "Heu d'activar l'extensió zlib i la funció gzcompress.",
- "SystemCheckGzuncompressHelp": "Heu d'activar l'extensió zlib i la funcció gzuncompress.",
- "SystemCheckMailHelp": "Les opinions i els missatges de pèrdua de la contrassenya no s'enviaran sense la funció mail().",
+ "SystemCheckGzuncompressHelp": "Heu d'activar l'extensió zlib i la funció gzuncompress.",
+ "SystemCheckHashHelp": "Configureu i reconstruïu PHP amb el suport hash() necessari excloent l'opció --disable-hash.",
+ "SystemCheckJsonHelp": "L'extensió php-json és necessària perquè Matomo llegeixi i escrigui dades en format JSON.",
+ "SystemCheckMailHelp": "Els missatges de comentaris i de \"contrasenya perduda\" no s'enviaran sense \"mail()\".",
"SystemCheckMemoryLimit": "Límit de memòria",
- "SystemCheckMemoryLimitHelp": "En un lloc web amb trànsit elevat, la creació de l'arxiu pot necessitar més memòria de l'acceptada actualment.<br />Feu una ullada al 'memory_limit' del vostre fitxer php.ini si és necessari.",
- "SystemCheckOpenURL": "Obre l'adreça",
- "SystemCheckOpenURLHelp": "Les subscripcions a les llistes de correu, notificacions d'actualització i actualitzacions en un clic necessiten l'extensió \"curl\", allow_url_fopen=On, o fsockopen() actiu.",
+ "SystemCheckMemoryLimitHelp": "En un lloc web de gran trànsit, el procés d'arxivat pot demanar més memòria de la que es permet actualment. Si cal, canvieu la directiva memory_limit al vostre fitxer php.ini.",
+ "SystemCheckMemoryNoMemoryLimitSet": "No hi ha cap límit de memòria establert",
+ "SystemCheckNoErrorsOrWarnings": "Sense errors ni avisos",
+ "SystemCheckOpenURL": "Obre l'URL",
+ "SystemCheckOpenURLHelp": "Les subscripcions al butlletí, les notificacions d'actualització i les actualitzacions d'un sol clic requereixen l'extensió \"cURL\", allow_url_fopen=On o fsockopen() habilitat.",
"SystemCheckOtherExtensions": "Altres extensions",
"SystemCheckOtherFunctions": "Altres funcions",
- "SystemCheckPackHelp": "La funció pack() es necessària per fer el seguiment de visitants al Matomo.",
- "SystemCheckParseIniFileHelp": "Aquesta funció ha estat deshabilitada al vostre host. El Matomo intentarà emular la seva funcionalitat però pot trobar altres restriccions de seguretat. El rendiment del seguiment es veurà impactat.",
- "SystemCheckPdoAndMysqliHelp": "En un servidor Linux podeu compilar el php amb les següents opcions: %1$s Al fitxer php.ini, afegiu les línies: %2$s",
- "SystemCheckPhp": "Versió del PHP",
- "SystemCheckPhpPdoAndMysqli": "Trobareu més informació a %1$sPHP PDO%2$s i %3$sMYSQLI%4$s.",
- "SystemCheckSummaryNoProblems": "Urra!! No hi ha cap problema amb la vostra configuració de Matomo.",
- "SystemCheckSummaryThereWereErrors": "Ohhh! El Matomo ha trobat algunes %1$s incidències crítiques %2$s amb la vostra configuració de Matomo. %3$s Aquestes incidències s'han de solucionar inmediatament. %4$s",
- "SystemCheckSummaryThereWereWarnings": "Hi ha alguna incidència amb el vostre sistema. El Matomo funcionarà, però podeu tenir alguns problemes menors.",
- "SystemCheckTimeLimitHelp": "En un lloc web amb trànsit elevat, la creació de l'arxiu pot necessitar més temps de l'acceptada actualment.<br />Feu una ullada al 'max_execution_time' del vostre fitxer php.ini si és necessari.",
+ "SystemCheckPackHelp": "La funció 'pack()' és necessària per fer un seguiment dels visitants a Matomo.",
+ "SystemCheckPageSpeedDisabled": "PageSpeed està desactivat",
+ "SystemCheckPageSpeedWarning": "Es recomana desactivar el mòdul PageSpeed al vostre servidor web %s: PageSpeed causa diversos problemes amb Matomo, com ara: informes de pàgines trencades, evolució de fila trencada, etc. DSi us plau desactiveu mod_pagespeed en aquest servidor.",
+ "SystemCheckParseIniFileHelp": "Aquesta funció integrada s'ha desactivat al vostre hoste. Matomo intentarà emular-ho, però pot trobar-se amb més restriccions de seguretat. Afectarà el rendiment del seguiment.",
+ "SystemCheckPdoAndMysqliHelp": "En un servidor GNU/Linux podeu compilar PHP amb les opcions següents: %1$s Al vostre php.ini, afegiu les línies següents: %2$s",
+ "SystemCheckPhp": "Versió de PHP",
+ "SystemCheckPhpPdoAndMysqli": "Més informació: %1$sPHP PDO%2$s i %3$sMYSQLI%4$s.",
+ "SystemCheckPhpSetting": "Configureu el vostre fitxer php.ini així per evitar errors crítics: %s",
+ "SystemCheckSessionHelp": "Configureu i reconstruïu PHP amb el suport necessari de \"sessió\" (no feu servir --disable-session).",
+ "SystemCheckSettings": "Configuració PHP necessària (php.ini)",
+ "SystemCheckShellExecHelp": "Es recomana activar aquesta funció integrada de PHP. %1$sLlegiu això per obtenir més informació.%2$s",
+ "SystemCheckSummaryNoProblems": "No hi ha problemes amb la configuració de Matomo. Doneu-vos un copet a l'esquena.",
+ "SystemCheckSummaryThereWereErrors": "La vostra configuració de Matomo té alguns %1$sproblemes crítics%2$s. %3$sCorregiu-los immediatament.%4$s",
+ "SystemCheckSummaryThereWereWarnings": "Hi ha alguns problemes amb el vostre sistema. Matomo s'executarà, però és possible que tingueu problemes menors.",
+ "SystemCheckTimeLimitHelp": "En un lloc web de gran trànsit, l'execució del procés d'arxivat pot trigar més del que es permet actualment. Si cal, canvieu la directiva 'max_execution_time' al vostre fitxer php.ini.",
"SystemCheckTracker": "Estat del rastrejador",
- "SystemCheckWarnDomHelp": "Heu d'habilitar l'extensió \"dom\" (p.e, instalar els paquets \"php-dom\" i/o \"php-xml\").",
- "SystemCheckWarnLibXmlHelp": "Heu d'activar l'extensió \"libxml\" (e.g., instalar el paquet \"php-libxml\") perquè es necesària per altres extensions del nucli de PHP.",
- "SystemCheckWarnSimpleXMLHelp": "Heu d'activar l'extensió \"SimpleXML\" (p.e., installar el paquet \"php-simplexml\" i/o \"php-xml\")",
- "SystemCheckWarning": "El Matomo funcionarà amb normalitat, però algunes funcions potser no estaran disponibles",
+ "SystemCheckTrackerHelp": "No s'ha pogut realitzar la sol·licitud GET a matomo.php. Proveu d'inscriure aquesta URL a la llista blanca des de l'autenticació HTTP i desactiveu \"mod_security\" (potser haureu de preguntar-ho al vostre hostatjament). Hi ha més informació sobre l'error al fitxer de registre corresponent del vostre servidor.",
+ "SystemCheckUpdateHttps": "Actualització mitjançant HTTPS",
+ "SystemCheckUpdateHttpsNotSupported": "Matomo no pot utilitzar HTTPS per actualitzar, es tornarà a l'actualització HTTP insegura. Comproveu que CURL o allow_url_fopen siguin compatibles i que l'extensió PHP d'OpenSSL estigui instal·lada: https://matomo.org/faq/troubleshooting/faq_177/.",
+ "SystemCheckViewFullSystemCheck": "Consulteu l'informe complet de comprovació del sistema",
+ "SystemCheckWarnDomHelp": "Hauríeu d'activar l'extensió \"dom\" (p. ex., instal·leu el paquet \"php-dom\" i/o \"php-xml\").",
+ "SystemCheckWarnJsonHelp": "Hauríeu d'activar l'extensió \"JSON\" (p. ex., instal·leu el paquet \"php-json\").",
+ "SystemCheckWarnLibXmlHelp": "Heu d'activar l'extensió \"libxml\" (pex., instalar el paquet \"php-libxml\") perquè es necesària per altres extensions del nucli de PHP.",
+ "SystemCheckWarnOpensslHelp": "Hauríeu d'activar l'extensió \"OpenSSL\" per permetre actualitzacions segures.",
+ "SystemCheckWarnSimpleXMLHelp": "Heu d'activar l'extensió \"SimpleXML\" (p.e., installar el paquet \"php-simplexml\" i/o \"php-xml\").",
+ "SystemCheckWarning": "Matomo funcionarà normalment, però pot ser que faltin algunes funcions.",
"SystemCheckWinPdoAndMysqliHelp": "En un servidor Windows podeu afegir les línies següents al fitxer php.ini: %s",
"SystemCheckWriteDirs": "Directoris amb permisos d'escriptura",
- "SystemCheckWriteDirsHelp": "Per a arreglar aquest error al vostre sistema Linux, proveu d'entrar les ordres següents",
- "SystemCheckZlibHelp": "Heu de configurar i recompilar el PHP amb el suport per a \"zlib\" habilitat, --with-zlib.",
- "Tables": "S'estan creant les taules",
- "TablesCreatedSuccess": "Les taules s'han creat amb èxit!",
- "TablesDelete": "Esborra les taules existents",
- "TablesDeletedSuccess": "Les taules del Matomo existents s'han esborrat amb èxit.",
- "TablesFound": "Aquestes taules s'han trobat a la base de dades:",
- "TablesReuse": "Fes servir les taules existents",
- "TablesWarningHelp": "Podeu escollir entre fer servir les taules existents de la base de dades o fer una instal·lació neta per a esborrar les dades existents a la base de dades.",
- "TablesWithSameNamesFound": "Algunes %1$s taules de la base de dades %2$s tenen el mateix nom que les taules que el Matomo intenta crear",
- "Welcome": "Benvingut/da!"
+ "SystemCheckWriteDirsHelp": "Per solucionar aquest error al vostre sistema GNU/Linux, proveu d'escriure les ordres següents",
+ "SystemCheckZlibHelp": "Configureu i reconstruïu PHP amb el suport necessari \"zlib\", --with-zlib.",
+ "Tables": "Creació de les Taules",
+ "TablesCreatedSuccess": "Taules creades",
+ "TablesDelete": "Elimina les taules detectades",
+ "TablesDeletedSuccess": "S'han suprimit les taules Matomo existents",
+ "TablesFound": "S'ha trobat aquestes taules a la base de dades",
+ "TablesReuse": "Reutilitza les taules existents",
+ "TablesUpdatedSuccess": "Base de dades actualitzada de %1$s a %2$s!",
+ "TablesWarningHelp": "Trieu reutilitzar les taules de base de dades existents o seleccioneu una instal·lació neta per esborrar totes les dades de la base de dades existents.",
+ "TablesWithSameNamesFound": "Algunes taules %1$s de la vostra base de dades '%2$s' tenen els mateixos noms que les taules que Matomo intenta crear",
+ "Timezone": "Fus horari del lloc web",
+ "WeHopeYouWillEnjoyPiwik": "Gaudeix fent servir Matomo tant com a nosaltres ens agrada fer-lo.",
+ "Welcome": "Benvingut/da",
+ "WelcomeHelp": "<p>Matomo és un programari lliure que s'utilitza per analitzar el trànsit dels vostres visitants.</p><p>Aquest procés té %s passos i triga uns 5 minuts.</p>",
+ "WelcomeToCommunity": "Benvingut a la comunitat Matomo.",
+ "YouMayInstallPiwikNow": "Podeu %1$sinstal·lar Matomo ara%2$s"
}
}
diff --git a/plugins/Installation/lang/de.json b/plugins/Installation/lang/de.json
index 51e5e31ff8..c5c7822e01 100644
--- a/plugins/Installation/lang/de.json
+++ b/plugins/Installation/lang/de.json
@@ -6,7 +6,7 @@
"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!",
"Congratulations": "Glückwunsch",
- "CongratulationsHelp": "<p>Glückwunsch! Matomo ist nun installiert.</p><p>Stellen Sie sicher, dass der JavaScript-Code auf Ihrer Webseite eingefügt wird und warten Sie auf Ihre ersten Besucher!</p>",
+ "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.",
"CopySystemCheck": "Systemcheck kopieren",
"DatabaseAbilities": "Datenbankfähigkeiten",
@@ -34,16 +34,16 @@
"InformationalResults": "Informationen",
"Installation": "Installation",
"InstallationStatus": "Status der Installation",
- "InsufficientPrivilegesHelp": "Sie können diese Rechte mit einem Tool wie phpMyAdmin oder den entsprechenden SQL Kommandos hinzufügen. Wenn Sie nicht wissen, was zu tun ist, wenden Sie sich bitte an den System-Administrator, damit er für Sie diese Rechte setzt.",
+ "InsufficientPrivilegesHelp": "Diese Berechtigungen können in phpMyAdmin oder durch Ausführen der richtigen SQL-Abfragen hinzugefügt werden. Wenn Sie nicht wissen, wie das geht, bitten Sie Ihren Systemadministrator, dies zu tun.",
"InsufficientPrivilegesMain": "Entweder existiert die Datenbank nicht (und konnte nicht erstellt werden), oder der angegebene Benutzer hat unzureichende Berechtigungen. Der Datenbankbenutzer muss folgende Berechtigungen besitzen: %s",
"InvalidStateError": "Fehler: Matomo ist bereits installiert. %1$s Zurück %2$s zu Matomo%3$s.",
- "JSTracking_EndNote": "Hinweis: Nach der Installation können Sie sich einen angepassten Tracking Code im &gt; %1$sTracking Code%2$s Adminbereich erzeugen.",
+ "JSTracking_EndNote": "Hinweis: Nach der Installation können Sie sich einen angepassten Tracking Code im %1$sTracking Code%2$s Adminbereich erzeugen.",
"JSTracking_Intro": "Um Ihre Website mit Matomo zu tracken, müssen Sie sicherstellen, dass ein zusätzlicher Quellcode auf jeder Seite Ihrer Website eingefügt wurde.",
- "JsTagArchivingHelp1": "Für Websites mit mittlerem bis hohem Verkehrsaufkommen gibt es einige Optimierungen, die vorgenommen werden sollten, damit Matomo schneller läuft (z.B. %1$sdie Einrichtung von Auto-Archivierung%2$s).",
+ "JsTagArchivingHelp1": "Für Websites mit mittlerem bis hohem Verkehrsaufkommen helfen einige Optimierungen damit Matomo schneller läuft (z.B. %1$sdie Einrichtung von Auto-Archivierung%2$s).",
"LargePiwikInstances": "Hilfe für große Matomo-Installationen",
"Legend": "Legende",
- "LoadDataInfileRecommended": "Falls Ihr Matomo Server Webseiten mit erhöhtem Verkehrsaufkommen (z. B.: &gt; 100.000 Seiten pro Monat) verarbeiten muss, empfehlen wir dieses Problem zu beheben.",
- "LoadDataInfileUnavailableHelp": "Die Benutzung von %1$s erhöht die Geschwindigkeit des Matomo Archivierungsprozesses erheblich. Um es für Matomo verfügbar zu machen, versuchen Sie Ihre PHP- und MySQL Software zu aktualisieren und stellen Sie sicher, dass der gewählte Datenbankbenutzer das %2$s Recht besitzt.",
+ "LoadDataInfileRecommended": "Sie sollten dieses Problem beheben, wenn Ihr Matomo-Server Webseiten mit hohem Traffic (z.B. &gt; 100.000 Seiten pro Monat) verarbeiten muss.",
+ "LoadDataInfileUnavailableHelp": "Tipp: Wenn Sie %1$s verwenden, indem Sie Ihre PHP- und MySQL-Software aktualisieren und sicherstellen, dass Ihr Datenbankbenutzer das %2$s-Recht hat, wird der Archivierungsprozess von Matomo erheblich beschleunigt.",
"NfsFilesystemWarning": "Ihr Server nutzt ein NFS Dateisystem.",
"NfsFilesystemWarningSuffixAdmin": "Dies bedeutet, dass Matomo extrem langsam arbeitet, wenn dateibasierte Sessions genutzt werden.",
"NfsFilesystemWarningSuffixInstall": "Die Benutzung von dateibasierten Sessions auf NFS ist extrem langsam, deshalb wird Matomo datenbankbasierte Sessions nutzen. Falls es viele gleichzeitige Zugriffe auf das Dashboard gibt, sollten Sie möglicherweise die maximal erlaubten Client-Zugriffe auf den Datenbankserver erhöhen.",
@@ -58,48 +58,48 @@
"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": "Wichtige Matomo Community Updates per Mail zukommen lassen",
+ "PiwikOrgNewsletter": "mich per E-Mail über wichtige Updates der Matomo-Community informieren",
"PleaseFixTheFollowingErrors": "Bitte beheben Sie die folgenden Fehler",
- "ProfessionalServicesAdTitle": "Erweiterte Analytik &amp; Service",
+ "ProfessionalServicesAdTitle": "Erweiterte Analytik und Service",
"ProfessionalServicesNewsletter": "senden Sie mir Informationen über %1$sprofessionelle Dienstleistungen und Produkte%2$s für Matomo",
"ProfessionalServicesfessionalDiscoverHow": "Erfahren Sie mehr über %1$szusätzliche Produkte und Dienstleistungen%2$s für Matomo und wie Sie Ihre Konversionen und Einnahmen steigern können.",
- "ProfessionalServicesfessionalServicesAdText": "Unser Expertennetzwerk kann Ihrer Organisation helfen, die volle Kraft von Matomo Analytik freizuschalten.",
+ "ProfessionalServicesfessionalServicesAdText": "Unser Netzwerk von Experten kann Ihrem Unternehmen helfen, das volle Potenzial von Matomo Analytics auszuschöpfen.",
"Requirements": "Anforderungen für die Matomo-Installation",
"RestartWebServer": "Nach dieser Änderung müssen Sie den Webserver neu starten.",
"ReusingTables": "Tabellen werden wiederverwendet",
- "SeeBelowForMoreInfo": "Unterhalb können Sie weitere Informationen finden.",
+ "SeeBelowForMoreInfo": "Weitere Informationen befinden sich unterhalb.",
"SetupWebSiteName": "Name der Website",
"SetupWebSiteURL": "URL der Website",
"SetupWebsite": "Website hinzufügen",
- "SetupWebsiteError": "Beim Hinzufügen der Website ist ein Fehler aufgetreten",
- "SetupWebsiteSetupSuccess": "Website %s erfolgreich angelegt!",
+ "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!",
"SuperUser": "Hauptadministrator",
"SuperUserLogin": "Hauptadministrator Login",
- "SuperUserSetupError": "Beim Hinzufügen des Hauptadministrators ist ein Fehler aufgetreten",
- "SuperUserSetupSuccess": "Hauptadministrator erfolgreich angelegt!",
+ "SuperUserSetupError": "Der Hauptadministrator konnte nicht hinzugefügt werden",
+ "SuperUserSetupSuccess": "Hauptadministrator angelegt.",
"SystemCheck": "Systemprüfung",
"SystemCheckAutoUpdateHelp": "Hinweis: Matomo's Ein-Klick-Aktualisierung benötigt Schreibrechte für den Matomo-Ordner und dessen Inhalt.",
"SystemCheckCronArchiveProcess": "Cron einrichten",
"SystemCheckCronArchiveProcessCLI": "Prozesse via CLI steuern",
"SystemCheckDatabaseExtensions": "MySQL Erweiterungen",
- "SystemCheckDatabaseHelp": "Matomo erfordert entweder die mysqli Erweiterung oder die PDO und pdo_mysql Erweiterung.",
+ "SystemCheckDatabaseHelp": "Matomo erfordert entweder die MySQLi Erweiterung oder die PDO und pdo_mysql Erweiterung.",
"SystemCheckDatabaseSSL": "Datenbank SSL Verbindung",
"SystemCheckDatabaseSSLCipher": "SSL Chipher wird verwendet",
"SystemCheckDatabaseSSLDisabled": "SSL-Unterstützung ist auf Ihrem Datenbank-Server deaktiviert",
"SystemCheckDatabaseSSLNo": "Der Datenbank-Server wurde nicht mit SSL-Unterstützung kompiliert",
"SystemCheckDatabaseSSLNotWorking": "%s ist auf '1' gesetzt, jedoch funktioniert die SSL-Verbindung nicht",
- "SystemCheckDatabaseSSLOn": "Ihre Datenbank unterstützt SSL-Verbindungen, es wird aber keine SSL-Verbindung verwendet. Überprüfen Sie die SSL-Einstellungen für die Datenbank in Ihrer Matomo Konfigurationsdatei",
+ "SystemCheckDatabaseSSLOn": "Ihre Datenbank verwendet keine SSL-Verbindungen, unterstützt diese aber. Überprüfen Sie die SSL-Einstellungen Ihrer Datenbank in der Matomo-Konfigurationsdatei",
"SystemCheckDebugBacktraceHelp": "View::factory wird nicht in der Lage sein, die Module für die Anzeige zu laden.",
- "SystemCheckError": "Ein Fehler ist aufgetreten - dieser muss behoben werden, bevor Sie weiter machen können",
- "SystemCheckEvalHelp": "Wird von HTML QuickForm und der Template-Engine Smarty benötigt.",
+ "SystemCheckError": "Ein Fehler ist aufgetreten und muss behoben werden, bevor Sie weiter fortfahren können",
+ "SystemCheckEvalHelp": "Wird von HTML QuickForm und der Template-Engine Twig benötigt.",
"SystemCheckExtensions": "Weitere erforderliche Anforderungen",
"SystemCheckFileIntegrity": "Dateiintegrität",
- "SystemCheckFilterHelp": "Sie müssen PHP mit aktiviertem \"filter\" Support (--disable-filter nicht verwenden) konfigurieren und neu starten.",
+ "SystemCheckFilterHelp": "Sie müssen PHP mit \"filter\" Support (--disable-filter nicht verwenden) konfigurieren und neu starten.",
"SystemCheckFunctions": "Erforderliche Funktionen",
- "SystemCheckGDFreeType": "GD &gt; 2.x + Freetype (Graphiken)",
- "SystemCheckGDHelp": "Die Sparklines (kleine Graphen) werden nicht funktionieren.",
+ "SystemCheckGDFreeType": "GD &gt; 2.x + FreeType (Grafiken)",
+ "SystemCheckGDHelp": "Die Sparklines (kleine Diagramme) und Bilddiagramme (in der Matomo Mobile App und den E-Mail-Berichten) werden nicht funktionieren.",
"SystemCheckGlobHelp": "Diese eingebaute Funktion ist auf ihrem System deaktiviert. Matomo wird versuchen, diese Funktion zu emulieren, aber dabei möglicherweise auf weitere Sicherheitseinschränkungen stoßen. Die Funktionalität kann beeinträchtigt werden.",
"SystemCheckGzcompressHelp": "Sie müssen die zlib Erweiterung und die gzcompress Funktion aktivieren.",
"SystemCheckGzuncompressHelp": "Sie müssen die zlib Erweiterung und die gzuncompress Funktion aktivieren.",
@@ -111,11 +111,11 @@
"SystemCheckMemoryNoMemoryLimitSet": "Es ist kein Speicherlimit gesetzt",
"SystemCheckNoErrorsOrWarnings": "Keine Fehler oder Warnungen",
"SystemCheckOpenURL": "Öffnen einer URL",
- "SystemCheckOpenURLHelp": "Eintragen in den Newsletter, Aktualisierungshinweise und Ein-Klick-Aktualisierungen erfordern die \"curl\" Erweiterung, allow_url_fopen=On und fsockopen() aktiviert.",
+ "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.",
- "SystemCheckPageSpeedDisabled": "PageSpeed deaktiviert",
+ "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.",
"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",
@@ -124,7 +124,7 @@
"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.",
"SystemCheckSettings": "Benötigte PHP Konfiguration (php.ini)",
- "SystemCheckShellExecHelp": "Wir empfehlen Ihnen, dass Sie diese eingebaute Funktion von PHP aktivieren. %1$sLesen Sie folgendes, um mehr zu erfahren.%2$s",
+ "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",
"SystemCheckSummaryThereWereWarnings": "Es gibt einige Ungereimtheiten mit Ihrem System. Matomo wird funktionieren, aber es könnten geringfügige Probleme auftauchen.",
diff --git a/plugins/Installation/lang/el.json b/plugins/Installation/lang/el.json
index 089c659833..3c01bef1fb 100644
--- a/plugins/Installation/lang/el.json
+++ b/plugins/Installation/lang/el.json
@@ -2,7 +2,7 @@
"Installation": {
"CannotConnectToDb": "Δεν είναι δυνατή η σύνδεση με τη βάση δεδομένων",
"CannotConnectToDbResolvingExplanation": "Ενδεχομένως να υπάρχει ένα προσωρινό πρόβλημα, δοκιμάστε να %1$sανανεώστε τη σελίδα%2$s. Αν το πρόβλημα παραμένει, παρακαλούμε επικοινωνήστε με το διαχειριστή του Matomo.",
- "CollaborativeProject": "Το Matomo είναι ένα συνεργατικό έργο: δημιουργημένο με αγάπη",
+ "CollaborativeProject": "Το Matomo είναι ένα συνεργατικό έργο φτιαγμένο με αγάπη.",
"ConfigurationHelp": "Διορθώστε το αρχείο παραμετροποίησης του Matomo είτε διαγράφοντας το config/config.ini.php και συνεχίζοντας την εγκατάσταση, είτε διορθώνοντας τις ρυθμίσεις σύνδεσης με τη βάση δεδομένων.",
"ConfirmDeleteExistingTables": "Θέλετε σίγουρα να διαγράψετε τους πίνακες %s από τη βάση δεδομένων σας; ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΤΑ ΔΕΔΟΜΕΝΑ ΑΠΟ ΑΥΤΟΥΣ ΤΟΥ ΠΙΝΑΚΕΣ ΔΕ ΘΑ ΜΠΟΡΟΥΝ ΝΑ ΑΝΑΚΤΗΘΟΥΝ!",
"Congratulations": "Συγχαρητήρια",
@@ -58,7 +58,7 @@
"PerformanceSettingsDesc2": "Αυτό απαιτεί την προσθήκη μιας εντολής του Matomo στο Cron που μπορεί να γίνει αυτόματα από τον εγκαταστάτη. %1$sΔιαβάστε τις συχνές ερωτήσεις για να μάθετε πώς να το κάνετε μόνοι σας.%2$s",
"PhpBinaryCheck": "64-bit Εκτελέσιμο PHP",
"PhpBinaryCheckHelp": "32-bit <p>Αναβαθμίστε σε 64-bit το εκτελέσιμο της PHP το αργότερο μέχρι τον Ιανουάριο 2026 για την αποφυγή σφαλμάτων στο μέλλον.</p>",
- "PiwikOrgNewsletter": "στείλε μου e-mail για μεγάλες ενημερώσεις της κοινοτικής έκδοσης του Matomo",
+ "PiwikOrgNewsletter": "εγγραφείτε στα νέα μας για να λαμβάνετε τακτικές πληροφόρηση γύρω από το Matomo.",
"PleaseFixTheFollowingErrors": "Διορθώστε τα ακόλουθα σφάλματα",
"ProfessionalServicesAdTitle": "Προχωρημένα Αναλυτικά και Υπηρεσίες",
"ProfessionalServicesNewsletter": "να μου σταλούν πληροφορίες σχετικά με %1$sΥπηρεσίες και προϊόντα επαγγελματικού επιπέδου%2$s για το Matomo",
diff --git a/plugins/Installation/lang/en.json b/plugins/Installation/lang/en.json
index 3f396800ce..3a1a723b9b 100644
--- a/plugins/Installation/lang/en.json
+++ b/plugins/Installation/lang/en.json
@@ -57,7 +57,7 @@
"Requirements": "Matomo Requirements",
"RestartWebServer": "After making this change, restart your web server.",
"ReusingTables": "Reusing the Tables",
- "PiwikOrgNewsletter": "email me about major Matomo community updates",
+ "PiwikOrgNewsletter": "subscribe to our newsletter to receive regular information about Matomo.",
"ProfessionalServicesNewsletter": "send me info on %1$sProfessional services and products%2$s for Matomo",
"SeeBelowForMoreInfo": "More info below.",
"SetupWebsite": "Set up a Website",
diff --git a/plugins/Installation/lang/fr.json b/plugins/Installation/lang/fr.json
index 67e0de1964..2ec776d7d4 100644
--- a/plugins/Installation/lang/fr.json
+++ b/plugins/Installation/lang/fr.json
@@ -1,12 +1,12 @@
{
"Installation": {
"CannotConnectToDb": "Impossible de se connecter à la base de données",
- "CannotConnectToDbResolvingExplanation": "Cela peut être un problème temporaire, essayer de %1$srafraichir la page%2$s. Si le problème persiste veuillez contacter votre administrateur Matomo.",
- "CollaborativeProject": "Matomo est un projet collaboratif construit avec amour .",
+ "CannotConnectToDbResolvingExplanation": "Cela peut être un problème temporaire, essayer de %1$srafraîchir la page%2$s. Si le problème persiste veuillez contacter votre administrateur Matomo.",
+ "CollaborativeProject": "Matomo est un projet collaboratif construit avec passion.",
"ConfigurationHelp": "Corrigez votre fichier de configuration Matomo, soit en supprimant config/config.ini.php et en reprenant l'installation, soit en corrigeant les paramètres de connexion à la base de données.",
- "ConfirmDeleteExistingTables": "Supprimer les tables %s de votre base de données ? ATTENTION : LES DONNÉES DE CES TABLES NE PEUVENT PAS ÊTRE RÉCUPÉRÉES !",
+ "ConfirmDeleteExistingTables": "Supprimer les tables %s de votre base de données ? ATTENTION : LES DONNÉES DE CES TABLES NE PEUVENT PAS ÊTRE RÉCUPÉRÉES !",
"Congratulations": "Félicitations",
- "CongratulationsHelp": "<p>Félicitations ! Votre installation de Matomo est terminée.</p><p>Vérifiez que votre code de suivi est entré sur vos pages, et attendez vos premiers visiteurs.</p>",
+ "CongratulationsHelp": "<p>Félicitations ! Votre installation de Matomo est terminée.</p><p>Vérifiez que votre code de suivi est placé sur vos pages, et attendez vos premiers visiteurs.</p>",
"CopyBelowInfoForSupport": "Copiez ou téléchargez les informations ci-dessous au cas où notre équipe d'assistance vous les demanderait.",
"CopySystemCheck": "Copier la vérification du système",
"DatabaseAbilities": "Capacités de la base de données",
@@ -16,148 +16,148 @@
"DatabaseSetup": "Installation de la base de données",
"DatabaseSetupAdapter": "Adaptateur",
"DatabaseSetupDatabaseName": "Nom de la base",
- "DatabaseSetupLogin": "Compte utilisateur",
+ "DatabaseSetupLogin": "Nom d'utilisateur",
"DatabaseSetupServer": "Serveur de base de données",
"DatabaseSetupTablePrefix": "Préfixe des tables",
- "DefaultSettings": "Paramétrage par défaut",
+ "DefaultSettings": "Paramètres par défaut de Matomo",
"DefaultSettingsHelp": "Matomo est installé avec un paramétrage par défaut. Vous pouvez personnaliser ces réglages maintenant ou le faire plus tard dans l'espace d'administration.",
"DownloadSystemCheck": "Télécharger la vérification du système",
"Email": "Courriel",
- "EmailPrivacyNotice": "Votre adresse courriel sera utilisée uniquement pour vous envoyer l'infolettre. Pour cela nous devons partager votre courriel avec un fournisseur tiers. Ce fournisseur est actuellement Mad Mimi, mais cela peut changer plus tard. Nous ne partagerons votre courriel avec personne d'autre et nous n'utiliserons pas votre courriel pour un autre motif que l'envoi de l'infolettre. Vous pouvez vous désinscrire à tout moment. Veuillez consulter notre %1$spolitique de respect de la vie privée%2$s pour plus d'information.",
+ "EmailPrivacyNotice": "Votre adresse courriel sera utilisée uniquement pour vous envoyer l'infolettre. Pour cela elle partagée avec Mad Mimi, mais ce fournisseur tiers est susceptible de changer. Nous ne partagerons votre courriel avec personne d'autre ni ne l'utiliserons pour quelque autre motif. Vous pouvez vous désinscrire à tout moment. Notre %1$spolitique de respect de la vie privée%2$s vous donnera plus d'information.",
"Extension": "Extension",
"FasterReportLoading": "chargement plus rapide des rapports",
"Filesystem": "Système de fichiers",
"GetInvolved": "Si vous aimez ce que vous voyez, vous pouvez %1$svous impliquer%2$s.",
"GoBackAndDefinePrefix": "Retournez à la page précédente et définissez le préfixe pour les tables Matomo",
- "HappyAnalysing": "Bonne analyse !",
- "IfPiwikInstalledBeforeTablesCanBeKept": "Si vous avez installé Matomo avant et que vous avez quelques tables dans votre DB, ne vous inquiétez pas, vous pouvez réutiliser les mêmes tables et conserver vos données existantes !",
- "InformationalResults": "Résultats pour information",
+ "HappyAnalysing": "Bonne analyse !",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Si vous aviez déjà installé Matomo auparavant et que vous avez déjà des tables dans votre base de données, ne vous inquiétez pas, vous pouvez réutiliser les mêmes tables et conserver vos données existantes.",
+ "InformationalResults": "Résultats informatifs",
"Installation": "Installation",
- "InstallationStatus": "Statut de l'installation",
+ "InstallationStatus": "État de l'installation",
"InsufficientPrivilegesHelp": "Ces privilèges peuvent être ajoutés dans phpMyAdmin, ou en exécutant les bonnes requêtes SQL. Si vous ne savez pas comment faire, demandez à votre administrateur système de le faire.",
- "InsufficientPrivilegesMain": "La base de données n'existe pas (et n'a pas pu être créée), ou l'utilisateur spécifié a des privilèges insuffisants. Les utilisateurs de la base de données doivent avoir les privilèges suivants : %s",
- "InvalidStateError": "Erreur : Matomo est déjà installé. %1$s Retourner %2$s vers Matomo%3$s.",
- "JSTracking_EndNote": "Remarque : après l'installation, vous pouvez générer un code de suivi personnalisé dans la section d'administration %1$sTracking Code%2$s.",
+ "InsufficientPrivilegesMain": "La base de données n'existe pas (et n'a pas pu être créée), ou l'utilisateur spécifié a des privilèges insuffisants. Les utilisateurs de la base de données doivent avoir les privilèges suivants : %s",
+ "InvalidStateError": "Erreur : Matomo est déjà installé. %1$s Retourner %2$s sur Matomo%3$s.",
+ "JSTracking_EndNote": "Remarque : après l'installation, vous pouvez générer un code de suivi personnalisé dans la section d'administration %1$scode de suivi%2$s.",
"JSTracking_Intro": "Pour effectuer le suivi du trafic web avec Matomo vous devez-vous assurer que du code supplémentaire est ajouté sur toutes vos pages.",
"JsTagArchivingHelp1": "Pour les sites web à trafic moyen et élevé, certaines optimisations permettent à Matomo de fonctionner plus rapidement (comme %1$s la mise en place de l'archivage automatique %2$s).",
"LargePiwikInstances": "Aide pour les utilisateurs de sites web à fort trafic",
"Legend": "Légendes",
"LoadDataInfileRecommended": "Si votre serveur Matomo suit des sites à fort trafic (ex. &gt; 100000 pages par mois).",
- "LoadDataInfileUnavailableHelp": "L'utilisation de %1$s va grandement accélérer la vitesse du processus d'archivage de Matomo. Pour le rendre disponible à Matomo, essayez de mettre à jour PHP etMySQL et assurez-vous que votre utilisateur MySQL a les privilèges de %2$s.",
+ "LoadDataInfileUnavailableHelp": "Astuce : l'utilisation de %1$s en mettant à jour PHP et MySQL et s'assurant que votre utilisateur MySQL a les privilèges de %2$s va grandement accélérer la vitesse du processus d'archivage de Matomo.",
"NfsFilesystemWarning": "Votre serveur utilise un système de fichier NFS.",
"NfsFilesystemWarningSuffixAdmin": "Cela signifie que Matomo va être très lent lors de l'utilisation des sessions basées sur des fichiers.",
"NfsFilesystemWarningSuffixInstall": "L'utilisation de sessions basées sur des fichiers sur NFS est extrêmement lente, Matomo utilisera donc des sessions de base de données. Si vous avez de nombreux utilisateurs simultanés du tableau de bord, vous devrez peut-être augmenter le nombre maximum de connexions client au serveur de base de données.",
- "NoConfigFileFound": "Impossible de trouver le fichier de configuration de Matomo, et vous essayez d'accéder à une page Matomo.",
- "NotSupported": "non supporté",
+ "NoConfigFileFound": "Impossible de trouver le fichier de configuration de Matomo, alors que vous tentez d'accéder à une page Matomo.",
+ "NotSupported": "non pris en charge",
"Optional": "Optionnel",
"Password": "Mot de passe",
- "PasswordDoNotMatch": "Le mot de passe ne concorde pas",
+ "PasswordDoNotMatch": "Les mots de passe ne concordent pas",
"PasswordRepeat": "Mot de passe (répétez)",
"PercentDone": "%s %% complété",
- "PerformanceSettingsDesc1": "Une dernière remarque par rapport au performance : votre instance Matomo est paramétrée et prête à enregistrer le trafic de votre site web, mais si vous trouvez Matomo lent, vous voudrez peut-être exécuter une dernière étape afin de configurer %1$sl'archivage via une console%2$s. Cela permettrait de générer régulièrement les rapports en tâche de fond, plutôt qu'à la demande.",
- "PerformanceSettingsDesc2": "Cela nécessite d'ajouter une commande Matomo comme tâche planifiée Cron, ce qui ne peut être fait automatiquement par le processus d'installation. Vous pouvez %1$slire notre FAQ pour savoir comment faire ce paramétrage%2$s.",
+ "PerformanceSettingsDesc1": "Votre instance Matomo est paramétrée et prête à enregistrer le trafic de votre site web. Si vous la trouvez lente, configurez %1$sl'archivage en ligne de commande%2$s. Cela génère les rapports en tâche de fond, plutôt qu'à la demande.",
+ "PerformanceSettingsDesc2": "Cela nécessite d'ajouter une commande Matomo comme tâche planifiée Cron, ce qui ne peut être fait automatiquement par le processus d'installation. Vous pouvez %1$slire notre FAQ pour savoir comment faire ce paramétrage%2$s",
"PhpBinaryCheck": "Binaire PHP 64 bits",
- "PhpBinaryCheckHelp": "32 bits <p>Nous recommandons d'effectuer une mise à niveau vers un binaire PHP 64 bits au plus tard en janvier 2026 pour éviter les bogues à l'avenir.</p>",
+ "PhpBinaryCheckHelp": "32 bits <p>Mettre à niveau vers un binaire PHP 64 bits au plus tard en janvier 2026 pour éviter les bogues.</p>",
"PiwikOrgNewsletter": "Envoyez moi des courriels pour les mises à jour importantes de Matomo",
"PleaseFixTheFollowingErrors": "Merci de corriger les erreurs suivantes",
"ProfessionalServicesAdTitle": "Services et statistiques avancés",
- "ProfessionalServicesNewsletter": "envoyez-moi des informations à propos %1$sdes services et produits%2$s pour Matomo",
+ "ProfessionalServicesNewsletter": "envoyez-moi des informations à propos %1$sdes produits et services professionnels%2$s pour Matomo",
"ProfessionalServicesfessionalDiscoverHow": "Découvrez les %1$sproduits et services supplémentaires%2$s pour Matomo et comment augmenter vos conversions et revenus.",
- "ProfessionalServicesfessionalServicesAdText": "Notre réseau d'experts peut aider votre organisation à exploiter toute la puissance de l'analyse Matomo.",
- "Requirements": "Pré requis Matomo",
+ "ProfessionalServicesfessionalServicesAdText": "Notre réseau d'experts peut aider votre organisation à exploiter pleinement le potentiel de Matomo.",
+ "Requirements": "Pré-requis Matomo",
"RestartWebServer": "Après avoir effectué ces modifications, redémarrez votre serveur web.",
- "ReusingTables": "Réutilisation des Tables",
- "SeeBelowForMoreInfo": "Voir ci-dessous pour plus d'informations.",
+ "ReusingTables": "Réutilisation des tables",
+ "SeeBelowForMoreInfo": "Plus d'informations ci-dessous.",
"SetupWebSiteName": "Nom du site web",
"SetupWebSiteURL": "URL du site web",
- "SetupWebsite": "Paramétrer un site",
- "SetupWebsiteError": "Une erreur a été rencontrée pendant l'ajout du site",
- "SetupWebsiteSetupSuccess": "Site %s créé avec succès !",
- "SiteSetup": "Veuillez configurer le premier site web que vous voulez suivre et analyser avc Matomo :",
- "SiteSetupFootnote": "Note : une fois que l'installation de Matomo est terminée, vous pourrez ajouter d'autres sites web à suivre !",
- "SuperUser": "Super Utilisateur",
- "SuperUserLogin": "Login du super utilisateur",
- "SuperUserSetupError": "Impossible d'ajouter le superutilisateur",
+ "SetupWebsite": "Paramétrer un site web",
+ "SetupWebsiteError": "Impossible d'ajouter le site web",
+ "SetupWebsiteSetupSuccess": "Site web %s créé",
+ "SiteSetup": "Veuillez configurer le premier site web que vous voulez suivre et analyser avec Matomo :",
+ "SiteSetupFootnote": "Note : une fois l'installation de Matomo terminée, vous pourrez ajouter d'autres sites web à suivre.",
+ "SuperUser": "Super utilisateur",
+ "SuperUserLogin": "Nom du super utilisateur",
+ "SuperUserSetupError": "Impossible d'ajouter le super utilisateur",
"SuperUserSetupSuccess": "Super utilisateur créé .",
"SystemCheck": "Vérification du système",
- "SystemCheckAutoUpdateHelp": "Note : La mise à jour de Matomo en un clic requiert une permission en écriture sur le dossier de Matomo et son contenu.",
+ "SystemCheckAutoUpdateHelp": "Note : La mise à jour de Matomo en un clic requiert une permission en écriture sur le dossier de Matomo et son contenu.",
"SystemCheckCronArchiveProcess": "Paramétrer une tâche Cron",
"SystemCheckCronArchiveProcessCLI": "Gestion des processus via la ligne de commande",
"SystemCheckDatabaseExtensions": "Extensions MySQL",
- "SystemCheckDatabaseHelp": "Matomo requiert ou l'extension MySQLi ou les extensions PDO et pdo_mysql.",
+ "SystemCheckDatabaseHelp": "Matomo requiert soit l'extension MySQLi soit les deux extensions PDO et pdo_mysql.",
"SystemCheckDatabaseSSL": "Connexion SSL à la base de données",
"SystemCheckDatabaseSSLCipher": "Chiffrement SSL utilisé",
"SystemCheckDatabaseSSLDisabled": "Le support SSL est désactivé sur votre serveur de base de données",
"SystemCheckDatabaseSSLNo": "Le serveur de base de données n'est pas compilé avec le support SSL",
- "SystemCheckDatabaseSSLNotWorking": "%sest définit à \"1\" mais la connexion SSL ne fonctionne pas",
- "SystemCheckDatabaseSSLOn": "Votre base de donnée support les connexions SSL mais cela n'est pas utilisé. Vérifiez les paramètres de votre base de données dans le fichier de configuration Matomo.",
+ "SystemCheckDatabaseSSLNotWorking": "%sest définit à « 1 », mais la connexion SSL ne fonctionne pas",
+ "SystemCheckDatabaseSSLOn": "Votre base de donnée gère les connexions SSL mais ce n'est pas utilisé. Vérifiez les paramètres de votre base de données dans le fichier de configuration Matomo",
"SystemCheckDebugBacktraceHelp": "View::factory ne pourra pas créer des vues pour le module appelé.",
- "SystemCheckError": "Une erreur s'est produite — elle doit être corrigée avant de pouvoir continuer",
- "SystemCheckEvalHelp": "Requis part le système de modèle HTML QuickForm et Smarty.",
- "SystemCheckExtensions": "Extensions requises",
- "SystemCheckFileIntegrity": "Intégrité du fichier",
- "SystemCheckFilterHelp": "Vous devez configurer et reconstruire PHP avec le support \"filter\" activé (n'utilisez pas --disable-filter).",
+ "SystemCheckError": "Une erreur s'est produite et doit être corrigée avant de pouvoir continuer",
+ "SystemCheckEvalHelp": "Requis par le système de modèles HTML QuickForm et Twig.",
+ "SystemCheckExtensions": "Autres extensions requises",
+ "SystemCheckFileIntegrity": "Intégrité des fichiers",
+ "SystemCheckFilterHelp": "Vous devez configurer et reconstruire PHP avec la prise en charge de « filter » activée (n'utilisez pas --disable-filter).",
"SystemCheckFunctions": "Fonctions requises",
- "SystemCheckGDFreeType": "GD > 2.x + Freetype (graphiques)",
- "SystemCheckGDHelp": "Les sparklines (petits graphiques) ne fonctionneront pas.",
- "SystemCheckGlobHelp": "Cette fonction native a été désactivée sur votre hôte. Matomo va tenter de l'émuler mais il pourra rencontrer des restrictions de sécurité. Les fonctionnalités pourront en être impactées.",
- "SystemCheckGzcompressHelp": "Vous devez activer l'extension zlib et la fonction gzcompress",
- "SystemCheckGzuncompressHelp": "Vous devez activer l'extension zlib et la fonction gzuncompress",
- "SystemCheckHashHelp": "Vous devez reconfigurer et re-compiler PHP en avec le support de hash() activé en enlevant l'option --disable-hash.",
+ "SystemCheckGDFreeType": "GD &gt; 2.x + FreeType (graphics)",
+ "SystemCheckGDHelp": "Les petits graphiques (sparklines) et les graphiques image ne fonctionneront pas dans l'application mobile et dans les courriels.",
+ "SystemCheckGlobHelp": "Cette fonction native a été désactivée sur votre hôte. Matomo va tenter de l'émuler mais il pourrait être bloqué par d'autres restrictions de sécurité. Les fonctionnalités peuvent en être impactées.",
+ "SystemCheckGzcompressHelp": "Vous devez activer l'extension zlib et la fonction gzcompress.",
+ "SystemCheckGzuncompressHelp": "Vous devez activer l'extension zlib et la fonction gzuncompress.",
+ "SystemCheckHashHelp": "Vous devez reconfigurer et re-compiler PHP en avec la prise en charge de hash() en enlevant l'option --disable-hash.",
"SystemCheckJsonHelp": "L'extension php-json est nécessaire pour que Matomo puisse lire et écrire des données au format JSON.",
- "SystemCheckMailHelp": "Les Feedback (commentaires) et mots de passe perdus ne pourront être envoyés sans la fonciton mail().",
+ "SystemCheckMailHelp": "Les retours ou « mot de passe perdu » ne pourront être envoyés sans la fonction mail().",
"SystemCheckMemoryLimit": "Limite mémoire",
- "SystemCheckMemoryLimitHelp": "Sur un site à trafic important, le processus d'archivage peut prendre plus de mémoire que la limite actuelle autorisée.<br />Référez-vous à la configuration memory_limit de votre php.ini si nécessaire.",
- "SystemCheckMemoryNoMemoryLimitSet": "Il n'y a pas de limite de mémoire",
- "SystemCheckNoErrorsOrWarnings": "Il n'y a aucune erreur ou avertissement",
- "SystemCheckOpenURL": "Ouvrez l'URL",
- "SystemCheckOpenURLHelp": "Abonnements à la newsletter, notifications des mises à jour, et mise à jour en un clic requièrent l'extension curl, allow_url_fopen=On, ou fsockopen() activé.",
+ "SystemCheckMemoryLimitHelp": "Sur un site à fort trafic, le processus d'archivage peut prendre plus de mémoire que la limite actuelle autorisée.&lt;br /&gt;Référez-vous à la configuration memory_limit de votre php.ini si nécessaire.",
+ "SystemCheckMemoryNoMemoryLimitSet": "Il n'y a pas de limite de mémoire définie",
+ "SystemCheckNoErrorsOrWarnings": "Aucune erreur ou avertissement",
+ "SystemCheckOpenURL": "Ouvrir l'URL",
+ "SystemCheckOpenURLHelp": "Les abonnements à la newsletter, notifications de mise à jour, et mise à jour en un clic requièrent que l'extension curl, allow_url_fopen=On, ou fsockopen() soit activé.",
"SystemCheckOtherExtensions": "Autres extensions",
"SystemCheckOtherFunctions": "Autres fonctions",
"SystemCheckPackHelp": "La fonction pack() est requise pour suivre les visiteurs dans Matomo.",
- "SystemCheckPageSpeedDisabled": "PageSpeed désactivé",
- "SystemCheckPageSpeedWarning": "Nous recommandons de désactiver le module PageSpeed sur votre serveur web %s : PageSpeed aurait causé plusieurs problèmes avec Matomo, tels que : rapports de Pages cassés, courbe d'évolution cassée, et d'autres problèmes difficiles à résoudre. Merci de désactiver mod_pagespeed sur ce server.",
- "SystemCheckParseIniFileHelp": "Cette fonction incluse a été désactivée sur votre serveur. Matomo va essayer d'émuler cette fonction mais il est possible que vous rencontriez des restrictions de sécurité par la suite. Les performances seront aussi impactées.",
- "SystemCheckPdoAndMysqliHelp": "Sur un serveur linux vous pouvez compiler PHP avec les options suivantes : %1$s Dans votre php.ini, ajoutez les lignes suivantes : %2$s",
+ "SystemCheckPageSpeedDisabled": "PageSpeed est désactivé",
+ "SystemCheckPageSpeedWarning": "Nous recommandons de désactiver le module PageSpeed sur votre serveur web %s : PageSpeed aurait causé plusieurs problèmes avec Matomo, tels que : rapports de pages cassés, courbe d'évolution cassée, et d'autres problèmes difficiles à résoudre. Merci de désactiver mod_pagespeed sur ce serveur.",
+ "SystemCheckParseIniFileHelp": "Cette fonction native a été désactivée sur votre serveur. Matomo va essayer d'émuler cette fonction mais il est possible que vous rencontriez des restrictions de sécurité par la suite. Les performances seront aussi impactées.",
+ "SystemCheckPdoAndMysqliHelp": "Sur un serveur GNU/Linux vous pouvez compiler PHP avec les options suivantes : %1$s Dans votre php.ini, ajoutez les lignes suivantes : %2$s",
"SystemCheckPhp": "Version PHP",
- "SystemCheckPhpPdoAndMysqli": "Plus d'informations sur : %1$sPHP PDO%2$s et %3$sMYSQLI%4$s.",
- "SystemCheckPhpSetting": "Pour éviter certaines erreurs critique, vous devez définir les entrées suivantes dans votre fichier php.ini : %s",
- "SystemCheckSessionHelp": "Vous devez configurer et reconstruire PHP avec le support \"session\" activé (n'utilisez pas --disable-session).",
+ "SystemCheckPhpPdoAndMysqli": "Plus d'informations sur : %1$sPHP PDO%2$s et %3$sMYSQLI%4$s.",
+ "SystemCheckPhpSetting": "Configurez ainsi votre fichier php.ini pour éviter des erreurs critiques : %s",
+ "SystemCheckSessionHelp": "Configurez et reconstruisez PHP avec la prise en charge de « session » activée (n'utilisez pas --disable-session).",
"SystemCheckSettings": "Configuration PHP requise (php.ini)",
- "SystemCheckShellExecHelp": "Nous vous recommandons d'activer cette fonction intégrée à PHP. %1$sLisez ceci pour en savoir plus.%2$s",
- "SystemCheckSummaryNoProblems": "Génial ! Il n'y a aucun problème avec votre installation de Matomo. Donnez-vous une tape dans le dos.",
- "SystemCheckSummaryThereWereErrors": "Oh-oh ! Matomo a détecté des %1$sproblèmes critiques%2$s avec votre installation de Matomo. %3$sCes problèmes critiques doivent être fixés immédiatement.%4$s",
+ "SystemCheckShellExecHelp": "Il est recommandé d'activer cette fonction intégrée à PHP. %1$sLisez ceci pour en savoir plus.%2$s",
+ "SystemCheckSummaryNoProblems": "Il n'y a aucun problème avec votre installation de Matomo. Vous pouvez vous féliciter.",
+ "SystemCheckSummaryThereWereErrors": "Matomo a détecté des %1$sproblèmes critiques%2$s avec votre installation. %3$sIls doivent être corrigés immédiatement.%4$s",
"SystemCheckSummaryThereWereWarnings": "Il y a des problèmes avec votre système. Matomo va fonctionner, mais vous pourriez rencontrer des problèmes mineurs.",
- "SystemCheckTimeLimitHelp": "Sur un site à trafic important, le processus d'archivage peut prendre plus de temps qu'il n'est déjà autorisé.<br /> Référez-vous à la configuration max_execution_time de votre php.ini si nécessaire.",
- "SystemCheckTracker": "Statut du traqueur",
- "SystemCheckTrackerHelp": "La requête GET vers matomo.php a échoué. Essayez d'ajouter à la liste de confiance de l'authentification HTTP cette URL et désactivez le mod_security (il est possible que vous ayez besoin de demander à votre hébergeur). Pour plus d'information à propos de l'erreur, consultez le fichier de journalisation des erreurs de votre serveur.",
+ "SystemCheckTimeLimitHelp": "Sur un site à fort trafic, le processus d'archivage peut prendre plus de temps qu'il n'est déjà autorisé.&lt;br /&gt; Référez-vous à la configuration max_execution_time de votre php.ini si nécessaire.",
+ "SystemCheckTracker": "État du traqueur",
+ "SystemCheckTrackerHelp": "Impossible d'effectuer une requête GET vers matomo.php . Essayez d'ajouter à la liste de confiance de l'authentification HTTP cette URL et désactivez le mod_security (il est possible que vous ayez besoin de demander à votre hébergeur). Pour plus d'information à propos de l'erreur, consultez le fichier de journalisation des erreurs de votre serveur.",
"SystemCheckUpdateHttps": "Mettre à jour via HTTPS",
- "SystemCheckUpdateHttpsNotSupported": "Matomo n'a pas pu utiliser HTTPS pour effectuer la mise à jour, et va rétrograder vers une mise à jour non sécurisée via HTTP. Vérifiez que CURL ou allow_url_fopen est supporté et que l'extension PHP openssl est installée : https://matomo.org/faq/troubleshooting/faq_177/.",
+ "SystemCheckUpdateHttpsNotSupported": "Matomo n'a pas pu utiliser HTTPS pour effectuer la mise à jour, et va rétrograder vers une mise à jour non sécurisée via HTTP. Vérifiez que CURL ou allow_url_fopen est activé et que l'extension PHP openssl est installée : https://matomo.org/faq/troubleshooting/faq_177/.",
"SystemCheckViewFullSystemCheck": "Afficher le rapport complet du système",
- "SystemCheckWarnDomHelp": "Vous devriez activer l'extension \"dom\" (ex installez le paquet \"php-dom\" et/ou \"php-xml\").",
- "SystemCheckWarnJsonHelp": "Vous devez activer l'extension \"json\" (par exemple, installer le package \"php-json\").",
- "SystemCheckWarnLibXmlHelp": "Vous devriez activer l'extension \"libxml\" (ex installez le paquet \"php-libxml\") qui est de plus requis par d'autres extensions internes de PHP.",
- "SystemCheckWarnOpensslHelp": "Vous devez activer l'extension \"openssl\" pour autoriser les mises à jour sécurisées.",
- "SystemCheckWarnSimpleXMLHelp": "Vous devriez activer l'extension \"SimpleXML\" (ex installez le paquet \"php-simplexml\" et/ou \"php-xml\").",
- "SystemCheckWarning": "Matomo fonctionnera normalement mais certaines fonctionnalités seront manquantes",
- "SystemCheckWinPdoAndMysqliHelp": "Sur un serveur windows vous pouvez ajouter les lignes suivantes à votre php.ini : %s",
+ "SystemCheckWarnDomHelp": "Vous devriez activer l'extension « dom » (ex. installez le paquet \"php-dom\" et/ou \"php-xml\").",
+ "SystemCheckWarnJsonHelp": "Vous devez activer l'extension « json » (ex. installez le paquet php-json).",
+ "SystemCheckWarnLibXmlHelp": "Vous devriez activer l'extension « libxml » (ex. installez le paquet php-libxml) qui est de plus requis par d'autres extensions internes de PHP.",
+ "SystemCheckWarnOpensslHelp": "Vous devriez activer l'extension « openssl » pour autoriser les mises à jour sécurisées.",
+ "SystemCheckWarnSimpleXMLHelp": "Vous devriez activer l'extension « SimpleXML » (ex installez le paquet php-simplexml et/ou php-xml).",
+ "SystemCheckWarning": "Matomo fonctionnera normalement mais certaines fonctionnalités seront manquantes.",
+ "SystemCheckWinPdoAndMysqliHelp": "Sur un serveur Windows vous pouvez ajouter les lignes suivantes à votre php.ini : %s",
"SystemCheckWriteDirs": "Répertoires avec les droits d'accès en écriture",
- "SystemCheckWriteDirsHelp": "Pour corriger les erreurs sur votre système Linux essayez de taper les commandes suivantes",
- "SystemCheckZlibHelp": "Vous devez reconfigurer et recompiler PHP avec le support zlib, --with-zlib.",
+ "SystemCheckWriteDirsHelp": "Pour corriger cette erreur sur votre système GNU/Linux essayez de taper les commandes suivantes",
+ "SystemCheckZlibHelp": "Configurez et recompilez PHP avec le prise en charge de « zlib », --with-zlib.",
"Tables": "Création des tables",
- "TablesCreatedSuccess": "Tables créées avec succès !",
+ "TablesCreatedSuccess": "Tables créées",
"TablesDelete": "Supprimer les tables détectées",
- "TablesDeletedSuccess": "Les tables Matomo existantes ont été supprimées avec succès",
- "TablesFound": "Les tables suivantes ont été trouvées dans la base de données",
+ "TablesDeletedSuccess": "Les tables Matomo existantes ont été supprimées",
+ "TablesFound": "Ces tables ont été trouvées dans la base de données",
"TablesReuse": "Réutiliser les tables existantes",
- "TablesUpdatedSuccess": "La base de données a été mise à jour avec succès de la version %1$s à %2$s !",
- "TablesWarningHelp": "Vous pouvez choisir de réutiliser les tables de la base de données existante ou sélectionner une nouvelle installation pour effacer toutes les données existantes dans la base de données.",
- "TablesWithSameNamesFound": "Des %1$s tables dans votre base de données %2$s ont le même nom que celles que Matomo essaie de créer.",
+ "TablesUpdatedSuccess": "La base de données a été mise à jour de %1$s vers %2$s !",
+ "TablesWarningHelp": "Vous pouvez choisir de réutiliser les tables de la base de données existante ou sélectionner une nouvelle installation pour effacer toutes les données existantes.",
+ "TablesWithSameNamesFound": "Des %1$s tables dans votre base de données %2$s ont le même nom que celles que Matomo essaie de créer",
"Timezone": "Fuseau horaire du site web",
- "WeHopeYouWillEnjoyPiwik": "Nous espérons que vous allez aimer utiliser Matomo autant que nous aimons le concevoir.",
- "Welcome": "Bienvenue !",
- "WelcomeHelp": "<p>Matomo est une application d'analyse du web Open Source qui vous permet d'obtenir facilement les informations que vous désirez sur vos visiteurs.</p>\t<p>Ce procédé est divisé en %s étapes faciles et vous prendra 5 minutes environ.</p>",
- "WelcomeToCommunity": "Bienvenue dans la communauté Matomo !",
+ "WeHopeYouWillEnjoyPiwik": "Appréciez l'utilisation de Matomo autant que nous aimons le concevoir.",
+ "Welcome": "Bienvenue",
+ "WelcomeHelp": "<p>Matomo est un logiciel libre pour analyser le trafic issu de vos vvisiteurs.</p>\t<p>Ce procédé est divisé en %s étapes faciles et vous prendra 5 minutes environ.</p>",
+ "WelcomeToCommunity": "Bienvenue dans la communauté Matomo.",
"YouMayInstallPiwikNow": "Vous pouvez %1$sinstaller Matomo maintenant%2$s"
}
}
diff --git a/plugins/Installation/lang/lv.json b/plugins/Installation/lang/lv.json
index 8da2cf5cea..f50b750204 100644
--- a/plugins/Installation/lang/lv.json
+++ b/plugins/Installation/lang/lv.json
@@ -1,5 +1,6 @@
{
"Installation": {
+ "CollaborativeProject": "Matomo ir kolaboratīvs projekts, kas veidots ar mīlestību.",
"Congratulations": "Apsveicam",
"DatabaseCreation": "Datubāzes izveide",
"DatabaseErrorConnect": "Kļūda mēģinot sasniegt datubāzes serveri",
@@ -38,9 +39,9 @@
"SystemCheckPdoAndMysqliHelp": "Uz Linux servera Jūs varat kompilēt php ar sekojošiem parametriem: %1$s Savā php.ini datnē pievienojiet sekojošas līnijas: %2$s",
"SystemCheckPhp": "PHP versija",
"SystemCheckPhpPdoAndMysqli": "Vairāk informācija par %1$sPHP PDO%2$s un %3$sMYSQLI%4$s.",
- "SystemCheckWarnDomHelp": "Jums ir jāieslēdz \"dom\" paplašinājums (piem., instalējiet \"php-dom\" un\/vai \"php-xml\" pakotnes).",
+ "SystemCheckWarnDomHelp": "Jums ir jāieslēdz \"dom\" paplašinājums (piem., instalējiet \"php-dom\" un/vai \"php-xml\" pakotnes).",
"SystemCheckWarnLibXmlHelp": "Jums ir jāieslēdz \"libxml\" paplašinājums (piem., instalējiet \"php-libxml\" pakotni), jo tā ir nepieciešama citiem PHP paplašinājumiem.",
- "SystemCheckWarnSimpleXMLHelp": "Jums ir jāieslēdz \"SimpleXML\" paplašinājums (piem., instalējiet \"php-simplexml\" un\/vai \"php-xml\" pakotnes).",
+ "SystemCheckWarnSimpleXMLHelp": "Jums ir jāieslēdz \"SimpleXML\" paplašinājums (piem., instalējiet \"php-simplexml\" un/vai \"php-xml\" pakotnes).",
"SystemCheckWinPdoAndMysqliHelp": "Uz Windows servera Jūs varat pievienot sekojošas līnijas savā php.ini datnē: %s",
"SystemCheckWriteDirs": "Mapes ar rakstīšanas pieeju",
"SystemCheckWriteDirsHelp": "Lai salabotu šo kļūdu Jūsu Linux sistēmā, pamēģiniet ierakstīt sekojošas komandas",
@@ -49,4 +50,4 @@
"TablesCreatedSuccess": "Tabulas veiksmīgi izveidotas!",
"Welcome": "Esiet sveicināti!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Installation/lang/sq.json b/plugins/Installation/lang/sq.json
index f0662641bf..fe97133d3f 100644
--- a/plugins/Installation/lang/sq.json
+++ b/plugins/Installation/lang/sq.json
@@ -2,159 +2,162 @@
"Installation": {
"CannotConnectToDb": "S’lidhet dot me bazën e të dhënave",
"CannotConnectToDbResolvingExplanation": "Ky mund të jetë problem i përkohshëm, provoni %1$stë rifreskoni faqen%2$s. Nëse problemi vazhdon, ju lutemi lidhuni me përgjegjësin e Matomo-s tuaj.",
- "CollaborativeProject": "Matomo është një projekt në bashkëpunim, i ndërtuar me dashuri nga njerëz anembanë botës.",
- "ConfigurationHelp": "Kartela juaj për formësimin e Matomo-s duket se është e keqformësuar. Ose mund të hiqni config/config.ini.php dhe rinisni instalimin, ose ndreqni rregullimet për lidhjen me bazën e të dhënave.",
- "ConfirmDeleteExistingTables": "Jeni i sigurt se doni të fshihen tabelat: %s prej bazës së të dhënave? KUJDES: NUK DO TË MUND TË RIKTHENI TË DHËNAT PREJ KËTYRE TABELAVE!",
+ "CollaborativeProject": "Matomo është një projekt i bazuar në bashkëpunim, i ndërtuar me dashuri.",
+ "ConfigurationHelp": "Ndreqeni kartelën e formësimit tuaj të Matomo-s ose duke hequr config/config.ini.php dhe rinisur instalimin, ose duke ndrequr rregullimet për lidhjen me bazën e të dhënave.",
+ "ConfirmDeleteExistingTables": "Të fshihen %s tabela prej bazës suaj të të dhënave? KUJDES: NUK DO TË MUND TË RIKTHENI TË DHËNAT PREJ KËTYRE TABELAVE!",
"Congratulations": "Urime",
- "CongratulationsHelp": "<p>Urime! Instalimi juaj i Matomo-s u plotësua.</p><p>Sigurohuni që keni futur kodin JavaScript te faqet tuaja, dhe prisni për vizitorët e parë!</p>",
- "CopyBelowInfoForSupport": "Në rast se ekipi ynë i asistencës ju kërkon këtë informacion, kopjoni ose shkarkoni të dhënat më poshtë",
+ "CongratulationsHelp": "<p>Urime! Instalimi juaj i Matomo-s u plotësua.</p><p>Sigurohuni që keni futur kodin JavaScript te faqet tuaja dhe prisni për vizitorët e parë!</p>",
+ "CopyBelowInfoForSupport": "Në rast se ekipi ynë i asistencës ju kërkon këtë informacion, kopjoni ose shkarkoni hollësitë më poshtë.",
"CopySystemCheck": "Kopjo kontroll sistemi",
"DatabaseAbilities": "Aftësi baze të dhënash",
"DatabaseCreation": "Krijim baze të dhënash",
- "DatabaseErrorConnect": "Gabim gjatë provës për t’u lidhur me shërbyesin e bazës së të dhënave",
+ "DatabaseErrorConnect": "S’u lidh dot me shërbyesin e bazës së të dhënave",
"DatabaseServerVersion": "Version shërbyesi baze të dhënash",
- "DatabaseSetup": "Rregullimi i Bazës së të Dhënave",
+ "DatabaseSetup": "Ujdisje Baze të Dhënash",
"DatabaseSetupAdapter": "Përshtatës",
"DatabaseSetupDatabaseName": "Emër Baze të Dhënash",
"DatabaseSetupLogin": "Hyrje",
"DatabaseSetupServer": "Shërbyes Baze të Dhënash",
- "DatabaseSetupTablePrefix": "Parashtesë Tabele",
+ "DatabaseSetupTablePrefix": "Parashtesë Tabelash",
"DefaultSettings": "Rregullimet parazgjedhje për Matomo-n",
- "DefaultSettingsHelp": "Matomo instalohet me rregullime parazgjedhje. Ato mund t’i përshtatni tani ose këtë ta bëni më vonë që nga skena e përgjegjësit.",
+ "DefaultSettingsHelp": "Matomo instalohet me rregullime parazgjedhje. Ato mund t’i përshtatni tani, ose ta bëni më vonë këtë që nga skena e përgjegjësit.",
"DownloadSystemCheck": "Shkarko kontroll sistemi",
"Email": "Email",
- "EmailPrivacyNotice": "Adresa juaj email do të përdoret vetëm për t’ju dërguar buletinin. Për këtë na duhet ta japim email-in tuaj te një furnizues palë e tretë. Aktualisht ky furnizues është Mad Mimi, por kjo mund të ndryshojë në të ardhmen. Email-in tuaj s’do t’ia japim kujt tjetër apo ta përdorim për çfarëdo qëllimi tjetër nga dërgimi për ju i buletinit. Mund të shpajtoheni kur të doni. Për më tepër të dhëna, ju lutemi, shihni %1$srregullat tona mbi privatësinë%2$s.",
+ "EmailPrivacyNotice": "Adresa juaj email do të përdoret vetëm për t’ju dërguar buletinin. Për të bërë këtë, i jepet Mad Mimi-t, por furnizuesi palë e tretë i dërgimit të buletineve mund të ndryshojë. Nuk do t’i japim kujt tjetër email-in tuaj, apo ta përdorim për ndonjë qëllim tjetër. Shpajtohuni në çfarëdo kohe. %1$sRregullat mbi privatësinë%2$s kanë më tepër hollësi.",
"Extension": "zgjerim",
"FasterReportLoading": "ngarkim më i shpejtë raportesh",
"Filesystem": "Sistem kartelash",
"GetInvolved": "Nëse ju pëlqen ajo që shihni, mund %1$stë përfshiheni%2$s.",
- "GoBackAndDefinePrefix": "Kthehuni mbrapsht dhe përcaktoni një Prefiks për Tabelat e Matomo-s",
+ "GoBackAndDefinePrefix": "Kthehuni mbrapsht dhe përcaktoni një parashtesë për tabelat e Matomo-s",
"HappyAnalysing": "Analiza të mbara!",
- "IfPiwikInstalledBeforeTablesCanBeKept": "Nëse e keni instaluar herë tjetër Matomo-n dhe keni disa tabela në BD-në tuaj, mos u shqetësoni, mund të ripërdorni të njëjtat tabela dhe të ruani të dhënat ekzistuese!",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Nëse e keni instaluar herë tjetër Matomo-n dhe keni disa tabela në bazën tuaj të të dhënave, mos u shqetësoni, mund të ripërdorni të njëjtat tabela dhe të mbani të dhënat tuaja ekzistuese.",
"InformationalResults": "Përfundime informuese",
"Installation": "Instalim",
"InstallationStatus": "Gjendje instalimi",
- "InsufficientPrivilegesHelp": "Këto privilegje mund t’i shtoni duke përdorur një mjet të tillë si phpMyAdmin ose duke kryer kërkesat e duhura SQL. Nëse nuk dini si t’i bëni këto gjëra, ju lutemi, kërkojini përgjegjësit të sistemit tuaj t’ju akordojë këto privilegje.",
- "InsufficientPrivilegesMain": "Ose Baza e të Dhënave s’ekziston, (dhe s’krijohet dot), ose Përdoruesi i caktuar ka privilegje të pamjaftueshme. Përdoruesi i bazës së të dhënave duhet të ketë privilegjet vijuese: %s",
+ "InsufficientPrivilegesHelp": "Këto privilegje mund t’i shtoni duke përdorur një mjet të tillë si phpMyAdmin, ose duke kryer kërkesat e duhura SQL. Nëse nuk dini si t’i bëni këto gjëra, ju lutemi, kërkojini përgjegjësit të sistemit tuaj t’ju akordojë këto privilegje.",
+ "InsufficientPrivilegesMain": "Ose baza e të dhënave s’ekziston (dhe s’krijohet dot), ose përdoruesi i caktuar ka privilegje të pamjaftueshme. Përdoruesi i bazës së të dhënave duhet të ketë privilegjet vijuese: %s",
"InvalidStateError": "Gabim: Matomo është i instaluar tashmë. %1$s Rikthehuni %2$s te Matomo%3$s.",
"JSTracking_EndNote": "Shënim: pas procesit të instalimit, te ndarja %1$sKod Ndjekjeje%2$s e përgjegjësit mund të prodhoni kod vetjak ndjekjesh.",
"JSTracking_Intro": "Që të ndiqni trafikun tuaj web me Matomo-n, duhet të siguroni shtimin e ca kodi shtesë te secila faqe web e juaja.",
- "JsTagArchivingHelp1": "Për sajte me trafik mesatar ose të madh ka disa optimizime që duhen bërë për ta ndihmuar Matomo-n të xhirojë më shpejt (të tillë si %1$srregullimi i vetë-arkivimit%2$s).",
- "LargePiwikInstances": "Ndihmë për raste Matomo me ngarkesë",
+ "JsTagArchivingHelp1": "Për sajte me trafik mesatar ose të madh ka disa optimizime që duhen bërë, për ta ndihmuar Matomo-n të xhirojë më shpejt (të tillë si %1$sujdisja e vetë-arkivimit%2$s).",
+ "LargePiwikInstances": "Ndihmë për përdorues me sajte me trafik të lartë",
"Legend": "Legjendë",
- "LoadDataInfileRecommended": "Nëse shërbyesi juaj Matomo ndjek sajte me trafik të madh (p.sh., > 100,000 faqe në muaj), këshillojmë të përpiqeni ta ndreqni këtë problem.",
- "LoadDataInfileUnavailableHelp": "Përdorimi i %1$s do ta përshpejtojë mjaft procesin e arkivimit në Matomo. Që Matomo të mund ta përdorë, provoni të përditësoni software-in tuaj PHP & MySQL dhe sigurohuni që përdoruesi i bazës tuaj të të dhënave ka privilegje %2$s.",
+ "LoadDataInfileRecommended": "Nëse shërbyesi juaj Matomo ndjek sajte me trafik të madh (p.sh., &amp;&gt; 100000 faqe në muaj), duhet ta ndreqni këtë problem.",
+ "LoadDataInfileUnavailableHelp": "Ndihmëz: Përdorimi i %1$s, duke përditësuar software-in tuaj PHP dhe MySQL dhe duke garantuar që përdoruesi juaj i bazës së të dhënave të ketë privilegje %2$s, përshpejton goxha procesin e arkivimit të Matomo-s.",
"NfsFilesystemWarning": "Shërbyesi juaj përdor një sistem NFS kartelash.",
- "NfsFilesystemWarningSuffixAdmin": "Kjo do të thotë që Matomo do të jetë tejet i ngadaltë kur të përdorë sesione të bazuar në kartela.",
+ "NfsFilesystemWarningSuffixAdmin": "Kjo do të thotë që Matomo do të jetë tejet i ngadaltë, kur të përdorë sesione të bazuar në kartela.",
"NfsFilesystemWarningSuffixInstall": "Përdorimi për NFS-në i sesioneve të bazuar në kartela është tejet i ngadaltë, ndaj Matomo do të përdorë sesione të bazuar në baza të dhënash. Nëse keni shumë përdorues të njëkohshëm të pultit, mund të keni nevojë të rritni numrin maksimum të lidhjeve nga klientët te shërbyesi i bazës së të dhënave.",
"NoConfigFileFound": "S’u gjet dot kartela e formësimit të Matomo-s dhe po përpiqeni të hyni në një faqe Matomo.",
"NotSupported": "e pambuluar",
"Optional": "Opsionale",
"Password": "Fjalëkalim",
- "PasswordDoNotMatch": "fjalëkalimet nuk përputhen",
+ "PasswordDoNotMatch": "fjalëkalimet s’përputhen",
"PasswordRepeat": "Fjalëkalim (rijepeni)",
"PercentDone": "Plotësuar %s %%",
- "PerformanceSettingsDesc1": "Një fjalë të fundit lidhur me punimin: instanca juaj Matomo është ujdisur dhe është gati të ndjekë dhe raportojë mbi trafikun në sajtin tuaj, por nëse Matomo ju duket i ngadaltë, do të doni të hidhni hapin ekstra të ujdisjes së %1$sarkivimit CLI%2$s. Kjo do të sjellë prodhimin e raporteve tuaja në prapaskenë në mënyrë periodike, në vend se kur kërkohet.",
- "PerformanceSettingsDesc2": "Kjo lyp shtimin e një urdhri Matomo te cron-i, çka s’mund të bëhet automatikisht nga instaluesi, por mund të %1$slexoni PBR-të tona që të mësoni se si ta ujdisni ju vetëm.%2$s",
+ "PerformanceSettingsDesc1": "Instanca juaj Matomo është ujdisur dhe është gati të ndjekë dhe raportojë mbi trafikun në sajtin tuaj. Ujdisni %1$sarkivim CLI%2$s, nëse ju duket e ngadaltë. Kjo sjell prodhimin e raporteve tuaja në prapaskenë, në vend se kur kërkohet.",
+ "PerformanceSettingsDesc2": "Kjo lyp shtimin e një urdhri Matomo te Cron-i, çka s’mund të bëhet automatikisht nga instaluesi. %1$sLexoni PBR-të tona që të mësoni se si ta ujdisni ju vetë.%2$s",
+ "PhpBinaryCheck": "Dyor PHP 64-bit",
+ "PhpBinaryCheckHelp": "32-bit <p>Përmirësojeni me një dyor PHP 64-bit PHP deri më janar të 2026, që të parandaloni të meta.</p>",
"PiwikOrgNewsletter": "njoftomëni me email rreth përditësimesh të rëndësishme të Matomo-s nga bashkësia",
"PleaseFixTheFollowingErrors": "Ju lutemi, ndreqni gabimet vijuese",
- "ProfessionalServicesAdTitle": "Statistika & Shërbime të Përparuara",
+ "ProfessionalServicesAdTitle": "Statistika dhe Shërbime të Përparuara",
"ProfessionalServicesNewsletter": "dërgomëni të dhëna mbi %1$sshërbime dhe produkte Profesionale%2$s për Matomo",
"ProfessionalServicesfessionalDiscoverHow": "Mësoni mbi %1$sproduktet dhe shërbimet shtesë%2$s për Matomo dhe se si të shtoni shndërrimet dhe të ardhurat tuaja.",
- "ProfessionalServicesfessionalServicesAdText": "Rrjeti ynë i ekspertëve mund ta ndihmojë organizmin tuaj të çlirojë fuqinë e plotë të analizave Matomo.",
- "Requirements": "Të domosdoshme për Matomo-n",
+ "ProfessionalServicesfessionalServicesAdText": "Rrjeti ynë i ekspertëve mund ta ndihmojë entin tuaj t’i përdorë analizat Matomo në potencialin e tyre të plotë.",
+ "Requirements": "Domosdoshmëri Matomo-je",
"RestartWebServer": "Pas kryerjes së këtij ndryshimi, rinisni shërbyesin tuaj.",
"ReusingTables": "Ripërdorim Tabelash",
- "SeeBelowForMoreInfo": "Për më tepër informacion, shihni më poshtë.",
+ "SeeBelowForMoreInfo": "Më tepër hollësi, më poshtë.",
"SetupWebSiteName": "Emër sajti",
"SetupWebSiteURL": "URL sajti",
"SetupWebsite": "Rregulloni një Sajt",
- "SetupWebsiteError": "Pati një gabim gjatë shtimit të një sajti",
- "SetupWebsiteSetupSuccess": "Sajti %s u shtua me sukses!",
- "SiteSetup": "Ju lutemi, caktoni sajtin e parë që dëshironi të ndiqet dhe analizohet me Matomo:",
- "SiteSetupFootnote": "Shënim: pasi të përfundojë instalimi i Matomo-s, do të jeni në gjendje të shtoni më tepër Sajte për ndjekje!",
+ "SetupWebsiteError": "S’u shtua dot sajti",
+ "SetupWebsiteSetupSuccess": "Sajti %s u krijua",
+ "SiteSetup": "Ju lutemi, ujdisni sajtin e parë që dëshironi të ndiqet dhe analizohet me Matomo:",
+ "SiteSetupFootnote": "Shënim: pasi Matomo të jetë instaluar plotësisht, mundeni të shtoni më tepër sajte për ndjekje.",
"SuperUser": "Superpërdorues",
"SuperUserLogin": "Hyrje si superpërdorues",
- "SuperUserSetupError": "Pati një gabim gjatë shtimit të Superpërdoruesit",
- "SuperUserSetupSuccess": "Superpërdoruesi u krijua me sukses!",
- "SystemCheck": "Kontroll sistemi",
- "SystemCheckAutoUpdateHelp": "Shënim: përditësimi me Një Klikim i Matomo-s lyp leje për shkrim te dosja Matomo dhe lënda e saj.",
+ "SuperUserSetupError": "S’u shtua dot superpërdoruesi",
+ "SuperUserSetupSuccess": "Superpërdoruesi u krijua.",
+ "SystemCheck": "Kontroll Sistemi",
+ "SystemCheckAutoUpdateHelp": "Shënim: përditësimi me një klikim i Matomo-s lyp leje për shkrim te dosja Matomo dhe lënda e saj.",
"SystemCheckCronArchiveProcess": "Ujdisni Cron-in",
"SystemCheckCronArchiveProcessCLI": "Administrim procesesh përmes CLI-së",
"SystemCheckDatabaseExtensions": "Zgjerime MySQL",
- "SystemCheckDatabaseHelp": "Matomo lyp ose zgjerimin mysqli, ose që të dy zgjerimet PDO dhe pdo_mysql.",
+ "SystemCheckDatabaseHelp": "Matomo lyp ose zgjerimin MySQLi, ose që të dy zgjerimet, PDO dhe pdo_mysql.",
"SystemCheckDatabaseSSL": "Lidhje SSL Baze të Dhënash",
"SystemCheckDatabaseSSLCipher": "Shifër SSL e përdorur",
"SystemCheckDatabaseSSLDisabled": "Mbulimi i SSL-së nga shërbyesi i bazës suaj të të dhënave është i çaktivizuar",
"SystemCheckDatabaseSSLNo": "Shërbyesi i bazës së të dhënave s’është përpiluar me mbulim të SSL-së",
- "SystemCheckDatabaseSSLNotWorking": "%s është caktuar si '1', or lidhja SSL nuk funksionon",
- "SystemCheckDatabaseSSLOn": "Baza juaj e të dhënave i mbulon lidhjet SSL, por lidhja SSL s’është në përdorim. Kontrolloni rregullimet tuaja për SSL baze të dhënash, te kartela e rregullimeve tuaja për Matomo-n",
- "SystemCheckDebugBacktraceHelp": "View::factory nuk do të jetë në gjendje të krijojë parje për modulin thirrës.",
- "SystemCheckError": "Ndodhi një gabim - duhet të ndreqet përpara se të ecni më tej",
- "SystemCheckEvalHelp": "E domosdoshme për HTML QuickForm dhe sistemin Smarty të gjedheve.",
+ "SystemCheckDatabaseSSLNotWorking": "%s është caktuar si '1', ose lidhja SSL s’funksionon",
+ "SystemCheckDatabaseSSLOn": "Baza juaj e të dhënave i mbulon lidhjet SSL, por lidhja SSL s’është në përdorim. Kontrolloni rregullimet për SSL-në për bazën tuaj të të dhënave, te kartela e rregullimeve tuaja për Matomo-n",
+ "SystemCheckDebugBacktraceHelp": "View::factory s’do të jetë në gjendje të krijojë parje për modulin thirrës.",
+ "SystemCheckError": "Ndodhi një gabim dhe duhet të ndreqet, përpara se të ecni më tej",
+ "SystemCheckEvalHelp": "E domosdoshme për HTML QuickForm dhe sistemin Twig të gjedheve.",
"SystemCheckExtensions": "Të tjera zgjerime të domosdoshme",
"SystemCheckFileIntegrity": "Pacenueshmëri kartele",
- "SystemCheckFilterHelp": "Duhet të formësoni dhe rimontoni PHP-në me mbulim të kativizuar për \"filter\" (mos përdorni --disable-filter).",
+ "SystemCheckFilterHelp": "Duhet të formësoni dhe rimontoni PHP-në me mbulim të aktivizuar për “filter” (mos përdorni --disable-filter).",
"SystemCheckFunctions": "Funksione të domosdoshëm",
- "SystemCheckGDFreeType": "GD > 2.x + Freetype (grafikë)",
- "SystemCheckGDHelp": "Grafikët vijëzorë (grafikë të veckël) nuk do të funksionojnë.",
- "SystemCheckGlobHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Matomo do të përpiqet ta emulojë këtë funksion por mund të hasë kufizime të mëtejshme sigurie. Kjo mund të ketë ndikim te funksionimi.",
+ "SystemCheckGDFreeType": "GD &gt; 2.x + Freetype (elemente grafike)",
+ "SystemCheckGDHelp": "Grafikët vijëzorë (grafikë të veckël) dhe grafikët figurë (te aplikacioni Matomo për celular dhe te raportet me email) s’do të funksionojnë.",
+ "SystemCheckGlobHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Matomo do të përpiqet ta emulojë këtë funksion, por mund të hasë kufizime të mëtejshme të lidhura me sigurinë. Kjo mund të ketë ndikim te funksionimi.",
"SystemCheckGzcompressHelp": "Lypset të aktivizoni zgjerimin zlib dhe funksionin gzcompress.",
"SystemCheckGzuncompressHelp": "Lypset të aktivizoni zgjerimin zlib dhe funksionin gzuncompress.",
- "SystemCheckHashHelp": "Lypset të formësoni dhe rikrijoni PHP-në me mbulim të hash() të aktivizuar duke përjashtuar mundësinë --disable-hash.",
- "SystemCheckJsonHelp": "Zgjerimi php-json është i domosdoshëm që Matomo të lexojë dhe shkruajë të dhëna JSON.",
- "SystemCheckMailHelp": "Mesazhet mbi Përshtypjet dhe Fjalëkalim të Humbur nuk kanë për t’u dërguar pa mail().",
+ "SystemCheckHashHelp": "Formësojeni dhe rimontoni PHP-në me mbulim të hash() të aktivizuar, duke përjashtuar mundësinë --disable-hash.",
+ "SystemCheckJsonHelp": "Zgjerimi php5-json është i domosdoshëm që Matomo të lexojë dhe shkruajë të dhëna JSON.",
+ "SystemCheckMailHelp": "Përshtypjet dhe mesazhet “Humbi fjalëkalimi” nuk kanë për t’u dërguar pa 'mail()'.",
"SystemCheckMemoryLimit": "Kufi kujtese",
"SystemCheckMemoryLimitHelp": "Në një sajt me shumë trafik, procesi i arkivimit mund të dojë më tepër kujtesë se sa i është dhënë tani. Në u dashtë, ndryshojeni parametrin memory_limit te kartela juaj php.ini.",
- "SystemCheckMemoryNoMemoryLimitSet": "S'është caktuar kufi kujtese",
+ "SystemCheckMemoryNoMemoryLimitSet": "S’është caktuar kufi kujtese",
"SystemCheckNoErrorsOrWarnings": "S’ka gabime apo sinjalizime",
"SystemCheckOpenURL": "Hap URL",
- "SystemCheckOpenURLHelp": "Pajtimet në buletine, njoftime përditësimesh, dhe përditësimet me një klikim e duan zgjerimin \"curl\", allow_url_fopen=On, ose fsockopen() të aktivizuar.",
+ "SystemCheckOpenURLHelp": "Pajtimet në buletine, njoftime përditësimesh dhe përditësimet me një klikim e duan zgjerimin “cURL”, allow_url_fopen=On, ose fsockopen() të aktivizuar.",
"SystemCheckOtherExtensions": "Zgjerime të tjera",
"SystemCheckOtherFunctions": "Funksione të tjerë",
- "SystemCheckPackHelp": "Që të ndiqen vizitorët me Matomo-n, funksioni pack() është i domosdoshëm.",
- "SystemCheckPageSpeedDisabled": "PageSpeed e çaktivizuar",
- "SystemCheckPageSpeedWarning": "Këshillojmë të çaktivizohet moduli PageSpeed te shërbyesi juaj web %s: PageSpeed është raportuar si shkaktar i disa problemeve me Matomo-n, të tilla si: raporte të dëmtuar për Faqet, Evolucion Rreshtash të dëmtuar, dhe të tjera probleme me të cilët është e vështirë të merresh. Ju lutemi, çaktivizojeni mod_pagespeed në këtë shërbyes.",
- "SystemCheckParseIniFileHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Matomo do të përpiqet ta emulojë këtë funksion por mund të hasë kufizime të mëtejshme sigurie. Nga kjo do të preket edhe punimi i ndjekësit.",
- "SystemCheckPdoAndMysqliHelp": "Në një shërbyes Linux mund ta përpiloni php-në me mundësitë vijuese: %1$s te php.ini juaj, shtoni rreshtat vijues: %2$s",
+ "SystemCheckPackHelp": "Që të ndiqen vizitorët me Matomo-n, funksioni 'pack()' është i domosdoshëm.",
+ "SystemCheckPageSpeedDisabled": "PageSpeed është i çaktivizuar",
+ "SystemCheckPageSpeedWarning": "Rekomandohet të çaktivizohet moduli PageSpeed te shërbyesi juaj web %s: PageSpeed është raportuar si shkaktar i disa problemeve me Matomo-n, bie fjala: raporte të dëmtuar për faqet, evolucion të prishur rreshtash, etj. Ju lutemi, çaktivizojeni mod_pagespeed në këtë shërbyes.",
+ "SystemCheckParseIniFileHelp": "Ky funksion i trupëzuar është i çaktivizuar te streha juaj. Matomo do të përpiqet ta emulojë këtë funksion por mund të hasë kufizime të mëtejshme të lidhura me sigurinë. Nga kjo do të preket punimi i ndjekësit.",
+ "SystemCheckPdoAndMysqliHelp": "Në një shërbyes Linux, mund ta përpiloni PHP-në me mundësitë vijuese: %1$s te php.ini juaj, shtoni rreshtat vijues: %2$s",
"SystemCheckPhp": "Version PHP-je",
- "SystemCheckPhpPdoAndMysqli": "Më tepër të dhëna te: %1$sPHP PDO%2$s dhe %3$sMYSQLI%4$s.",
- "SystemCheckPhpSetting": "Që të parandaloni disa probleme kritike, duhet të rregulloni sa vijon te kartela juaj php.ini: %s",
- "SystemCheckSessionHelp": "Lypset të formësoni dhe rimontoni PHP-në me aktivizim të mbulimit të \"session\" (mos përdorni --disable-session).",
+ "SystemCheckPhpPdoAndMysqli": "Më tepër hollësi: %1$sPHP PDO%2$s dhe %3$sMYSQLI%4$s.",
+ "SystemCheckPhpSetting": "Që të parandaloni probleme kritike, ujdiseni kartelën tuaj php.ini kështu: %s",
+ "SystemCheckSessionHelp": "Formësoni dhe rimontoni PHP-në me aktivizim të mbulimit të “session” (mos përdorni --disable-session).",
"SystemCheckSettings": "Formësim PHP-je i domosdoshëm (php.ini)",
- "SystemCheckSummaryNoProblems": "Urraaa! S’ka probleme me rregullimin tuaj të Matomo-s. Rrihini shpatullat vetes.",
- "SystemCheckSummaryThereWereErrors": "Ah! Matomo ka zbuluar disa %1$sçështje kritike%2$s me rregullimin tuaj për të. %3$sKëto çështje duhen ndrequr menjëherë.%4$s",
+ "SystemCheckShellExecHelp": "Rekomandohet të aktivizohet ky funksion i brendshëm i PHP-së. %1$sQë të mësoni më tepër, lexoni këtë.%2$s",
+ "SystemCheckSummaryNoProblems": "S’ka probleme me rregullimin tuaj të Matomo-s. Rrihini shpatullat vetes.",
+ "SystemCheckSummaryThereWereErrors": "Ujdisja juaj e Matomo-s ka disa %1$sprobleme kritike%2$s. %3$sNdreqini menjëherë.%4$s",
"SystemCheckSummaryThereWereWarnings": "Ka disa probleme me sistemin tuaj. Matomo do të funksionojë, por mund të hasni ca probleme të vockla.",
- "SystemCheckTimeLimitHelp": "Në sajt me shumë trafik, përmbushja e procesit të arkivimit mund të dojë më tepër kohë se sa i është dhënë tani. Në u dashtë, ndryshojeni parametrin max_execution_time te kartela juaj php.ini.",
+ "SystemCheckTimeLimitHelp": "Në sajt me shumë trafik, përmbushja e procesit të arkivimit mund të dojë më tepër kohë se sa i është dhënë tani. Në u dashtë, ndryshojeni parametrin 'max_execution_time' te kartela juaj php.ini.",
"SystemCheckTracker": "Gjendje ndjekësi",
- "SystemCheckTrackerHelp": "Kërkesa GET te matomo.php dështoi. Provoni ta kaloni këtë URL si një të lejuar nga Mirëfilltësimi HTTP dhe çaktivizoni mod_security (mund t’ju duhet t’i kërkoni ndihmë strehuesit tuaj web). Për më tepër të dhëna mbi gabimin, shihni kartelën e regjistrimit të gabimeve të shërbyesit tuaj web.",
+ "SystemCheckTrackerHelp": "Kërkesa GET te matomo.php dështoi. Provoni ta kaloni këtë URL si një të lejuar nga mirëfilltësimi HTTP dhe çaktivizoni 'mod_security' (mund t’ju duhet t’i kërkoni ndihmë strehuesit tuaj web). Për më tepër hollësi mbi gabimin, shihni kartelën përkatëse të regjistrimit të gabimeve të shërbyesit tuaj web.",
"SystemCheckUpdateHttps": "Përditësoje përmes HTTPS-je",
- "SystemCheckUpdateHttpsNotSupported": "Matomo s’mund të përdorë HTTPS për përditësim, ndaj do të kalojë te përditësimi i pasigurt përmes HTTP-s. Kujdesuni që të mbulohet CURL ose allow_url_fopen dhe që zgjerimi PHP openssl të jetë i instaluar: https://matomo.org/faq/troubleshooting/faq_177/.",
+ "SystemCheckUpdateHttpsNotSupported": "Matomo s’mund të përdorë HTTPS për përditësim, ndaj do të kalojë te përditësimi i pasigurt përmes HTTP-s. Kujdesuni që të mbulohet CURL ose allow_url_fopen dhe që zgjerimi PHP OpenSSL të jetë i instaluar: http://piwik.org/faq/troubleshooting/faq_177/.",
"SystemCheckViewFullSystemCheck": "Shihni raportin e plotë të kontrollit të sistemit",
- "SystemCheckWarnDomHelp": "Do të duhej të aktivizonit zgjerimin \"dom\" (p.sh., instaloni paketën \"php-dom\" dhe/ose \"php-xml\").",
- "SystemCheckWarnJsonHelp": "Do të duhej të aktivizonit zgjerimin \"json\" (p.sh., instaloni paketën \"php-json\").",
- "SystemCheckWarnLibXmlHelp": "Do të duhej të aktivizonit zgjerimin \"libxml\" (p.sh., paketën \"install the php-libxml\" ) meqë është e domosdoshme nga zgjerime të tjera bazë të PHP-së.",
- "SystemCheckWarnOpensslHelp": "Do të duhej të aktivizonit zgjerimin \"openssl\", që të lejohen përditësime të siguruara.",
- "SystemCheckWarnSimpleXMLHelp": "Do të duhej të aktivizonit zgjerimin \"SimpleXML\" (p.sh., instaloni paketën \"php-simplexml\" dhe/ose \"php-xml\").",
- "SystemCheckWarning": "Matomo do të punojë normalisht por mund t’i mungojnë disa veçori",
+ "SystemCheckWarnDomHelp": "Duhet të aktivizoni zgjerimin “dom” (p.sh., instaloni paketën “php-dom” dhe/ose “php-xml”).",
+ "SystemCheckWarnJsonHelp": "Duhet të aktivizoni zgjerimin “JSON” (p.sh., instaloni paketën “php-json”) për punim më të mirë.",
+ "SystemCheckWarnLibXmlHelp": "Duhet të aktivizonit zgjerimin “libxml” (p.sh., paketën “install the php-libxml” ), meqë është i domosdoshme nga zgjerime të tjera bazë të PHP-së.",
+ "SystemCheckWarnOpensslHelp": "Duhet të aktivizoni zgjerimin “OpenSSL”, që të lejohen përditësime të siguruara.",
+ "SystemCheckWarnSimpleXMLHelp": "Duhet të aktivizoni zgjerimin “SimpleXML” (p.sh., instaloni paketën “php-simplexml” dhe/ose “php-xml”).",
+ "SystemCheckWarning": "Matomo do të punojë normalisht, por mund t’i mungojnë disa veçori.",
"SystemCheckWinPdoAndMysqliHelp": "Në një shërbyes Windows, mund të shtoni rreshtat vijues te php.ini juaj: %s",
"SystemCheckWriteDirs": "Drejtori me hyrje për shkrim",
- "SystemCheckWriteDirsHelp": "Për ndreqjen e këtij gabimi në sistemin tuaj Linux, provoni të shtypni urdhrin(at) vijues",
- "SystemCheckZlibHelp": "Lypset të formësoni dhe rikrijoni PHP-në me mbulim të zlib-it të aktivizuar, --with-zlib.",
+ "SystemCheckWriteDirsHelp": "Për ndreqjen e këtij gabimi në sistemin tuaj GNU/Linux, provoni të shtypni urdhrin(at) vijues",
+ "SystemCheckZlibHelp": "Formësoni dhe rimontoni PHP-në me mbulim të zlib-it të aktivizuar, --with-zlib.",
"Tables": "Krijim Tabelash",
- "TablesCreatedSuccess": "Tabelat u krijuan me sukses!",
- "TablesDelete": "Fshiji tabelat e zbuluara",
- "TablesDeletedSuccess": "Tabelat ekzistuese të Matomo-s u fshinë me sukses",
+ "TablesCreatedSuccess": "Tabelat u krijuan",
+ "TablesDelete": "Fshiji tabelat e pikasura",
+ "TablesDeletedSuccess": "Tabelat ekzistuese të Matomo-s u fshinë",
"TablesFound": "Te baza e të dhënave u gjetën tabelat vijuese",
"TablesReuse": "Ripërdor tabelat ekzistuese",
- "TablesUpdatedSuccess": "Baza e të dhënave u përditësua me sukses, nga %1$s në %2$s!",
- "TablesWarningHelp": "Ose zgjidhni përdorimin sërish të tabelave ekzistuese të bazës së të dhënave, ose përzgjidhni instalimin nga e para për të fshirë tërë të dhënat ekzistuese te baza e të dhënave.",
- "TablesWithSameNamesFound": "Disa tabela %1$s te baza juaj e të dhënave %2$s kanë të njëjtët emra si tabelat që Matomo po përpiqet të krijojë",
+ "TablesUpdatedSuccess": "Baza e të dhënave u përditësua nga %1$s në %2$s!",
+ "TablesWarningHelp": "Ose zgjidhni përdorimin sërish të tabelave ekzistuese të bazës së të dhënave, ose përzgjidhni instalimin nga e para, për të fshirë tërë të dhënat ekzistuese te baza e të dhënave.",
+ "TablesWithSameNamesFound": "Disa tabela %1$s te baza juaj e të dhënave' %2$s' kanë të njëjtët emra si tabelat që Matomo po përpiqet të krijojë",
"Timezone": "Zonë kohore e sajtit",
"WeHopeYouWillEnjoyPiwik": "Shpresojmë t’ju shijojë Matomo-i po aq sa na shijon neve krijimi i tij.",
- "Welcome": "Mirë se vini!",
- "WelcomeHelp": "<p>Matomou është një program analizash web, me burim të hapët, që e bën të lehtë të kihen të dhëna që dëshironi rreth vizitorëve tuaj.</p><p>Ky proces është ndarë në %s hapa të kollajtë dhe do të zgjasë rreth 5 minuta.</p>",
- "WelcomeToCommunity": "Mirë se vini te bashkësia Matomo!",
+ "Welcome": "Mirë se vini",
+ "WelcomeHelp": "<p>Matomo është software i lirë i përdorur për të analizuar trafik të vizitorëve tuaj.</p><p>Ky proces ka %s hapa dhe ha afërsisht 5 minuta.</p>",
+ "WelcomeToCommunity": "Mirë se vini te bashkësia Matomo.",
"YouMayInstallPiwikNow": "Tani %1$smund të instaloni Matomo-n%2$s"
}
}
diff --git a/plugins/Installation/lang/tl.json b/plugins/Installation/lang/tl.json
index 072154db98..dcf78a9257 100644
--- a/plugins/Installation/lang/tl.json
+++ b/plugins/Installation/lang/tl.json
@@ -1,6 +1,8 @@
{
"Installation": {
- "CollaborativeProject": "Ang Matomo ay mga pinagsama-samang mga proyekto na binuo na may pag-ibig sa pamamagitan ng mga tao mula sa buong mundo.",
+ "CannotConnectToDb": "Hindi makakonekta sa database",
+ "CannotConnectToDbResolvingExplanation": "Itoy ay maaring panandaliang isyu subukan na %1$s e-refresh ang pahina %2$s. Kung patuloy pa rin ang ganitong problema mangyarin makipag-ugnayan sa iyong Matomo administrator.",
+ "CollaborativeProject": "Ang Matomo ay mga pinagsama-samang mga proyekto na binuo na pagmamahal.",
"ConfirmDeleteExistingTables": "Sigurado ka bang gusto mong tanggaling ang mga table na ito: %s mula sa iyong database? BABALA: ANG MGA DATUS MULA SA MGA TABLES NA ITO AY HINDI NA MAIBABALIK!",
"Congratulations": "Congratulations",
"DatabaseAbilities": "kakayahan ng database",
@@ -20,23 +22,24 @@
"Installation": "Installation",
"InstallationStatus": "Status ng Pag-install",
"InsufficientPrivilegesHelp": "Maari kang mag-dagdag ng mga pribilehiyong it sa pamamagitan ng paggamit ng tool tulad ng phpMyAdmin o sa pag e-execute ng tamang SQL quiries. Kung hindi alam kung paano gagawing mga ito mangyaring magtanong sa inyong sysadmin upang mabigay ang mga pribilehiyong ito sayo.",
- "JsTagArchivingHelp1": "Para sa katam-taman at mataas na traffic sa websites may mga pweding gawing optimizations upang makatulong sa Matomo upang ito ay bumilis(tulad ng %1$ssetting up auto-archiving%2$s).",
"JSTracking_EndNote": "Tandaan: Matapos ang proseso ng pag-iinstall maari kang mag-generate ng customized tracking code sa %1$sTracking Code%2$s sa admin sekyon.",
"JSTracking_Intro": "Upang ma subaybayan ang iyong traffic sa web na may Matomo kailangan mong siguraduhin na ang ilang mga code ay na-idinagdag sa bawat isa sa iyong mga webpages.",
+ "JsTagArchivingHelp1": "Para sa katam-taman at mataas na traffic sa websites may mga pweding gawing optimizations upang makatulong sa Matomo upang ito ay bumilis(tulad ng %1$ssetting up auto-archiving%2$s).",
"LargePiwikInstances": "Tulong para sa mga gumagamit na may mataas na trapiko sa mga website.",
"Legend": "Alamat",
"LoadDataInfileUnavailableHelp": "Ang pag-gamit ng %1$s ay lubos na magbibigay bilis sa pag proseso ng pag archive. Upang maging available ito sa Matomo subukan na e update ang iyong PHP & MySQL software at siguraduin na ang iyong mga database user ay may %2$s prebilehiyo.",
"NfsFilesystemWarning": "Ang iyong server ay gumagamit ng isang NFS filesystem",
"NfsFilesystemWarningSuffixAdmin": "Ito ay nangangahulugan na ang Matomo ay lubhang babagal kapag gumagamit ng file na batay sa session.",
"NfsFilesystemWarningSuffixInstall": "Ang pag-gamit ng file based session sa NFS ay sobrang mabagal iyong kakailanganin ang pag dag-dag ng maximum number na komokonekta sa iyong database server.",
+ "NotSupported": "Hindi supportado",
"Optional": "Opsyonal",
"PasswordDoNotMatch": "password ay hindi tumutugma",
"PercentDone": "%s %% Tapos na",
+ "PiwikOrgNewsletter": "I-email sa akin ang mga pangunahing update sa komunidad ng Matomo",
"PleaseFixTheFollowingErrors": "Mangyaring ayusin ang mga sumusunod na error",
"Requirements": "Mga kailangan ng Matomo",
"RestartWebServer": "Pagkatapos gawin ang pagbabagong ito i-restart ang iyong web browser",
"ReusingTables": "Muling pag-gamit sa mga table",
- "PiwikOrgNewsletter": "I-email sa akin ang mga pangunahing update sa komunidad ng Matomo",
"SeeBelowForMoreInfo": "Tingnan sa ibaba para sa karagdagang impormasyon.",
"SetupWebsite": "Pag-setup ng Website",
"SetupWebsiteError": "Mayroong error habang idinadagdag ang website.",
@@ -48,6 +51,7 @@
"SuperUserSetupSuccess": "Ang super user ay tagumpay na nagawa!",
"SystemCheck": "Pagsusuri sa System",
"SystemCheckAutoUpdateHelp": "Tandaan: Ang Matomo One click update ay nangangailangan ng permiso upang mabago ang folder at mga laman nito.",
+ "SystemCheckCronArchiveProcessCLI": "Mga pamamahala ng proseso sa pamamagitan ng CLI",
"SystemCheckDatabaseHelp": "Ang Matomo ay nangangailangan ng alinman sa extension mysqli o pareho ang PDO at pdo_mysql extension.",
"SystemCheckDebugBacktraceHelp": "Tingnan :: ang factory ay hindi magagawang lumikha ng mga view para sa calling module.",
"SystemCheckError": "May naganap na error - kailangan itong maayos bago magpatuloy.",
@@ -69,7 +73,7 @@
"SystemCheckOtherFunctions": "Iba pang mga function",
"SystemCheckPackHelp": "Ang function na pack() ay kailangan upang masubaybayan ang mga bisita sa Matomo.",
"SystemCheckParseIniFileHelp": "Ang mga gawa ng function na ito ay hindi gumagana sa iyong host. Ang Matomo ay susubukan na ito ay gayahin ngunit maaring magkaroon ng karagdagang paghihipit sa seguridad. At ang performance ng tracker ay maapektuhan.",
- "SystemCheckPdoAndMysqliHelp": "Sa GNU\/Linux server ay maari mong e-compile ang iyong php kasama ang mag option na ito: %1$s In your php.ini idag-dag ang mga sumusunod na mga linya: %2$s",
+ "SystemCheckPdoAndMysqliHelp": "Sa GNU/Linux server ay maari mong e-compile ang iyong php kasama ang mag option na ito: %1$s In your php.ini idag-dag ang mga sumusunod na mga linya: %2$s",
"SystemCheckPhp": "Bersyon ng PHP",
"SystemCheckPhpPdoAndMysqli": "Marami pang impormasyon sa: : %1$sPHP PDO%2$s at %3$sMYSQLI%4$s.",
"SystemCheckSummaryNoProblems": "Huzzah! Walang mga problema sa pag-setup mo ng Matomo. Bigyan ang iyong sarili ng isang magandang pahinga.",
@@ -77,16 +81,14 @@
"SystemCheckSummaryThereWereWarnings": "May ilang mga isyu sa iyong system. Ang Matomo ay gagana ngunit maaari kang makaranas ng ilang mga menor na problema.",
"SystemCheckTimeLimitHelp": "Sa website na may mataas na traffic ang pagsasagawa ng archiving process ay mangangailangan ng karagdagang oras kaysa sa kasaluyang proseso. Kung ito'y kinakailangan baguhin ang max_execution_time na nasa iyong php.ini file.",
"SystemCheckTracker": "Status ng tracker",
- "SystemCheckWarnDomHelp": "Dapat mong paganahin ang extension na \"DOM\" (hal i-install ang \"php-DOM\" at \/ o \"php-xml\" package).",
- "SystemCheckWarning": "Ang Matomo ay gagana nang normal ngunit ang ilang mga feature ay maaaring mawala.",
+ "SystemCheckWarnDomHelp": "Dapat mong paganahin ang extension na \"DOM\" (hal i-install ang \"php-DOM\" at / o \"php-xml\" package).",
"SystemCheckWarnLibXmlHelp": "Dapat mong paganahin \"libxml\" extension (hal.. \"i-install ang php-libxml\" package) dahil ito ay kinakailangan ng iba pang mga extension core ng PHP.",
- "SystemCheckWarnSimpleXMLHelp": "Maaari mong paganahin ang extension na \"SimpleXML\" (hal. i-install ang \"php-simplexml\" at \/ o \"php-xml\" package).",
+ "SystemCheckWarnSimpleXMLHelp": "Maaari mong paganahin ang extension na \"SimpleXML\" (hal. i-install ang \"php-simplexml\" at / o \"php-xml\" package).",
+ "SystemCheckWarning": "Ang Matomo ay gagana nang normal ngunit ang ilang mga feature ay maaaring mawala.",
"SystemCheckWinPdoAndMysqliHelp": "Sa isang Windows server maaari mong idagdag ang sumusunod na linya sa iyong php.ini: %s",
"SystemCheckWriteDirs": "Mga directory na may write access",
- "SystemCheckWriteDirsHelp": "Upang maayos ang error na ito sa iyong system GNU \/ Linux subukang mag-type sa (mga) sumusunod na command.",
+ "SystemCheckWriteDirsHelp": "Upang maayos ang error na ito sa iyong system GNU / Linux subukang mag-type sa (mga) sumusunod na command.",
"SystemCheckZlibHelp": "Kailangan mong i-configure at muling e-build ang PHP na may \"zlib\" na may gumaganang supporta ng --with-zlib.",
- "SystemCheckCronArchiveProcessCLI": "Mga pamamahala ng proseso sa pamamagitan ng CLI",
- "NotSupported": "Hindi supportado",
"Tables": "Pag-gawa ng Tables",
"TablesCreatedSuccess": "Ang mga table ay tagumpay na nalikha!",
"TablesDelete": "Tanggaling ang mga nakitang table",
@@ -98,8 +100,6 @@
"TablesWithSameNamesFound": "Ang i-iilang %1$s mga table sa iyong database ng %2$s ay may kaparehong pangalan tulad ng mga tables sa Matomo na sinusubukang gawin.",
"WeHopeYouWillEnjoyPiwik": "Umaasa kaming masiyahan ka sa paggamit ng Matomo kagaya ng aming kasiyahan sa paggawa nito.",
"Welcome": "Maligayang Pagdating!",
- "WelcomeToCommunity": "Maligayang pagdating sa komunidad Matomo!",
- "CannotConnectToDb": "Hindi makakonekta sa database",
- "CannotConnectToDbResolvingExplanation": "Itoy ay maaring panandaliang isyu subukan na %1$s e-refresh ang pahina %2$s. Kung patuloy pa rin ang ganitong problema mangyarin makipag-ugnayan sa iyong Matomo administrator."
+ "WelcomeToCommunity": "Maligayang pagdating sa komunidad Matomo!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Installation/lang/tr.json b/plugins/Installation/lang/tr.json
index 64730581f4..b152ea498d 100644
--- a/plugins/Installation/lang/tr.json
+++ b/plugins/Installation/lang/tr.json
@@ -58,7 +58,7 @@
"PerformanceSettingsDesc2": "Bunun için, kurucu tarafından otomatik olarak yapılamayan bir Matomo komutunun zamanlanmış göreve eklenmesi gerekir. %1$sBunu nasıl yapabileceğinizi öğrenmek için sık sorulan sorular bölümüne bakabilirsiniz.%2$s",
"PhpBinaryCheck": "64 bit PHP binary",
"PhpBinaryCheckHelp": "32 bit <p>Hataları önlemek için 64 bit PHP binary dosyasına yükseltin.</p>",
- "PiwikOrgNewsletter": "Bana Matomo topluluğundaki gelişmeler e-posta ile bildirilsin",
+ "PiwikOrgNewsletter": "Matomo hakkında düzenli bilgi almak için haber bültenimize abone olun.",
"PleaseFixTheFollowingErrors": "Lütfen şu sorunları çözün",
"ProfessionalServicesAdTitle": "Gelişmiş istatistikler ve hizmetler",
"ProfessionalServicesNewsletter": "Bana Matomo %1$sprofesyonel hizmet ve ürünleri%2$s hakkında bilgiler gönderilsin",
diff --git a/plugins/Installation/templates/finished.twig b/plugins/Installation/templates/finished.twig
index 52d7c8fd46..79d02318d1 100644
--- a/plugins/Installation/templates/finished.twig
+++ b/plugins/Installation/templates/finished.twig
@@ -20,10 +20,10 @@
{% if areAdsForProfessionalServicesEnabled %}
<h3>{{ 'Installation_ProfessionalServicesAdTitle'|translate }}</h3>
<p>
- {{ 'Installation_ProfessionalServicesfessionalServicesAdText'|translate }}
+ {{ 'Installation_ProfessionalServicesfessionalServicesAdText'|translate('<a rel="noreferrer noopener" target="_blank" href="https://plugins.matomo.org/premium?pk_campaign=App_ProfessionalServices&pk_medium=App_InstallationFinished&pk_source=Matomo_App">','</a>','<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/support-plans/?pk_campaign=App_ProfessionalServices&pk_medium=App_InstallationFinished&pk_source=Matomo_App">')|raw }}
</p>
<p>
- {{ 'Installation_ProfessionalServicesfessionalDiscoverHow'|translate('<a rel="noreferrer noopener" target="_blank" href="' ~ linkToProfessionalServices ~ '">','</a>')|raw }}
+ {{ 'Installation_ProfessionalServicesfessionalDiscoverHow'|translate('<a rel="noreferrer noopener" target="_blank" href="https://matomo.org/matomo-cloud/?pk_campaign=App_ProfessionalServices&pk_medium=App_InstallationFinished&pk_source=Matomo_App">','</a>')|raw }}
</p>
{% endif %}
diff --git a/plugins/Installation/tests/System/APITest.php b/plugins/Installation/tests/System/APITest.php
index 370b99e3bc..54a85ec389 100644
--- a/plugins/Installation/tests/System/APITest.php
+++ b/plugins/Installation/tests/System/APITest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\Installation\tests\System;
-use Piwik\Config;
use Piwik\Http;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
index 38086a7c51..81692b05d3 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_js_tracking.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:486bc7f6e7e60d3fdb574e23ac244d9336617a07d24698ce56d58da94b307fa6
-size 237987
+oid sha256:2b1e4e18f0ab87028578d81871f2ac029eac579f679c6733e856264488629170
+size 252556
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
index 982c6079e0..572b91b2c4 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a3ec5d646d290aa76d10387a1948b87c90db9691a403a45705bf9d62e006b58e
-size 86212
+oid sha256:b3c75ccde98045f9bcc76c93ee48af79669a9dc58fe93fad803e5a98bb70d17a
+size 88667
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 948c4598cd..225ca5760d 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:5d81deb9b3aed8d991ee9c8eebc8fed5855f7f40abdce2940d520458a0b09690
-size 111503
+oid sha256:effe088d45a5f90d2f2b9dc10269234fe8b148cbd02514f68adbb8465a967193
+size 112113
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
index a105478cb1..76b925d52a 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_fail.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:03b19887fcfd966a8948666d22fa223583ff5168d95f751278dacf9e32f822e1
-size 100447
+oid sha256:55794d41e1829b9381f29029911ebcfa98c075ff8c64b1c59f47abe20cb20449
+size 102896
diff --git a/plugins/Intl/Commands/GenerateIntl.php b/plugins/Intl/Commands/GenerateIntl.php
index af7ad7903d..555190ef91 100644
--- a/plugins/Intl/Commands/GenerateIntl.php
+++ b/plugins/Intl/Commands/GenerateIntl.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\Intl\Commands;
use DateTimeZone;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Development;
use Piwik\Filesystem;
diff --git a/plugins/IntranetMeasurable/lang/ca.json b/plugins/IntranetMeasurable/lang/ca.json
index 0967ef424b..8d74f4f53d 100644
--- a/plugins/IntranetMeasurable/lang/ca.json
+++ b/plugins/IntranetMeasurable/lang/ca.json
@@ -1 +1,7 @@
-{}
+{
+ "IntranetMeasurable": {
+ "Intranet": "Lloc web de la intranet",
+ "IntranetDescription": "Una intranet mesurable és com un lloc web, però allotjada en una xarxa interna.",
+ "Intranets": "Llocs web de la intranet"
+ }
+}
diff --git a/plugins/IntranetMeasurable/lang/id.json b/plugins/IntranetMeasurable/lang/id.json
index 0967ef424b..5085b1c4f2 100644
--- a/plugins/IntranetMeasurable/lang/id.json
+++ b/plugins/IntranetMeasurable/lang/id.json
@@ -1 +1,7 @@
-{}
+{
+ "IntranetMeasurable": {
+ "Intranet": "Situs Web Intranet",
+ "IntranetDescription": "Sebuah Intranet yang terukur itu sama seperti situs web tetapi dihosting di jaringan internal.",
+ "Intranets": "Situs Web Intranet"
+ }
+}
diff --git a/plugins/LanguagesManager/Commands/TranslationBase.php b/plugins/LanguagesManager/Commands/TranslationBase.php
index 5e47ae9101..6a304f6758 100644
--- a/plugins/LanguagesManager/Commands/TranslationBase.php
+++ b/plugins/LanguagesManager/Commands/TranslationBase.php
@@ -11,10 +11,6 @@ namespace Piwik\Plugins\LanguagesManager\Commands;
use Piwik\Development;
use Piwik\Plugin\ConsoleCommand;
-use Symfony\Component\Console\Input\ArrayInput;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Input\InputOption;
-use Symfony\Component\Console\Output\OutputInterface;
/**
*/
diff --git a/plugins/LanguagesManager/LanguagesManager.php b/plugins/LanguagesManager/LanguagesManager.php
index 0dcfe9a29d..988a0a9c70 100644
--- a/plugins/LanguagesManager/LanguagesManager.php
+++ b/plugins/LanguagesManager/LanguagesManager.php
@@ -15,7 +15,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Cookie;
-use Piwik\Development;
use Piwik\Intl\Locale;
use Piwik\Nonce;
use Piwik\Piwik;
diff --git a/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php b/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
index 48456239dc..e057a317b4 100644
--- a/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
+++ b/plugins/LanguagesManager/tests/Integration/LanguagesManagerTest.php
@@ -12,7 +12,6 @@ use Piwik\Cache;
use Piwik\Container\StaticContainer;
use Piwik\Intl\Data\Provider\LanguageDataProvider;
use Piwik\Plugins\LanguagesManager\API;
-use \Exception;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\ByParameterCount;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\EmptyTranslations;
use Piwik\Plugins\LanguagesManager\TranslationWriter\Filter\EncodedEntities;
diff --git a/plugins/Live/API.php b/plugins/Live/API.php
index 2318e03e26..0f639a9e87 100644
--- a/plugins/Live/API.php
+++ b/plugins/Live/API.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Site;
use Psr\Log\LoggerInterface;
@@ -148,6 +147,12 @@ class API extends \Piwik\Plugin\API
}
Piwik::checkUserHasViewAccess($idSites);
+ if (is_numeric($minTimestamp)) {
+ $minTimestamp = (int) $minTimestamp;
+ } else {
+ $minTimestamp = false;
+ }
+
if (Request::isCurrentApiRequestTheRootApiRequest() || !in_array(Request::getRootApiRequestMethod(), ['API.getSuggestedValuesForSegment', 'PrivacyManager.findDataSubjects'])) {
if (is_array($idSites)) {
$filteredSites = array_filter($idSites, function($idSite) {
diff --git a/plugins/Live/Categories/VisitorLogSubcategory.php b/plugins/Live/Categories/VisitorLogSubcategory.php
index cba1e00af5..52215d49c3 100644
--- a/plugins/Live/Categories/VisitorLogSubcategory.php
+++ b/plugins/Live/Categories/VisitorLogSubcategory.php
@@ -21,7 +21,7 @@ class VisitorLogSubcategory extends Subcategory
{
$help = '<p>' . Piwik::translate('Live_VisitorLogSubcategoryHelp1') . '</p>';
$help .= '<p>' . Piwik::translate('Live_VisitorLogSubcategoryHelp2') . '</p>';
- $help .= '<p><a href="https://matomo.org/docs/real-time/" target="_blank" rel="noreferrer noopener">' . Piwik::translate('Live_VisitorLogSubcategoryHelp3') . '</a></p>';
+ $help .= '<p><a href="https://matomo.org/docs/real-time/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" target="_blank" rel="noreferrer noopener">' . Piwik::translate('Live_VisitorLogSubcategoryHelp3') . '</a></p>';
return $help;
}
}
diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php
index 9d1dbc9a6b..8625805495 100644
--- a/plugins/Live/Controller.php
+++ b/plugins/Live/Controller.php
@@ -13,7 +13,7 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Piwik;
use Piwik\DataTable;
-use Piwik\Plugins\Goals\API as APIGoals;
+use Piwik\Plugins\Live\Exception\MaxExecutionTimeExceededException;
use Piwik\Plugins\Live\Visualizations\VisitorLog;
use Piwik\Url;
use Piwik\View;
@@ -116,20 +116,40 @@ class Controller extends \Piwik\Plugin\Controller
private function setCounters($view)
{
$segment = Request::getRawSegmentFromRequest();
- $last30min = Request::processRequest('Live.getCounters', [
- 'idSite' => $this->idSite,
- 'lastMinutes' => 30,
- 'segment' => $segment,
- 'showColumns' => 'visits,actions',
- ], $default = []);
- $last30min = $last30min[0];
- $today = Request::processRequest('Live.getCounters', [
- 'idSite' => $this->idSite,
- 'lastMinutes' => 24 * 60,
- 'segment' => $segment,
- 'showColumns' => 'visits,actions',
- ], $default = []);
- $today = $today[0];
+ $executeTodayQuery = true;
+ $view->countErrorToday = '';
+ $view->countErrorHalfHour = '';
+ try {
+ $last30min = Request::processRequest('Live.getCounters', [
+ 'idSite' => $this->idSite,
+ 'lastMinutes' => 30,
+ 'segment' => $segment,
+ 'showColumns' => 'visits,actions',
+ ], $default = []);
+ $last30min = $last30min[0];
+ } catch (MaxExecutionTimeExceededException $e) {
+ $last30min = ['visits' => '-', 'actions' => '-'];
+ $today = ['visits' => '-', 'actions' => '-'];
+ $view->countErrorToday = $e->getMessage();
+ $view->countErrorHalfHour = $e->getMessage();
+ $executeTodayQuery = false; // if query for last 30 min failed, we also expect the 24 hour query to fail
+ }
+
+ try {
+ if ($executeTodayQuery) {
+ $today = Request::processRequest('Live.getCounters', [
+ 'idSite' => $this->idSite,
+ 'lastMinutes' => 24 * 60,
+ 'segment' => $segment,
+ 'showColumns' => 'visits,actions',
+ ], $default = []);
+ $today = $today[0];
+ }
+ } catch (MaxExecutionTimeExceededException $e) {
+ $today = ['visits' => '-', 'actions' => '-'];
+ $view->countErrorToday = $e->getMessage();
+ }
+
$view->visitorsCountHalfHour = $last30min['visits'];
$view->visitorsCountToday = $today['visits'];
$view->pisHalfhour = $last30min['actions'];
diff --git a/plugins/Live/Model.php b/plugins/Live/Model.php
index 604ce0a399..b8a1274183 100644
--- a/plugins/Live/Model.php
+++ b/plugins/Live/Model.php
@@ -28,6 +28,11 @@ use Piwik\Updater\Migration\Db as DbMigration;
class Model
{
/**
+ * @internal for tests only
+ */
+ public $queryAndWhereSleepTestsOnly = false;
+
+ /**
* @param $idSite
* @param $period
* @param $date
@@ -371,6 +376,11 @@ class Model
);
}
+ private function shouldQuerySleepInTests()
+ {
+ return $this->queryAndWhereSleepTestsOnly && defined('PIWIK_TEST_MODE') && PIWIK_TEST_MODE;
+ }
+
private function getLastMinutesCounterForQuery($idSite, $lastMinutes, $segment, $select, $from, $where)
{
$lastMinutes = (int)$lastMinutes;
@@ -394,11 +404,31 @@ class Model
$bind[] = $startDate->toString('Y-m-d H:i:s');
$where = $whereIdSites . "AND " . $where;
+ if ($this->shouldQuerySleepInTests()) {
+ $where = ' SLEEP(1)';
+ }
$segment = new Segment($segment, $idSite, $startDate, $endDate = null);
$query = $segment->getSelectQuery($select, $from, $where, $bind);
- $numVisitors = Db::getReader()->fetchOne($query['sql'], $query['bind']);
+ if ($this->shouldQuerySleepInTests()) {
+ $query['bind'] = [];
+ }
+
+ $query['sql'] = trim($query['sql']);
+ if (0 === stripos($query['sql'], 'SELECT')) {
+ $query['sql'] = 'SELECT /* Live.getCounters */' . mb_substr($query['sql'], strlen('SELECT'));
+ }
+
+ $query['sql'] = DbHelper::addMaxExecutionTimeHintToQuery($query['sql'], $this->getLiveQueryMaxExecutionTime());
+
+ $readerDb = Db::getReader();
+ try {
+ $numVisitors = $readerDb->fetchOne($query['sql'], $query['bind']);
+ } catch (Exception $e) {
+ $this->handleMaxExecutionTimeError($readerDb, $e, $segment->getOriginalString(), $startDate, Date::now(), null, 0, $query);
+ throw $e;
+ }
return $numVisitors;
}
@@ -460,15 +490,35 @@ class Model
$orderBy = "MAX(log_visit.visit_last_action_time) $orderByDir";
$groupBy = "log_visit.idvisitor";
+ if ($this->shouldQuerySleepInTests()) {
+ $where = ' SLEEP(1)';
+ $visitLastActionTimeCondition = 'SLEEP(1)';
+ }
+
$segment = new Segment($segment, $idSite, $dateOneDayAgo, $dateOneDayInFuture);
$queryInfo = $segment->getSelectQuery($select, $from, $where, $whereBind, $orderBy, $groupBy);
- $sql = "SELECT sub.idvisitor, sub.visit_last_action_time FROM ({$queryInfo['sql']}) as sub
+ $sql = "SELECT /* Live.queryAdjacentVisitorId */ sub.idvisitor, sub.visit_last_action_time FROM ({$queryInfo['sql']}) as sub
WHERE $visitLastActionTimeCondition
LIMIT 1";
$bind = array_merge($queryInfo['bind'], array($visitLastActionTime));
- $visitorId = Db::getReader()->fetchOne($sql, $bind);
+ if ($this->shouldQuerySleepInTests()) {
+ $bind = [];
+ }
+
+ $sql = DbHelper::addMaxExecutionTimeHintToQuery($sql, $this->getLiveQueryMaxExecutionTime());
+
+ $readerDb = Db::getReader();
+ try {
+ $visitorId = $readerDb->fetchOne($sql, $bind);
+ } catch (Exception $e) {
+ $this->handleMaxExecutionTimeError($readerDb, $e, $segment->getOriginalString(), Date::now(), Date::now(), null, 1, [
+ 'sql' => $sql, 'bind' => $bind
+ ]);
+ throw $e;
+ }
+
if (!empty($visitorId)) {
$visitorId = bin2hex($visitorId);
}
@@ -529,7 +579,9 @@ class Model
if (!$visitorId) {
// for now let's not apply when looking for a specific visitor
- $innerQuery['sql'] = DbHelper::addMaxExecutionTimeHintToQuery($innerQuery['sql'], Config::getInstance()->General['live_query_max_execution_time']);
+ $innerQuery['sql'] = DbHelper::addMaxExecutionTimeHintToQuery($innerQuery['sql'],
+ $this->getLiveQueryMaxExecutionTime()
+ );
}
return array($innerQuery['sql'], $bind);
@@ -656,4 +708,9 @@ class Model
}
return array($whereBind, $where);
}
+
+ private function getLiveQueryMaxExecutionTime()
+ {
+ return Config::getInstance()->General['live_query_max_execution_time'];
+ }
}
diff --git a/plugins/Live/ProfileSummary/Summary.php b/plugins/Live/ProfileSummary/Summary.php
index 9f864f3bd4..c08cec750b 100644
--- a/plugins/Live/ProfileSummary/Summary.php
+++ b/plugins/Live/ProfileSummary/Summary.php
@@ -12,7 +12,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\Piwik;
use Piwik\View;
-use Piwik\Plugins\Goals\API as APIGoals;
/**
* Class Summary
diff --git a/plugins/Live/Reports/GetSimpleLastVisitCount.php b/plugins/Live/Reports/GetSimpleLastVisitCount.php
index 469618f900..5ea442d509 100644
--- a/plugins/Live/Reports/GetSimpleLastVisitCount.php
+++ b/plugins/Live/Reports/GetSimpleLastVisitCount.php
@@ -11,9 +11,9 @@ namespace Piwik\Plugins\Live\Reports;
use Piwik\Config;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\Live\Controller;
use Piwik\API\Request;
+use Piwik\Plugins\Live\Exception\MaxExecutionTimeExceededException;
use Piwik\Report\ReportWidgetFactory;
use Piwik\View;
use Piwik\Widget\WidgetsList;
@@ -38,16 +38,26 @@ class GetSimpleLastVisitCount extends Base
$lastMinutes = Config::getInstance()->General[Controller::SIMPLE_VISIT_COUNT_WIDGET_LAST_MINUTES_CONFIG_KEY];
$params = array('lastMinutes' => $lastMinutes, 'showColumns' => array('visits', 'visitors', 'actions'));
- $lastNData = Request::processRequest('Live.getCounters', $params);
+ $refereshAfterSeconds = Config::getInstance()->General['live_widget_refresh_after_seconds'];
+
+ $error = '';
+ try {
+ $lastNData = Request::processRequest('Live.getCounters', $params);
+ } catch (MaxExecutionTimeExceededException $e) {
+ $error = $e->getMessage();
+ $lastNData = [0 => ['visitors' => '-', 'visits' => '-', 'actions' => '-']];
+ $refereshAfterSeconds = 999999999; // we don't want it to refresh again any time soon as same issue would happen again
+ }
$formatter = new Formatter();
$view = new View('@Live/getSimpleLastVisitCount');
+ $view->error = $error;
$view->lastMinutes = $lastMinutes;
$view->visitors = $formatter->getPrettyNumber($lastNData[0]['visitors']);
$view->visits = $formatter->getPrettyNumber($lastNData[0]['visits']);
$view->actions = $formatter->getPrettyNumber($lastNData[0]['actions']);
- $view->refreshAfterXSecs = Config::getInstance()->General['live_widget_refresh_after_seconds'];
+ $view->refreshAfterXSecs = $refereshAfterSeconds;
$view->translations = array(
'one_visitor' => Piwik::translate('Live_NbVisitor'),
'visitors' => Piwik::translate('Live_NbVisitors'),
@@ -61,4 +71,4 @@ class GetSimpleLastVisitCount extends Base
return $view->render();
}
-} \ No newline at end of file
+}
diff --git a/plugins/Live/Visitor.php b/plugins/Live/Visitor.php
index 388be77727..e0c4192d24 100644
--- a/plugins/Live/Visitor.php
+++ b/plugins/Live/Visitor.php
@@ -12,12 +12,9 @@ use Piwik\Cache;
use Piwik\CacheId;
use Piwik\Config;
use Piwik\DataTable\Filter\ColumnDelete;
-use Piwik\Date;
-use Piwik\Metrics\Formatter;
use Piwik\Plugin;
use Piwik\Piwik;
use Piwik\Plugins\Live\Visualizations\VisitorLog;
-use Piwik\Tracker\GoalManager;
class Visitor implements VisitorInterface
{
diff --git a/plugins/Live/VisitorProfile.php b/plugins/Live/VisitorProfile.php
index 12b99d72c8..9c6ed1a7a1 100644
--- a/plugins/Live/VisitorProfile.php
+++ b/plugins/Live/VisitorProfile.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\Live;
use Exception;
use Piwik\DataTable;
+use Piwik\Plugins\Live\Exception\MaxExecutionTimeExceededException;
class VisitorProfile
{
@@ -90,10 +91,19 @@ class VisitorProfile
$rows = $visits->getRows();
$latestVisitTime = reset($rows)->getColumn('lastActionDateTime');
- $model = new Model();
- $this->profile['nextVisitorId'] = $model->queryAdjacentVisitorId($this->idSite, $visitorId,
- $latestVisitTime, $segment, $getNext = true);
- $this->profile['previousVisitorId'] = $model->queryAdjacentVisitorId($this->idSite, $visitorId,
- $latestVisitTime, $segment, $getNext = false);
+ $model = new Model();
+ try {
+ $this->profile['nextVisitorId'] = $model->queryAdjacentVisitorId($this->idSite, $visitorId, $latestVisitTime, $segment, $getNext = true);
+ } catch (MaxExecutionTimeExceededException $e) {
+ $this->profile['nextVisitorId'] = false;
+ $this->profile['previousVisitorId'] = false; // if query for next visitor is too slow, we assume query for previous visitor is too slow too
+ return;
+ }
+ try {
+ $this->profile['previousVisitorId'] = $model->queryAdjacentVisitorId($this->idSite, $visitorId, $latestVisitTime, $segment, $getNext = false);
+ } catch (MaxExecutionTimeExceededException $e) {
+ // we simply assume there is no previous visitor in that case
+ $this->profile['previousVisitorId'] = false;
+ }
}
}
diff --git a/plugins/Live/javascripts/SegmentedVisitorLog.js b/plugins/Live/javascripts/SegmentedVisitorLog.js
index 65d0121edc..cec8e020a2 100644
--- a/plugins/Live/javascripts/SegmentedVisitorLog.js
+++ b/plugins/Live/javascripts/SegmentedVisitorLog.js
@@ -110,7 +110,15 @@ var SegmentedVisitorLog = function() {
// remove title returned from the server
var title = box.find('h2[piwik-enriched-headline]');
- var defaultTitle = title.text();
+
+ // if the enriched headline has been already parsed, there might be additional content,
+ // so we prefer using the original title, which is placed in div with class "title"
+ // @see plugins/CoreHome/vue/src/EnrichedHeadline/EnrichedHeadline.vue
+ if (title.find('.title')) {
+ var defaultTitle = title.find('.title').text();
+ } else {
+ var defaultTitle = title.text();
+ }
if (title.length) {
title.remove();
diff --git a/plugins/Live/lang/ca.json b/plugins/Live/lang/ca.json
index b186fc5818..6517ab2e35 100644
--- a/plugins/Live/lang/ca.json
+++ b/plugins/Live/lang/ca.json
@@ -1,13 +1,69 @@
{
"Live": {
+ "ActionsAndDuration": "%1$s accions en %2$s",
+ "AveragePageGenerationTime": "Cada pàgina va trigar de mitjana %1$s a carregar-se per a aquest visitant.",
+ "CalculatedOverNPageViews": "Calculat utilitzant les últimes %1$s pàgines vistes d'aquest visitant.",
+ "ClickToSeeAllContents": "Feu clic per veure cada interacció/impressió de contingut",
+ "ClickToViewAllActions": "Feu clic per veure totes les accions d'aquest grup en detall",
+ "ClickToViewMoreAboutVisit": "Feu clic per veure més informació sobre aquesta visita",
+ "ConvertedNGoals": "S'han convertit %s objectius",
+ "DisableVisitorProfile": "Desactiva només el perfil de visitant",
+ "DisableVisitorProfileDescription": "Aquí podeu desactivar la funció de perfil de visitant. Totes les funcions relacionades amb el registre de visites continuaran funcionant.",
+ "DisableVisitsLogAndProfile": "Desactiva el registre de visites i el perfil de visitants",
+ "DisableVisitsLogAndProfileDescription": "Aquí podeu desactivar el registre de visites i la funció de perfil de visitant. Això també desactivarà funcions que en depenen, com ara el registre de comerç electrònic, el registre de visites segmentades, el mapa en temps real o el giny en temps real. És possible que això sigui necessari per complir amb les lleis/directrius de privadesa locals.",
+ "FirstVisit": "Primera visita",
"GoalType": "Tipus",
- "KeywordRankedOnSearchResultForThisVisitor": "La paraula clau %1$s està a la posició %2$s del ranking de %3$s resultats de cerca per aquest visitant.",
+ "HideMap": "amagar el mapa",
+ "KeywordRankedOnSearchResultForThisVisitor": "La paraula clau %1$s es va classificar %2$s a la pàgina de resultats de la cerca de %3$s per a aquest visitant",
"LastHours": "Últimes %s hores",
"LastMinutes": "Últims %s minuts",
- "MorePagesNotDisplayed": "No es mostre més pàgines per aquest visitant",
- "PageRefreshed": "Nombre de vegades que s'ha vist\/refrescat una pàgina",
+ "LastVisit": "Darrera visita",
+ "LimitedSummary": "La informació d'aquest perfil resumeix les últimes %1$s visites. Aquest usuari ha fet més visites en total.",
+ "LimitedVisitsShown": "Només es mostren les últimes %1$s visites. Aquest usuari ha fet més visites en total.",
+ "LinkVisitorLog": "Veure el registre de visites detallat",
+ "LoadMoreVisits": "Carregar més visites",
+ "MorePagesNotDisplayed": "no es mostren més pàgines d'aquest visitant",
+ "NbVisitor": "1 visitant",
+ "NbVisitors": "%s visitants",
+ "NextVisitor": "Següent visitant",
+ "NoMoreVisits": "No hi ha més visites per a aquest visitant.",
+ "OnClickPause": "%s ha començat. Feu clic per posar en pausa.",
+ "OnClickStart": "%s està aturat. Feu clic per engegar-lo.",
+ "PageRefreshed": "Nombre de vegades seguides que s'ha vist/s'ha actualitzat aquesta pàgina.",
+ "PluginDescription": "Proporciona el registre de visitants en directe i us permet veure els vostres visitants en directe al giny del tauler de control en temps real. El connector també us permet veure un perfil de visitant per a qualsevol usuari determinat.",
+ "PreviousVisitor": "Visitant anterior",
+ "QueryMaxExecutionTimeExceeded": "La consulta ha trigat massa a executar-se.",
+ "QueryMaxExecutionTimeExceededReasonDateRange": "Això pot passar si l'interval de dates seleccionat és massa gran. Intenteu seleccionar un interval de dates més petit.",
+ "QueryMaxExecutionTimeExceededReasonSegment": "Això pot passar si el segment seleccionat no coincideix amb cap visita. Si us plau, comproveu el segment seleccionat.",
+ "QueryMaxExecutionTimeExceededReasonUnknown": "Siusplau torna-ho a provar. Si passa repetidament, poseu-vos en contacte amb l'administrador o el servei d'assistència.",
+ "RealTimeHelp1": "L'informe Visites en temps real mostra el flux de visites en temps real al vostre lloc web. Inclou un comptador en temps real de les vostres visites i pàgines vistes durant les últimes 24 hores i els 30 minuts anteriors.",
+ "RealTimeHelp2": "Aquest informe s'actualitza cada 5 segons i mostra les visites noves (o els visitants existents que veuen una pàgina nova) a la part superior de la llista amb un efecte de desaparició.",
+ "RealTimeVisitorCount": "Recompte de visitants en temps real",
+ "RealTimeVisitors": "Visites en temps real",
"Referrer_URL": "URL del referent",
- "VisitorLogDocumentation": "Aquesta taula mostra les últimes visites pel període de temps seleccionat. Podeu veure quan s'ha produït l'últim accès d'un visitant pasant per damunt de la data de visita. %1$s Si el període de temps inclou avui, podeu veure els visitants en temps real! %2$s La informació que es mostra és sempre en directa, sense dependre de cada quan executeu el treball programat d'arxivat.",
- "VisitorsLastVisit": "L'ultima visita d'aquest visitant va ser fa %s dies."
+ "RevisitedPages": "Pàgines vistes més d'una vegada",
+ "RowActionTooltipDefault": "Mostra el registre de visites segmentat per aquesta fila",
+ "RowActionTooltipTitle": "Obre el registre de visites segmentat",
+ "RowActionTooltipWithDimension": "Mostra el registre de visites segmentat per aquest %s",
+ "SegmentedVisitorLogTitle": "Registre de visites que mostra les visites on %1$s és \"%2$s\"",
+ "ShowMap": "mostra el mapa",
+ "SimpleRealTimeWidget_Message": "%1$s i %2$s a les darreres %3$s",
+ "ToggleActions": "Commuta la visibilitat de totes les accions",
+ "TopVisitedPages": "Pàgines més visitades",
+ "ViewVisitorProfile": "Veure el perfil del visitant",
+ "VisitSummary": "He passat un total de %1$s%2$s al lloc web%3$s i ha vist %4$s pàgines%5$s en %6$s visites%7$s.",
+ "VisitSummaryWithActionDetails": "Va passar un total de %1$s%2$s al lloc web%3$s i va realitzar %4$s accions%5$s (%6$s) en %7$s visites%8$s.",
+ "VisitedPages": "Pàgines visitades",
+ "VisitorLog": "Registre de visites",
+ "VisitorLogDocumentation": "Aquesta taula mostra les últimes visites dins de l'interval de dates seleccionat. Podeu veure quan es va produir l'última visita d'un visitant passant el cursor per sobre de la data d'una visita. %1$s Si l'interval de dates inclou avui, podeu veure els vostres visitants en temps real! %2$s Les dades que es mostren aquí sempre són en directe, independentment de si utilitzeu el treball cron d'arxivat i amb quina freqüència.",
+ "VisitorLogNoDataMessagePurged": "És probable que les dades s'hagin esporgat perquè la supressió regular de dades en brut antigues està activada i la data d'aquest informe té més de %s dies. Un superusuari pot canviar aquesta configuració anant a Administració =&gt; Privadesa.",
+ "VisitorLogSubcategoryHelp1": "El registre de visites us mostra detalladament cada visita que rep el vostre lloc web. Podeu veure quines accions ha fet cada visitant, com ha arribat al vostre lloc, una mica sobre qui són i molt més (tot mentre compliu amb les vostres normatives de privadesa locals).",
+ "VisitorLogSubcategoryHelp2": "Mentre que altres informes de Matomo mostren com es comporten els vostres visitants a nivell agregat, el registre de visites proporciona detalls granulars. També podeu utilitzar segments per reduir-lo a tipus específics de visites per entendre millor els vostres visitants.",
+ "VisitorLogSubcategoryHelp3": "Més informació a la guia de registre de visites.",
+ "VisitorProfile": "Perfil del visitant",
+ "VisitorsInRealTime": "Visites en temps real",
+ "VisitorsLastVisit": "L'última visita d'aquest visitant va ser fa %s dies.",
+ "VisitsFrom": "%1$s%2$s visites%3$s des de",
+ "VisitsLog": "Registre de visites"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Live/lang/nb.json b/plugins/Live/lang/nb.json
index 3e0537e76e..90608eaf42 100644
--- a/plugins/Live/lang/nb.json
+++ b/plugins/Live/lang/nb.json
@@ -7,6 +7,7 @@
"ClickToViewMoreAboutVisit": "Klikk for å se mer informasjon om dette besøket",
"ConvertedNGoals": "Konverterte %s mål",
"DisableVisitorProfile": "Skrur kun av besøksprofil",
+ "DisableVisitsLogAndProfile": "Skru av besøkslogg og besøkerprofil",
"FirstVisit": "Første besøk",
"GoalType": "Type",
"HideMap": "skjul kart",
diff --git a/plugins/Live/lang/pt-br.json b/plugins/Live/lang/pt-br.json
index cda1845a7f..e86f40057d 100644
--- a/plugins/Live/lang/pt-br.json
+++ b/plugins/Live/lang/pt-br.json
@@ -7,6 +7,10 @@
"ClickToViewAllActions": "Clique para ver todas as ações deste grupo em detalhes",
"ClickToViewMoreAboutVisit": "Clique para ver mais informações sobre esta visita",
"ConvertedNGoals": "%s metas convertidas",
+ "DisableVisitorProfile": "Desativar apenas o perfil do visitante",
+ "DisableVisitorProfileDescription": "Aqui você pode desativar o recurso de perfil do visitante. Todos os recursos relacionados ao registro de visitas continuarão funcionando.",
+ "DisableVisitsLogAndProfile": "Desativar registro de visitas e perfil de visitante",
+ "DisableVisitsLogAndProfileDescription": "Aqui você pode desativar o registro de visitas e o recurso de perfil do visitante. Isso também desativará recursos que dependem de como o registro de comércio eletrônico, o registro de visitas segmentado, o mapa em tempo real ou o widget em tempo real. Isso pode ser necessário para cumprir suas leis/diretrizes de privacidade locais.",
"FirstVisit": "Primeira visita",
"GoalType": "Tipo",
"HideMap": "esconder mapa",
@@ -16,6 +20,7 @@
"LastVisit": "Última visita",
"LimitedSummary": "A informação neste perfil resume as últimas %1$s visitas. Este usuário teve mais visitas no total.",
"LimitedVisitsShown": "Apenas as últimas %1$s visitas são mostradas. Este usuário teve mais visitas no total.",
+ "LinkVisitorLog": "Ver registo de visitas detalhado",
"LoadMoreVisits": "Carregar mais visitas",
"MorePagesNotDisplayed": "mais páginas por este visitante não são exibidas",
"NbVisitor": "1 visitante",
@@ -31,10 +36,16 @@
"QueryMaxExecutionTimeExceededReasonDateRange": "Isto pode ocorrer se o intervalo de datas é muito grande. Por favor tente selecionar um intervalo de datas menor.",
"QueryMaxExecutionTimeExceededReasonSegment": "Isto pode ocorrer se o segmento selecionado não coincide com nenhuma visita. Por favor tente verificar o seu segmento selecionado.",
"QueryMaxExecutionTimeExceededReasonUnknown": "Por favor tente de novo. Se isso ocorrer repetidamente, por favor entre em contato com o administrador ou o suporte.",
+ "RealTimeHelp1": "O relatório Visitas em tempo real mostra o fluxo de visitas em tempo real ao seu site. Inclui um contador em tempo real de suas visitas e visualizações de página nas últimas 24 horas e nos 30 minutos anteriores.",
+ "RealTimeHelp2": "Esse relatório é atualizado a cada 5 segundos e exibe novas visitas (ou visitantes existentes que visualizam uma nova página) no topo da lista com um efeito de fade-in.",
"RealTimeVisitorCount": "Contagem de visitantes em tempo real",
"RealTimeVisitors": "Visitas em tempo real",
"Referrer_URL": "URL do referenciador",
"RevisitedPages": "Páginas visualizadas mais de uma vez",
+ "RowActionTooltipDefault": "Mostrar registro de visitas segmentado por esta linha",
+ "RowActionTooltipTitle": "Abrir registro de visitas segmentado",
+ "RowActionTooltipWithDimension": "Mostrar registro de visitas segmentado por este %s",
+ "SegmentedVisitorLogTitle": "Registro de visitas mostrando visitas em que %1$s é \"%2$s\"",
"ShowMap": "mostrar mapa",
"SimpleRealTimeWidget_Message": "%1$s e %2$s na última %3$s",
"ToggleActions": "Alternar visibilidade de todas as ações",
@@ -45,7 +56,10 @@
"VisitedPages": "Páginas visitadas",
"VisitorLog": "Log de visitas",
"VisitorLogDocumentation": "Esta tabela mostra as últimas visitas dentro do período selecionado. Você pode ver quando a última visita de um visitante ocorreu passando o mouse sobre a data da visita. %1$s Se o intervalo de data incluir hoje, você pode ver os seus visitantes em tempo real! %2$s Os dados exibidos aqui são sempre ao vivo, independentemente de estar usando o arquivamento agendado por cron.",
- "VisitorLogNoDataMessagePurged": "Provavelmente os dados foram excluídos pois a exclusão regular de dados brutos antigos está habilitada e a data deste relatório é de mais de %s dias atrás. Um super usuário pode modificar esta configuração em Administração => Privacidade.",
+ "VisitorLogNoDataMessagePurged": "Provavelmente os dados foram excluídos pois a exclusão regular de dados brutos antigos está habilitada e a data deste relatório é de mais de %s dias atrás. Um super usuário pode modificar esta configuração em Administração =&gt; Privacidade.",
+ "VisitorLogSubcategoryHelp1": "O Registro de visitas mostra detalhadamente todas as visitas que seu site recebe. Você pode ver quais ações cada visitante realizou, como eles chegaram ao seu site, um pouco sobre quem eles são e muito mais (enquanto ainda cumpre os regulamentos de privacidade locais).",
+ "VisitorLogSubcategoryHelp2": "Enquanto outros relatórios no Matomo mostram como seus visitantes se comportam em um nível agregado, o Registro de visitas fornece detalhes granulares. Você também pode usar segmentos para reduzi-lo a tipos específicos de visitas para entender melhor seus visitantes.",
+ "VisitorLogSubcategoryHelp3": "Saiba mais no guia Registro de visitas.",
"VisitorProfile": "Perfil do visitante",
"VisitorsInRealTime": "Visitas em tempo real",
"VisitorsLastVisit": "A última visita deste visitante foi %s dias atrás.",
diff --git a/plugins/Live/lang/ru.json b/plugins/Live/lang/ru.json
index 5af869a6a4..fbd06248dc 100644
--- a/plugins/Live/lang/ru.json
+++ b/plugins/Live/lang/ru.json
@@ -1,10 +1,16 @@
{
"Live": {
+ "ActionsAndDuration": "%1$s действий за %2$s",
"AveragePageGenerationTime": "В среднем требовалось %1$s у этого посетителя для полной загрузки страницы.",
"CalculatedOverNPageViews": "Рассчитано на основе последних %1$s просмотров(а) страниц(ы) этим посетителем.",
- "ClickToViewMoreAboutVisit": "Посмотреть более подробную информацию об этом визите",
+ "ClickToSeeAllContents": "Нажмите, чтобы увидеть каждое взаимодействие с контентом/впечатление",
"ClickToViewAllActions": "Нажмите здесь, чтобы показать все действия этой группы в деталях",
+ "ClickToViewMoreAboutVisit": "Посмотреть более подробную информацию об этом визите",
"ConvertedNGoals": "Целей достигнуто: %s",
+ "DisableVisitorProfile": "Отключить только профиль посетителя",
+ "DisableVisitorProfileDescription": "Здесь вы можете отключить функцию профиля посетителя. Все функции, связанные с журналом посещений, останутся рабочими.",
+ "DisableVisitsLogAndProfile": "Отключить журнал посещений и профиль посетителя",
+ "DisableVisitsLogAndProfileDescription": "Здесь вы можете отключить журнал посещений и профиль посетителя. Это также отключит функции, которые зависят от таких функций, как журнал электронной коммерции, сегментированный журнал посещений, карта реального времени или виджет реального времени. Это может потребоваться для соответствия местным законам/правилам конфиденциальности.",
"FirstVisit": "Первое посещение",
"GoalType": "Тип",
"HideMap": "скрыть карту",
@@ -12,42 +18,52 @@
"LastHours": "Последние %s часов",
"LastMinutes": "Последние %s минут",
"LastVisit": "Последнее посещение",
- "LoadMoreVisits": "Загрузить больше посетителей",
"LimitedSummary": "Информация в этом профиле суммирует последние %1$s посещений. Этот пользователь имеет больше посещений.",
"LimitedVisitsShown": "Показаны только последние %1$s посещений. Этот пользователь имеет больше посещений.",
+ "LinkVisitorLog": "Просмотр подробного журнала посещений",
+ "LoadMoreVisits": "Загрузить больше посетителей",
"MorePagesNotDisplayed": "Больше страниц по этому посетителю не отображается.",
"NbVisitor": "1 посетитель",
"NbVisitors": "%s посетителей",
"NextVisitor": "Следующий посетитель",
"NoMoreVisits": "Больше нет посещений у этого посетителя.",
- "PageRefreshed": "Сколько раз эта страница была просмотрена \/ обновлена несколько ряд подряд.",
+ "OnClickPause": "%s началось. Нажмите, чтобы приостановить.",
+ "OnClickStart": "%s остановлено. Нажмите, чтобы начать.",
+ "PageRefreshed": "Сколько раз эта страница была просмотрена / обновлена несколько ряд подряд.",
"PluginDescription": "Показывает актуальный журнал посетителей и позволяет смотреть ваших посетителей в режиме реального времени на приборной панели виджетов. Плагин также позволяет просматривать профиль посетителя для каждого пользователя.",
"PreviousVisitor": "Предыдущий посетитель",
- "RealTimeVisitors": "Посещения в реальном времени",
+ "QueryMaxExecutionTimeExceeded": "Выполнение запроса заняло слишком много времени.",
+ "QueryMaxExecutionTimeExceededReasonDateRange": "Это может произойти, если выбранный диапазон дат слишком велик. Пожалуйста, попробуйте выбрать меньший диапазон дат.",
+ "QueryMaxExecutionTimeExceededReasonSegment": "Это может произойти, если выбранный сегмент не соответствует ни одному посещению. Пожалуйста, попробуйте проверить выбранный сегмент.",
+ "QueryMaxExecutionTimeExceededReasonUnknown": "Пожалуйста, попробуйте еще раз. Если это происходит неоднократно, пожалуйста, свяжитесь с администратором или поддержкой.",
+ "RealTimeHelp1": "Отчёт «Посещения в реальном времени» показывает поток посещений вашего сайта в реальном времени. Он включает счётчик посещений и просмотров страниц в режиме реального времени за последние 24 часа и предыдущие 30 минут.",
+ "RealTimeHelp2": "Этот отчет обновляется каждые 5 секунд и отображает новые посещения (или существующих посетителей, которые просматривают новую страницу) в верхней части списка с эффектом затухания.",
"RealTimeVisitorCount": "Счётчик посетителей в реальном времени",
+ "RealTimeVisitors": "Посещения в реальном времени",
"Referrer_URL": "URL источника",
+ "RevisitedPages": "Просмотры страниц более одного раза",
+ "RowActionTooltipDefault": "Показать журнал посещений, сегментированный по данной строке",
+ "RowActionTooltipTitle": "Открыть сегментированный журнал посещений",
+ "RowActionTooltipWithDimension": "Показать журнал посещений, сегментированный по этому %s",
+ "SegmentedVisitorLogTitle": "Журнал посещений, показывающий посещения, в которых %1$s является «%2$s»",
"ShowMap": "показать карту",
- "ActionsAndDuration": "%1$s действий за %2$s",
"SimpleRealTimeWidget_Message": "%1$s и %2$s за последние %3$s",
- "ViewVisitorProfile": "Посмотреть профиль посетителя",
- "VisitedPages": "Посещённые страницы",
- "RevisitedPages": "Просмотры страниц более одного раза",
"ToggleActions": "Переключить видимость всех действий",
"TopVisitedPages": "Самые посещаемые страницы",
- "VisitsLog": "Журнал посещений",
- "QueryMaxExecutionTimeExceeded": "Выполнение запроса заняло слишком много времени.",
- "QueryMaxExecutionTimeExceededReasonDateRange": "Это может произойти, если выбранный диапазон дат слишком велик. Пожалуйста, попробуйте выбрать меньший диапазон дат.",
- "QueryMaxExecutionTimeExceededReasonSegment": "Это может произойти, если выбранный сегмент не соответствует ни одному посещению. Пожалуйста, попробуйте проверить выбранный сегмент.",
- "QueryMaxExecutionTimeExceededReasonUnknown": "Пожалуйста, попробуйте еще раз. Если это происходит неоднократно, пожалуйста, свяжитесь с администратором или поддержкой.",
+ "ViewVisitorProfile": "Посмотреть профиль посетителя",
+ "VisitSummary": "Провел в общей сложности %1$s%2$s на веб-сайте%3$s и просмотрел %4$s страниц%5$s за %6$s посещений%7$s.",
+ "VisitSummaryWithActionDetails": "Провел в общей сложности%1$s%2$s на веб-сайте%3$s и совершил %4$s действий%5$s (%6$s) за %7$s посещений%8$s.",
+ "VisitedPages": "Посещённые страницы",
"VisitorLog": "Журнал посещений",
"VisitorLogDocumentation": "Эта таблица показывает последние посещения за выбранный период. Вы можете видеть последнее посещение пользователя при наведении мыши на дату посещения. %1$s Если период включает сегодняшний день, вы можете наблюдать за посетителями в реальном времени! %2$s Данные здесь всегда отображаются в режиме реального времени вне зависимости от того, как часто вы используете архивацию по крону.",
+ "VisitorLogNoDataMessagePurged": "Вероятно, данные были очищены, поскольку включено регулярное удаление старых необработанных данных, а дата для этого отчета более %s дней. Суперпользователь может изменить этот параметр, перейдя в Администрирование =&gt; Конфиденциальность.",
+ "VisitorLogSubcategoryHelp1": "Журнал посещений подробно отображает каждое посещение вашего сайта. Вы можете увидеть, какие действия совершил каждый посетитель, как он попал на ваш сайт, немного о том, кто он, и многое другое (при этом соблюдая местные правила конфиденциальности).",
+ "VisitorLogSubcategoryHelp2": "В то время как другие отчеты в Matomo показывают поведение ваших посетителей на агрегированном уровне, журнал посещений предоставляет детальную информацию. Вы также можете использовать сегменты, чтобы сузить его до конкретных типов посещений, чтобы лучше понять ваших посетителей.",
+ "VisitorLogSubcategoryHelp3": "Узнайте больше в руководстве «Журнал посещений».",
"VisitorProfile": "Профиль посетителя",
"VisitorsInRealTime": "Посещения в реальном времени",
"VisitorsLastVisit": "Последнее посещение этого пользователя было %s дней назад.",
"VisitsFrom": "%1$s%2$s визитов%3$s от",
- "VisitSummary": "Провел в общей сложности %1$s%2$s на веб-сайте%3$s и просмотрел %4$s страниц%5$s за %6$s посещений%7$s.",
- "VisitSummaryWithActionDetails": "Провел в общей сложности%1$s%2$s на веб-сайте%3$s и совершил %4$s действий%5$s (%6$s) за %7$s посещений%8$s.",
- "OnClickPause": "%s началось. Нажмите, чтобы приостановить.",
- "OnClickStart": "%s остановлено. Нажмите, чтобы начать."
+ "VisitsLog": "Журнал посещений"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Live/lang/sq.json b/plugins/Live/lang/sq.json
index 182565d234..d09654c021 100644
--- a/plugins/Live/lang/sq.json
+++ b/plugins/Live/lang/sq.json
@@ -1,10 +1,16 @@
{
"Live": {
+ "ActionsAndDuration": "%1$s veprime në %2$s",
"AveragePageGenerationTime": "Për këtë vizitor, çdo faqeje iu desh mesatarisht %1$s të ngarkohej.",
"CalculatedOverNPageViews": "E llogaritur duke përdorur %1$s parjet e fundit të faqeve nga ky vizitor.",
- "ClickToViewMoreAboutVisit": "Klikoni që të shihni më tepër të dhëna rreth kësaj vizite",
+ "ClickToSeeAllContents": "Klikoni që të shihni çdo ndërveprim/përshtypje lënde",
"ClickToViewAllActions": "Klikoni për të parë hollësisht krejt veprimet e këtij grupi",
+ "ClickToViewMoreAboutVisit": "Klikoni që të shihni më tepër të dhëna rreth kësaj vizite",
"ConvertedNGoals": "U shndërruan %s Objektiva",
+ "DisableVisitorProfile": "Çaktivizo vetëm profil vizitori",
+ "DisableVisitorProfileDescription": "Këtu mund të çaktivizoni veçorinë profil vizitori. Krejt veçoritë që lidhen me regjistër vizitash do të vazhdojnë të funksionojnë.",
+ "DisableVisitsLogAndProfile": "Çaktivizo regjistër vizitash &amp; profil vizitori",
+ "DisableVisitsLogAndProfileDescription": "Këtu mund të çaktivizoni veçorinë regjistër vizitash dhe profil vizitori. Kjo do të çaktivizojë gjithashtu veçori që varen në to, bie fjala, regjistër etregtie, regjistër të fragmentuar vizitash, hartën e atypëratyshme ose widget-in ”realtime”. Kjo mund të jetë e domosdoshme për të qenë në pajtim me ligje/udhëzime vendore tuajat mbi privatësinë.",
"FirstVisit": "Vizita e parë",
"GoalType": "Lloj",
"HideMap": "fshihe hartën",
@@ -12,58 +18,52 @@
"LastHours": "%s orët e fundit",
"LastMinutes": "%s minutat e fundit",
"LastVisit": "Vizita e fundit",
- "LinkVisitorLog": "Shihni regjistër të hollësishëm vizitash",
- "LoadMoreVisits": "Ngarko më tepër vizita",
"LimitedSummary": "Të dhënat në këtë profil përmbledhin %1$s vizitat e fundit. Ky përdorues ka bërë më tepër vizita gjithsej.",
"LimitedVisitsShown": "Shfaqen vetëm %1$s vizitat e fundit. Ky përdorues ka bërë më tepër vizita gjithsej.",
- "MorePagesNotDisplayed": "faqe të tjera nga ky vizitor nuk janë shfaqur",
+ "LinkVisitorLog": "Shihni regjistër të hollësishëm vizitash",
+ "LoadMoreVisits": "Ngarko më tepër vizita",
+ "MorePagesNotDisplayed": "nga ky vizitor s’janë shfaqur faqe të tjera",
"NbVisitor": "1 vizitor",
"NbVisitors": "%s vizitorë",
"NextVisitor": "Vizitori pasues",
"NoMoreVisits": "S’ka më vizita për këtë vizitor.",
- "PageRefreshed": "Sa herë rresht është parë \/ rifreskuar kjo faqe.",
- "PluginDescription": "Furnizon Regjistër Vizitorësh live dhe ju lejon të shihni vizitorët drejtpërsëdrejti, te widget-i real-time i pultit . Shtojca ju lejon gjithashtu të shihni profil Vizitori për cilindo përdorues.",
+ "OnClickPause": "%s është nisur. Klikoni që të ndalet.",
+ "OnClickStart": "%s është ndalur. Klikoni që të niset.",
+ "PageRefreshed": "Sa herë rresht është parë / rifreskuar kjo faqe.",
+ "PluginDescription": "Furnizon Regjistër Vizitorësh live dhe ju lejon të shihni vizitorët drejtpërsëdrejti, te widget-i “real-time” i pultit . Shtojca ju lejon gjithashtu të shihni profil Vizitori për cilindo përdorues.",
"PreviousVisitor": "Vizitori i mëparshëm",
- "RealTimeVisitors": "Vizita në Kohë Reale",
- "RealTimeVisitorCount": "Numërim Vizitorësh i Atypëratyshëm",
- "Referrer_URL": "URL Sjellësi",
- "ShowMap": "shfaq hartën",
- "ActionsAndDuration": "%1$s veprime në %2$s",
- "SimpleRealTimeWidget_Message": "%1$s dhe %2$s në %3$s e fundit",
- "ViewVisitorProfile": "Shini profilin e vizitorit",
- "DisableVisitorProfile": "Çaktivizo vetëm profil vizitori",
- "DisableVisitorProfileDescription": "Këtu mund të çaktivizoni veçorinë profil vizitori. Krejt veçoritë që lidhen me regjistër vizitash do të vazhdojnë të funksionojnë.",
- "VisitedPages": "Faqe të vizituara",
- "RevisitedPages": "Faqe të para më shumë se një herë",
- "ToggleActions": "Aktivizo\/çaktivizo dukshmërinë e krejt veprimeve",
- "TopVisitedPages": "Faqet kryesuese të vizituara",
- "VisitsLog": "Regjistër Vizitash",
- "DisableVisitsLogAndProfile": "Çaktivizo regjistër vizitash & profil vizitori",
- "DisableVisitsLogAndProfileDescription": "Këtu mund të çaktivizoni veçorinë regjistër vizitash dhe profil vizitori. Kjo do të çaktivizojë gjithashtu veçori që varen në to, bie fjala, regjistër etregtie, regjistër të fragmentuar vizitash, hartën e atypëratyshme ose widget-in ”realtime”. Kjo mund të jetë e domosdoshme për të qenë në pajtueshmëri me ligje\/udhëzime tuaja vendore mbi privatësinë.",
"QueryMaxExecutionTimeExceeded": "Ekzekutimi i kërkesës zgjati shumë.",
"QueryMaxExecutionTimeExceededReasonDateRange": "Kjo mund të ndodhë nëse intervali i përzgjedhur i datave është shumë i madh. Ju lutemi, provoni të përzgjidhni një interval më të vogël të dhënash.",
"QueryMaxExecutionTimeExceededReasonSegment": "Kjo mund të ndodhë nëse me intervalin e përzgjedhur s’ka përputhje ndonjë vizitë. Ju lutemi, provoni të kontrolloni intervalin tuaj të përzgjedhur.",
"QueryMaxExecutionTimeExceededReasonUnknown": "Ju lutemi, riprovoni. Nëse ndodh në mënyrë të përsëritur, ju lutemi, lidhuni me përgjegjësin ose me ata të asistencës.",
- "VisitorLog": "Regjistër Vizitash",
- "VisitorLogDocumentation": "Kjo tabelë tregon vizitat e fundit brenda intervalit kohor të përzgjedhur. Se kur u bë vizita e fundit nga një vizitor, mund ta shihni duke kaluar kursorin përsipër datës së një vizite. %1$s Nëse intervali kohor e përfshin ditën e sotme, mund t’i shihni vizitorët aty për aty! %2$s Të dhënat e shfaqura këtu janë përherë më të rejat, pavarësisht nëse e përdorni apo jo, dhe se sa shpesh, funksionin cron për arkivim.",
- "VisitorLogNoDataMessagePurged": "Ka mundësi që të dhënat të jenë spastruar ngaqë fshirja e rregullt është aktive dhe data për këtë raport është më e vjetër se %s ditë. Këtë rregullim mund ta ndryshojë një superpërdorues, duke shkuar te Administrim => Privatësi.",
- "VisitorProfile": "Profil vizitori",
- "VisitorsInRealTime": "Vizita në Kohë Reale",
- "VisitorsLastVisit": "Vizita e fundit e këtij vizitori ndodhi %s ditë më parë.",
- "VisitsFrom": "%1$s%2$s vizita%3$s nga",
- "VisitSummary": "Shpenzoi gjithsej %1$s%2$s në sajtin%3$s, dhe pa %4$s faqe%5$s gjatë %6$s vizitash%7$s.",
- "VisitSummaryWithActionDetails": "Shpenzoi gjithsej %1$s%2$s në sajtin%3$s, dhe kreu %4$s veprime%5$s (%6$s) gjatë %7$s vizitash%8$s.",
+ "RealTimeHelp1": "Raporti “Vizita Aty për Aty” shfaq aty për aty rrjedhën e vizitave në sajtin tuaj. Përmban një numërator të atypëratyshëm të vizitave dhe parjeve të faqeve tuaja për 24 orët e fundit dhe për 30 minutat e mëparshme.",
+ "RealTimeHelp2": "Ky raport rifreskohet çdo 5 sekonda dhe shfaq vizita të reja (ose vizitorë ekzistues që shohin një faqe të re) në krye të listës, me një efekt zbehjeje.",
+ "RealTimeVisitorCount": "Numërim i Atypëratyshëm Vizitorësh",
+ "RealTimeVisitors": "Vizita Aty Për Aty",
+ "Referrer_URL": "URL Sjellësi",
+ "RevisitedPages": "Faqe të para më shumë se një herë",
"RowActionTooltipDefault": "Shfaqe Regjistrin e Vizitave të fragmentuar sipas këtij rreshti",
- "RowActionTooltipWithDimension": "Shfaqe Regjistrin e Vizitave të fragmentuar sipas këtij %s",
"RowActionTooltipTitle": "Hap Regjistër të fragmentuar Vizitash",
- "SegmentedVisitorLogTitle": "Regjistër Vizitash që shfaq vizita ku %1$s është \"%2$s\"",
- "OnClickPause": "%s është nisur. Klikoni që të ndalet.",
- "OnClickStart": "%s është ndalur. Klikoni që të niset.",
- "ClickToSeeAllContents": "Klikoni që të shihni çdo ndërveprim\/përshtypje lënde",
- "VisitorLogSubcategoryHelp1": "Regjistri i Vizitave ju shfaq hollësisht çdo vizitë që i vjen sajtit. Mund të shihni ç’veprime ka ndërmarrë çdo vizitor, se erdhën te sajti juaj, diçka rreth se cilët janë, etj (teksa jeni ende në pajtim me rregulloret vendore mbi privatësinë).",
+ "RowActionTooltipWithDimension": "Shfaqe Regjistrin e Vizitave të fragmentuar sipas këtij %s",
+ "SegmentedVisitorLogTitle": "Regjistër Vizitash që shfaq vizita ku %1$s është “%2$s”",
+ "ShowMap": "shfaq hartën",
+ "SimpleRealTimeWidget_Message": "%1$s dhe %2$s në %3$s e fundit",
+ "ToggleActions": "Aktivizo/çaktivizo dukshmërinë e krejt veprimeve",
+ "TopVisitedPages": "Faqet kryesuese të vizituara",
+ "ViewVisitorProfile": "Shihni profilin e vizitorit",
+ "VisitSummary": "Shpenzoi gjithsej %1$s%2$s në sajtin%3$s dhe pa %4$s faqe%5$s gjatë %6$s vizitash%7$s.",
+ "VisitSummaryWithActionDetails": "Shpenzoi gjithsej %1$s%2$s në sajtin%3$s, dhe kreu %4$s veprime%5$s (%6$s) gjatë %7$s vizitash%8$s.",
+ "VisitedPages": "Faqe të vizituara",
+ "VisitorLog": "Regjistër Vizitash",
+ "VisitorLogDocumentation": "Kjo tabelë tregon vizitat e fundit brenda intervalit kohor të përzgjedhur. Se kur u bë vizita e fundit nga një vizitor, mund ta shihni duke kaluar kursorin përsipër datës së një vizite. %1$s Nëse intervali kohor e përfshin ditën e sotme, mund t’i shihni vizitorët aty për aty! %2$s Të dhënat e shfaqura këtu janë përherë më të rejat, pavarësisht nëse e përdorni apo jo dhe se sa shpesh, funksionin cron për arkivim.",
+ "VisitorLogNoDataMessagePurged": "Ka mundësi që të dhënat të jenë spastruar ngaqë është aktive fshirja e rregullt e të dhënave të vjetra të papërpunuara dhe data për këtë raport është më e vjetër se %s ditë. Këtë rregullim mund ta ndryshojë një superpërdorues, duke kaluar te Administrim =&gt; Privatësi.",
+ "VisitorLogSubcategoryHelp1": "Regjistri i Vizitave ju shfaq hollësisht çdo vizitë që i vjen sajtit. Mund të shihni ç’veprime ka ndërmarrë çdo vizitor, si erdhën te sajti juaj, diçka rreth se cilët janë, etj (teksa jeni ende në pajtim me rregulloret vendore tuajat mbi privatësinë).",
"VisitorLogSubcategoryHelp2": "Teksa raporte të tjerë në Matomo tregojnë se si sillen vizitorët, parë si tërësi, Regjistri i Vizitave furnizon hollësi të imta. Mund të përdorni edhe segmente, për ta ngushtuar punën për lloje specifike vizitash, për të kuptuar më mirë vizitorët tuaj.",
"VisitorLogSubcategoryHelp3": "Mësoni më tepër, te udhërrëfyesi për Regjistër Vizitash.",
- "RealTimeHelp1": "Raporti Vizita Aty për Aty shfaq aty për aty rrjedhën e vizitave në sajtin tuaj. Përmban një numërator të atypëratyshëm të vizitave dhe parjeve të faqeve tuaja për 24 orët e fundit dhe për 30 minutat e mëparshme.",
- "RealTimeHelp2": "Ky raport rifreskohet çdo 5 sekonda dhe shfaq vizita të reja (ose vizitorë ekzistues që shohin një faqe të re) në krye të listës, me një efekt zbehjeje."
+ "VisitorProfile": "Profil vizitori",
+ "VisitorsInRealTime": "Vizita Aty Për Aty",
+ "VisitorsLastVisit": "Vizita e fundit e këtij vizitori ndodhi %s ditë më parë.",
+ "VisitsFrom": "%1$s%2$s vizita%3$s nga",
+ "VisitsLog": "Regjistër Vizitash"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Live/templates/_totalVisitors.twig b/plugins/Live/templates/_totalVisitors.twig
index 665617e926..70e37b3c77 100644
--- a/plugins/Live/templates/_totalVisitors.twig
+++ b/plugins/Live/templates/_totalVisitors.twig
@@ -16,13 +16,13 @@
<tbody>
<tr class="">
<td class="label column">{{ 'Live_LastHours'|translate(24) }}</td>
- <td class="column">{{ visitorsCountToday|number }}</td>
- <td class="column">{{ pisToday|number }}</td>
+ <td class="column" {% if countErrorToday %}title="{{ countErrorToday|e('html_attr') }}"{% endif %}>{{ visitorsCountToday|number }}</td>
+ <td class="column" {% if countErrorToday %}title="{{ countErrorToday|e('html_attr') }}"{% endif %}>{{ pisToday|number }}</td>
</tr>
<tr class="">
<td class="label column">{{ 'Live_LastMinutes'|translate(30) }}</td>
- <td class="column">{{ visitorsCountHalfHour|number }}</td>
- <td class="column">{{ pisHalfhour|number }}</td>
+ <td class="column" {% if countErrorHalfHour %}title="{{ countErrorHalfHour|e('html_attr') }}"{% endif %}>{{ visitorsCountHalfHour|number }}</td>
+ <td class="column" {% if countErrorHalfHour %}title="{{ countErrorHalfHour|e('html_attr') }}"{% endif %}>{{ pisHalfhour|number }}</td>
</tr>
</tbody>
</table>
diff --git a/plugins/Live/templates/getSimpleLastVisitCount.twig b/plugins/Live/templates/getSimpleLastVisitCount.twig
index 8f167544eb..3d4fd53600 100644
--- a/plugins/Live/templates/getSimpleLastVisitCount.twig
+++ b/plugins/Live/templates/getSimpleLastVisitCount.twig
@@ -3,6 +3,7 @@
<div>{{ visitors }}</div>
</div>
<br/>
+ {% if error is not empty %}<div class="alert alert-danger">{{ error }}</div>{% endif %}
<div class='simple-realtime-elaboration'>
{% set visitsMessage %}
@@ -18,4 +19,4 @@
{{ 'Live_SimpleRealTimeWidget_Message'|translate(visitsMessage,actionsMessage,minutesMessage) | raw }}
</div>
</div>
-<script type="text/javascript">$(document).ready(function () {require('piwik/Live').initSimpleRealtimeVisitorWidget();});</script> \ No newline at end of file
+<script type="text/javascript">$(document).ready(function () {require('piwik/Live').initSimpleRealtimeVisitorWidget();});</script>
diff --git a/plugins/Live/tests/Integration/ModelTest.php b/plugins/Live/tests/Integration/ModelTest.php
index 6f883e1937..cbd182c6a4 100644
--- a/plugins/Live/tests/Integration/ModelTest.php
+++ b/plugins/Live/tests/Integration/ModelTest.php
@@ -18,6 +18,7 @@ use Piwik\Plugins\Live\Model;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Integration\SegmentTest;
/**
@@ -118,6 +119,39 @@ class ModelTest extends IntegrationTestCase
Model::handleMaxExecutionTimeError($db, $e, $segment, $dateStart, $dateEnd, $minTimestamp, $limit, ['param' => 'value']);
}
+ public function test_getLastMinutesCounterForQuery_maxExecutionTime()
+ {
+ if (SystemTestCase::isMysqli()) {
+ $this->markTestSkipped('max_execution_time not supported on mysqli');
+ return;
+ }
+ $this->expectException(MaxExecutionTimeExceededException::class);
+ $this->expectExceptionMessage('Live_QueryMaxExecutionTimeExceeded');
+ $this->setLowestMaxExecutionTime();
+
+ $this->trackPageView();
+
+ $model = new Model();
+ $model->queryAndWhereSleepTestsOnly = true;
+ $model->getNumVisits(1, 999999, '');
+ }
+
+ public function test_queryAdjacentVisitorId_maxExecutionTime()
+ {
+ if (SystemTestCase::isMysqli()) {
+ $this->markTestSkipped('max_execution_time not supported on mysqli');
+ return;
+ }
+ $this->expectException(MaxExecutionTimeExceededException::class);
+ $this->expectExceptionMessage('Live_QueryMaxExecutionTimeExceeded');
+ $this->setLowestMaxExecutionTime();
+
+ $this->trackPageView();
+ $model = new Model();
+ $model->queryAndWhereSleepTestsOnly = true;
+ $model->queryAdjacentVisitorId(1, '1234567812345678', Date::yesterday()->getDatetime(), '', true);
+ }
+
public function test_getStandAndEndDate()
{
$model = new Model();
@@ -316,10 +350,7 @@ class ModelTest extends IntegrationTestCase
public function test_makeLogVisitsQueryString_addsMaxExecutionHintIfConfigured()
{
- $config = Config::getInstance();
- $general = $config->General;
- $general['live_query_max_execution_time'] = 30;
- $config->General = $general;
+ $this->setMaxExecutionTime(30);
$model = new Model();
list($dateStart, $dateEnd) = $model->getStartAndEndDate($idSite = 1, 'month', '2010-01-01');
@@ -337,18 +368,14 @@ class ModelTest extends IntegrationTestCase
$expectedSql = 'SELECT /*+ MAX_EXECUTION_TIME(30000) */
log_visit.*';
- $general['live_query_max_execution_time'] = -1;
- $config->General = $general;
+ $this->setMaxExecutionTime(-1);
$this->assertStringStartsWith($expectedSql, trim($sql));
}
public function test_makeLogVisitsQueryString_doesNotAddsMaxExecutionHintForVisitorIds()
{
- $config = Config::getInstance();
- $general = $config->General;
- $general['live_query_max_execution_time'] = 30;
- $config->General = $general;
+ $this->setMaxExecutionTime(30);
$model = new Model();
list($dateStart, $dateEnd) = $model->getStartAndEndDate($idSite = 1, 'month', '2010-01-01');
@@ -366,8 +393,7 @@ class ModelTest extends IntegrationTestCase
$expectedSql = 'SELECT
log_visit.*';
- $general['live_query_max_execution_time'] = -1;
- $config->General = $general;
+ $this->setMaxExecutionTime(-1);
$this->assertStringStartsWith($expectedSql, trim($sql));
}
@@ -502,4 +528,27 @@ class ModelTest extends IntegrationTestCase
'Piwik\Access' => new FakeAccess()
);
}
-} \ No newline at end of file
+
+ private function setLowestMaxExecutionTime(): void
+ {
+ $this->setMaxExecutionTime(0.001);
+ }
+
+ private function setMaxExecutionTime($time): void
+ {
+ $config = Config::getInstance();
+ $general = $config->General;
+ $general['live_query_max_execution_time'] = $time;
+ $config->General = $general;
+ }
+
+ private function trackPageView(): void
+ {
+ // Needed for the tests that may execute a sleep() to test max execution time. Otherwise if the table is empty
+ // the sleep would not be executed making the tests fail randomly
+ $t = Fixture::getTracker(1, Date::now()->getDatetime(), $defaultInit = true);
+ $t->setTokenAuth(Fixture::getTokenAuth());
+ $t->setVisitorId(substr(sha1('X4F66G776HGI'), 0, 16));
+ $t->doTrackPageView('foo');
+ }
+}
diff --git a/plugins/Live/tests/System/ApiCounterTest.php b/plugins/Live/tests/System/ApiCounterTest.php
index 730187a6e2..5c81d0260e 100644
--- a/plugins/Live/tests/System/ApiCounterTest.php
+++ b/plugins/Live/tests/System/ApiCounterTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Live\tests\System;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\Goals\API as GoalsApi;
use Piwik\Plugins\Live\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log.png
index a537679801..50df586b6f 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:96d72c04beddc6d08cd7c1573e7c3c91f0fec4c65e38127a27b7dbfea0e62150
-size 390945
+oid sha256:6991075edc92e97224ab80e64c3ef2d1c8d5062be2a0305fee4adba53ba9f34d
+size 390942
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_actions.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_actions.png
index 694d42dac0..331fe6c215 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_actions.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_actions.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5ceb9f98b14d9311758bc4dcdde566352850767c6d119d44f90f5e9387280659
-size 54148
+oid sha256:9e0024a43b3a5538a774e017d32d51a1c388e4f868b164fb8a9e13acd44eeaac
+size 54144
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_content_actions.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_content_actions.png
index 701c3d9152..91d37686c5 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_content_actions.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_content_actions.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d9bd76f258af9a88e0cf58090d49593d5e4328d4c788d1e94d19a61d70d7797e
-size 39886
+oid sha256:415105044c903850d52104d090e254fb0b200eadaf0e35a97024420742da1f84
+size 39884
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_pageview_actions.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_pageview_actions.png
index c795530e4c..ca2246a3c5 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_pageview_actions.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_expand_pageview_actions.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:26b8c4f0871962b4341a30312dbbc4dcdb1a76c6fbf1b6c9099150a081a2158d
-size 104093
+oid sha256:7077006b8d2b8d8398e4426e14e584b1ad62facf1c6d37d0c7f9ebe9a6a9a0b9
+size 104086
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_page_next.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_page_next.png
index 5b537c0bc2..d01471b2a4 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_page_next.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_log_page_next.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:26b1c6de6eedeaee8757faca38b54a0af4d879091522807ee911c645c0fb0f11
-size 47896
+oid sha256:740b6d3b729a04433a7666f6f77339be4e7e199ebbf38d02bed6ebff6fac1741
+size 47903
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile.png
index 0a87e45e13..de766e7b08 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f2bf8381a4dc8b02d9a90182c4780021d0dfd50bf123805a029311f5d327b3d6
-size 427940
+oid sha256:ceea0fc6b0635bb2a015546c197d4788313325825fc7ad760a052be5cf79dbb2
+size 427936
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_action_details.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_action_details.png
index bbdb962a97..c464013968 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_action_details.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_action_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:76cb9e7bd015dd398addb99db083a58d16276f608f04f2ef5d6a5a2760b9fd0a
-size 301114
+oid sha256:eff6994356ae945258f9acadabf27ab8b3a0cc8afa4688bd96fc44cac0cdbf58
+size 301108
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_actions_hidden.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_actions_hidden.png
index 4bc4a0b924..522639c829 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_actions_hidden.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_actions_hidden.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0d80b43d87d3b6a8b2fcdcb2150ee4c24715c3d893f1df4e410cec58fddfcdda
-size 263689
+oid sha256:3bffc5b302e94213c4627fa7c960e2fc0116c16212b83aeaaf41e9be9f92ee5f
+size 263702
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_limited.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_limited.png
index b7d4a7e7e7..2efa9bfc30 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_limited.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_limited.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:823ed4c0d4dbc06e83a92f053fa51a743fa1ca3731cd0e7ffff157fc856e75d9
-size 316178
+oid sha256:c51b51b8259f877085051b73f0eba5adea8844e4df71f98b678c84e4ceb85aa0
+size 316169
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_more_visits.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_more_visits.png
index 989e3979dd..9b63e38303 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_more_visits.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_more_visits.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0e5605052b14493fbbe028ac35bcd9077892e533ecdf94e2fd9311da671582f4
-size 454424
+oid sha256:29c1ac44f55a825abe2fa4c7711d85588a9f964d17ba56224fa50ac548536f52
+size 454421
diff --git a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_visit_details.png b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_visit_details.png
index af0f28ddda..ddf446840d 100644
--- a/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_visit_details.png
+++ b/plugins/Live/tests/UI/expected-screenshots/Live_visitor_profile_visit_details.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:66aa460a5ae683667f61d9bb3933042b29c0137915e556754eb3a50092c99f3e
-size 274883
+oid sha256:85ca17fdc186d913d21fe38f65a4e0c08f192b9c6dc9ba1aa37d64b71da8c626
+size 274871
diff --git a/plugins/LogViewer b/plugins/LogViewer
-Subproject 495e5651274520a08f14a096a4d409c722c2fb2
+Subproject 7ff68a3c71d4720c2816d701a0939f2bd5eee78
diff --git a/plugins/Login/Commands/UnblockBlockedIps.php b/plugins/Login/Commands/UnblockBlockedIps.php
index d736f2fb99..de781b4ea3 100644
--- a/plugins/Login/Commands/UnblockBlockedIps.php
+++ b/plugins/Login/Commands/UnblockBlockedIps.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Login\Commands;
use Piwik\API\Request;
use Piwik\Piwik;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\Login\API;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/Login/Controller.php b/plugins/Login/Controller.php
index b13f3f8231..fff60e74d7 100644
--- a/plugins/Login/Controller.php
+++ b/plugins/Login/Controller.php
@@ -9,18 +9,14 @@
namespace Piwik\Plugins\Login;
use Exception;
-use Piwik\Access;
-use Piwik\Auth\Password;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Date;
use Piwik\Log;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\Login\Security\BruteForceDetection;
use Piwik\Plugins\UsersManager\Model AS UsersModel;
-use Piwik\Plugins\UsersManager\UserUpdater;
use Piwik\QuickForm2;
use Piwik\Session;
use Piwik\Url;
diff --git a/plugins/Login/Security/BruteForceDetection.php b/plugins/Login/Security/BruteForceDetection.php
index ab94491d78..8ada5e9204 100644
--- a/plugins/Login/Security/BruteForceDetection.php
+++ b/plugins/Login/Security/BruteForceDetection.php
@@ -12,12 +12,10 @@ use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Option;
use Piwik\Plugins\Login\Emails\SuspiciousLoginAttemptsInLastHourEmail;
use Piwik\Plugins\Login\Model;
use Piwik\Plugins\Login\SystemSettings;
use Piwik\Updater;
-use Piwik\Version;
use Psr\Log\LoggerInterface;
class BruteForceDetection {
diff --git a/plugins/Login/SessionInitializer.php b/plugins/Login/SessionInitializer.php
index 64d24d177a..03fee42603 100644
--- a/plugins/Login/SessionInitializer.php
+++ b/plugins/Login/SessionInitializer.php
@@ -13,8 +13,6 @@ use Piwik\Auth as AuthInterface;
use Piwik\AuthResult;
use Piwik\Config;
use Piwik\Cookie;
-use Piwik\Db;
-use Piwik\Log;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
use Piwik\ProxyHttp;
diff --git a/plugins/Login/lang/ca.json b/plugins/Login/lang/ca.json
index 1433545fad..dbcffa6ccd 100644
--- a/plugins/Login/lang/ca.json
+++ b/plugins/Login/lang/ca.json
@@ -1,17 +1,59 @@
{
"Login": {
- "ConfirmationLinkSent": "S'ha enviat un enllaç de confirmació a la vostra bústia d'entrada. Reviseu el vostre correu electrònic i visiteu l'enllaç per autoritzar la sol·licitud de canvi de password.",
- "ExceptionInvalidSuperUserAccessAuthenticationMethod": "No es pot autentificar mitjançant el mecanisme '%s' un usuari amb accessos de super usuari.",
+ "BruteForceLog": "Registre de força bruta",
+ "ChangeYourPassword": "Canvia la teva contrasenya",
+ "ConfirmPasswordReset": "Confirmeu el restabliment de la contrasenya",
+ "ConfirmPasswordResetIntro": "Per confirmar que realment sou vos qui heu sol·licitat aquest canvi de contrasenya, torneu a introduir la vostra nova contrasenya.",
+ "ConfirmPasswordResetWrongPassword": "La contrasenya introduïda no coincideix amb la vostra nova contrasenya. Si no recordeu la contrasenya que acabeu de triar, podeu restablir-la de nou. Si no heu sol·licitat el canvi de contrasenya, simplement no feu res i la vostra contrasenya no canviarà.",
+ "ConfirmPasswordToContinue": "Confirmeu la vostra contrasenya per continuar",
+ "ConfirmationLinkSent": "S'ha enviat un enllaç de confirmació a la vostra safata d'entrada. Comproveu el vostre correu electrònic i visiteu aquest enllaç per autoritzar la vostra sol·licitud de canvi de contrasenya.",
+ "ContactAdmin": "Possible motiu: potser el vostre amfitrió hagi desactivat la funció mail(). <br>Contacteu amb el vostre administrador de Matomo.",
+ "CurrentlyBlockedIPs": "IP bloquejades actualment",
+ "CurrentlyBlockedIPsUnblockConfirm": "Confirma que vol desbloquejar totes les IP bloquejades actualment?",
+ "CurrentlyBlockedIPsUnblockInfo": "Podeu desbloquejar les IP que estan bloquejades actualment, de manera que puguin tornar a iniciar sessió en cas que s'hagin marcat falsament i hagin de poder iniciar sessió de nou.",
+ "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Un usuari amb accés de superusuari no es pot autenticar mitjançant el mecanisme '%s'.",
"ExceptionPasswordMD5HashExpected": "El paràmetre contrasenya hauria de ser un hash MD5 de la contrasenya.",
- "InvalidOrExpiredToken": "El codi és invàlid o ha caducat",
- "InvalidUsernameEmail": "Aquest usuari i/o direcció de correu-e és invàlid.",
+ "HelpIpRange": "Introduïu una adreça IP o un rang d'IP per línia. Podeu utilitzar la notació CIDR, per exemple %1$s o podeu utilitzar comodins, p. ex. %2$s o %3$s",
+ "IPsAlwaysBlocked": "Aquestes IP sempre estan bloquejades",
+ "InvalidNonceOrigin": "La seguretat del formulari ha fallat, origen no vàlid. Si us heu connectat prèviament mitjançant https, assegureu-vos que us esteu connectant mitjançant una connexió segura (SSL/TLS) i torneu-ho a provar.",
+ "InvalidNonceReferrer": "La seguretat del formulari ha fallat, la capçalera de referent no és vàlida. Si utilitzeu un servidor intermediari, heu de %1$s configurar Matomo perquè accepti la capçalera del servidor intermediari %2$s que reenvia la capçalera de l'hoste. A més, comproveu que la vostra capçalera de referent s'enviï correctament i, si us heu connectat prèviament mitjançant https, assegureu-vos que us esteu connectant mitjançant una connexió segura (SSL/TLS) i torneu-ho a provar.",
+ "InvalidNonceSSLMisconfigured": "A més, podeu %1$s obligar a Matomo a utilitzar una connexió segura%2$s: al vostre fitxer de configuració %3$s establiu %4$s a la secció %5$s",
+ "InvalidNonceToken": "S'ha produït un error en la seguretat del formulari, coincidència de falta de testimoni. Torneu a carregar el formulari i comproveu que les vostres galetes estiguin habilitades.",
+ "InvalidNonceUnexpectedReferrer": "La seguretat del formulari ha fallat, la capçalera de referent és diferent de la capçalera de referent esperada, comproveu que la capçalera de referent s'enviï correctament.",
+ "InvalidOrExpiredToken": "El testimoni no és vàlid o ha caducat.",
+ "InvalidUsernameEmail": "Nom d'usuari o adreça de correu electrònic no vàlids.",
"LogIn": "Inicia la sessió",
- "LoginPasswordNotCorrect": "L'usuari o la contrasenya no són correctes",
+ "LoginNotAllowedBecauseBlocked": "Actualment no teniu permís per iniciar sessió perquè heu tingut massa inicis de sessió fallits, torneu-ho a provar més tard.",
+ "LoginNotAllowedBecauseUserLoginBlocked": "La funcionalitat d'inici de sessió està desactivada temporalment perquè hem detectat una quantitat sospitosa d'intents d'inici de sessió fallits durant l'última hora.",
+ "LoginOrEmail": "Nom d'usuari o correu electrònic",
+ "LoginPasswordNotCorrect": "Combinació incorrecta de nom d'usuari i contrasenya.",
"LostYourPassword": "Heu perdut la contrasenya?",
+ "MailPasswordChangeBody2": "Bones %1$s,\n\nS'ha rebut una sol·licitud de restabliment de la contrasenya de %2$s. Per confirmar aquest canvi de contrasenya perquè pugueu iniciar sessió amb les vostres noves credencials, copieu i enganxeu l'enllaç següent al vostre navegador:\n\n%3$s\n\nNota: aquest enllaç caducarà en 24 hores.\n\nI gràcies per utilitzar Matomo!",
"MailTopicPasswordChange": "Confirmeu el canvi de contrasenya",
- "PasswordChanged": "S'ha canviat la vostra contrasenya",
+ "NewPassword": "Nova contrasenya",
+ "NewPasswordRepeat": "Contrasenya nova (un altre cop)",
+ "NotAllowListTakesPrecendence": "Si una IP coincideix a la llista de bloqueig i a la llista de no bloquejar, aleshores la llista de bloqueig té prioritat i la IP no s'autoritzaria.",
+ "PasswordChanged": "S'ha canviat la vostra contrasenya.",
"PasswordRepeat": "Contrasenya (torneu-la a escriure)",
- "PasswordsDoNotMatch": "Les contrasenyes no coincideixen",
- "RememberMe": "Recorda'm"
+ "PasswordResetAlreadySent": "Heu sol·licitat massa restabliments de contrasenya recentment. Es pot fer una nova sol·licitud en una hora. Si teniu problemes per restablir la contrasenya, poseu-vos en contacte amb el vostre administrador per obtenir ajuda.",
+ "PasswordsDoNotMatch": "Les contrasenyes no coincideixen.",
+ "PluginDescription": "Proporciona autenticació mitjançant nom d'usuari i contrasenya, així com la funcionalitat de restabliment de la contrasenya. El mètode d'autenticació es pot canviar mitjançant un altre connector d'inici de sessió, com ara LoginLdap, disponible al Marketplace.",
+ "RememberMe": "Recorda'm",
+ "SettingBruteForceBlacklistIp": "Bloquegeu sempre que aquestes IP puguin iniciar sessió",
+ "SettingBruteForceEnable": "Activa la detecció de força bruta",
+ "SettingBruteForceEnableHelp": "La detecció de força bruta és una característica de seguretat important que s'utilitza per protegir les vostres dades de l'accés no autoritzat. En lloc de permetre a qualsevol usuari provar milers o milions de combinacions de contrasenyes en molt poc temps, només permetrà una quantitat específica d'inicis de sessió fallits en un curt període de temps. Si es produeixen massa inicis de sessió fallits en aquest interval de temps, l'usuari no podrà iniciar sessió fins que hagi passat un temps. Tingueu en compte que si es bloqueja una IP, també es bloquejarà la sessió a tots els usuaris que utilitzin aquesta IP.",
+ "SettingBruteForceMaxFailedLogins": "Nombre de reintents d'inici de sessió permesos dins de l'interval de temps",
+ "SettingBruteForceMaxFailedLoginsHelp": "Si s'enregistren més d'aquest nombre d'inicis de sessió fallits dins de l'interval de temps configurat a continuació, bloquegeu la IP.",
+ "SettingBruteForceTimeRange": "Compteu els intents d'inici de sessió dins d'aquest interval de temps en minuts",
+ "SettingBruteForceTimeRangeHelp": "Introduïu un número en minuts.",
+ "SettingBruteForceWhitelistIp": "No bloquegeu mai que aquestes IP iniciïn sessió",
+ "SuspiciousLoginAttemptsInLastHourEmail1": "Hem observat un nombre sospitós d'intents d'inici de sessió al vostre compte de Matomo durant l'última hora, concretament %1$s intents d'inici de sessió des de %2$s adreces IP diferents. Sospitem que algú pot estar intentant entrar al vostre compte.",
+ "SuspiciousLoginAttemptsInLastHourEmail2": "Per tal de protegir el vostre Matomo, us recomanem que preneu les precaucions següents:",
+ "SuspiciousLoginAttemptsInLastHourEmail3": "Assegureu-vos que la vostra contrasenya sigui una contrasenya segura i aleatòria de longitud adequada (per exemple, com a mínim 30 caràcters).",
+ "SuspiciousLoginAttemptsInLastHourEmail4": "Configura l'autenticació de dos factors perquè els atacants necessitin més informació que la vostra contrasenya per iniciar sessió.",
+ "SuspiciousLoginAttemptsInLastHourEmail5": "A més, si el vostre Matomo té un conjunt limitat d'usuaris o IP a través dels quals els usuaris hi accediran, pot ser beneficiós configurar una llista d'adreces IP. %1$sLlegiu els nostres documents per obtenir més informació.%2$s",
+ "SuspiciousLoginAttemptsInLastHourEmailSubject": "Hem detectat alguns intents d'inici de sessió sospitosos al vostre compte...",
+ "UnblockAllIPs": "Desbloqueja totes les IP bloquejades actualment",
+ "WrongPasswordEntered": "Introduïu la vostra contrasenya correcta."
}
}
diff --git a/plugins/Login/lang/nb.json b/plugins/Login/lang/nb.json
index 6d41cca53b..c7df890197 100644
--- a/plugins/Login/lang/nb.json
+++ b/plugins/Login/lang/nb.json
@@ -8,25 +8,33 @@
"ConfirmationLinkSent": "En bekreftelseslenke har blitt sendt til din innboks. Sjekk din e-post og besøk denne lenken for å autorisere din forespørsel om å endre passord.",
"ContactAdmin": "Mulig grunn: Din vert kan ha skrudd av mail()-funksjonen.<br>Kontakt din Matomo-administrator",
"CurrentlyBlockedIPs": "IP-er som blokkeres",
+ "CurrentlyBlockedIPsUnblockConfirm": "Avblokker alle blokkerte IP-adresser?",
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "En bruker med superbrukertilgang kan ikke autentiseres med «%s»-mekanismen.",
"ExceptionPasswordMD5HashExpected": "Passordparameteret er forventet å være en MD5-hash av passordet.",
+ "HelpIpRange": "Skriv inn én IP-adresse eller ett IP-tallfølge per linje. Du kan bruke CIDR-notasjon, f.eks. %1$s eller du kan bruke jokertegn, f.eks. %2$s eller %3$s",
"IPsAlwaysBlocked": "Disse IP-ene blokkeres alltid",
+ "InvalidNonceOrigin": "Skjemasikkerhet mislyktes som følge av ugyldig opphav. Hvis du tidligere koblet til med HTTPS, forsikre deg om at du kobler til over en sikker (SSL/TLS-) tilkobling og prøv igjen.",
+ "InvalidNonceReferrer": "Skjemasikkerhet mislyktes. Ugyldig hode-refenrent. Hvis du bruker en mellomtjener, må du %1$ssette opp Matomo til å godta mellomtjener-hodet%2$s som videresender vertshodet. Sjekk også at referent-hodet sendes riktig, og at du kobler til over en sikker tilkobling (SSL/TLS) og prøver igjen hvis du tidligere koblet til over HTTPS.",
"InvalidNonceSSLMisconfigured": "I tillegg kan du %1$s tvinge Matomo til å bruke en sikker tilkobling%2$s: i din config-fil %3$s sett %4$s under seksjonen %5$s",
+ "InvalidNonceToken": "Skjemasikkerhet mislyktes fordi symbolene ikke samsvarer. Last inn skjemaet igjen og sjekk at informasjonskapslene dine er skrudd på.",
"InvalidOrExpiredToken": "Autentiseringsnøkkelen er ugyldig eller har utløpt.",
"InvalidUsernameEmail": "Feil brukernavn og/eller epost-adresse.",
"LogIn": "Logg inn",
+ "LoginNotAllowedBecauseBlocked": "Du tillates ikke å logge inn for tiden, siden du har for mange mislykkede innlogginger. Prøv igjen senere.",
"LoginOrEmail": "Brukernavn eller e-postadresse",
"LoginPasswordNotCorrect": "Feil kombinasjon av brukernavn og passord.",
"LostYourPassword": "Glemt passord?",
"MailTopicPasswordChange": "Bekreft passordendring",
"NewPassword": "Nytt passord",
"NewPasswordRepeat": "Nytt passord (gjenta)",
+ "NotAllowListTakesPrecendence": "Hvis en IP samsvarer med både blokker- og aldri blokker-listen, vil bokkeringslisten overstyre og IP-en dermed ikke tillates.",
"PasswordChanged": "Passordet er endret.",
"PasswordRepeat": "Passord (gjenta)",
"PasswordsDoNotMatch": "Passordene stemmer ikke overens.",
"PluginDescription": "Gir autentisering med brukernavn og passord i tillegg til funksjonalitet for å gjenopprette passord. Autentiseringsmetoden kan endres ved å bruke en annen innloggingsutvidelse som LoginLdap, som er tilgjengelig via Markedsplassen.",
"RememberMe": "Husk meg",
"SettingBruteForceBlacklistIp": "Alltid blokker disse IP-ene fra innlogging",
+ "SettingBruteForceEnable": "Skru på totalsøksoppdagelse",
"SettingBruteForceMaxFailedLogins": "Antall tillatte nye innloggingsforsøk innenfor tidsperioden",
"SettingBruteForceTimeRangeHelp": "Skriv inn antall minutter.",
"SettingBruteForceWhitelistIp": "Aldri blokker disse IP-ene fra innlogging",
diff --git a/plugins/Login/lang/sq.json b/plugins/Login/lang/sq.json
index c2882ef1fa..139ae5d60d 100644
--- a/plugins/Login/lang/sq.json
+++ b/plugins/Login/lang/sq.json
@@ -6,16 +6,20 @@
"ConfirmPasswordResetIntro": "Për ripohim se jeni vërtet ju që kërkuat këtë ndryshim fjalëkalimi, ju lutemi, jepni sërish fjalëkalimin tuaj të ri.",
"ConfirmPasswordResetWrongPassword": "Fjalëkalimi i dhënë nuk përputhet me fjalëkalimin tuaj të ri. Nëse s’mbani mend fjalëkalimin tuaj të zgjedhur rishtas, mund ta ricaktoni sërish fjalëkalimin tuaj. Nëse s’kërkuat ndryshim fjalëkalimi, thjesht mos bëni gjë dhe fjalëkalimi juaj s’do të ndryshohet.",
"ConfirmPasswordToContinue": "Që të vazhdohet, ripohoni fjalëkalimin tuaj",
- "ConfirmationLinkSent": "Te email-i juaj u dërgua një lidhje ripohimi. Kontrolloni email-in tuaj dhe vizitoni atë lidhje që të autorizoni kërkesën tuaj për ndryshim të fjalëkalimit.",
- "ContactAdmin": "Arsye e mundshme: streha juaj mund të ketë çaktivizuar funksionin mail(). <br />Ju lutemi, lidhuni me përgjegjësin e Matomo-s tuaj.",
+ "ConfirmationLinkSent": "Te email-i juaj u dërgua një lidhje ripohimi. Kontrolloni email-in tuaj dhe vizitoni atë lidhje, që të autorizoni kërkesën tuaj për ndryshim të fjalëkalimit.",
+ "ContactAdmin": "Arsye e mundshme: streha juaj mund të ketë çaktivizuar funksionin mail(). <br>Ju lutemi, lidhuni me përgjegjësin e Matomo-s tuaj.",
"CurrentlyBlockedIPs": "IP të bllokuara hëpërhë",
- "CurrentlyBlockedIPsUnblockConfirm": "Jeni i sigurt se doni të zhbllokohen krejt IP e tanishme të bllokuara?",
- "CurrentlyBlockedIPsUnblockInfo": "Mundeni të zhbllokoni IP që tani janë të bllokuara, që kështu të mund të bëhet sërish hyrje prej tyre, në rast se janë bllokuar gabimisht dhe lypset të jetë e mundur të bëhet hyrje që prej tyre.",
+ "CurrentlyBlockedIPsUnblockConfirm": "Jeni i sigurt se doni të zhbllokohen krejt IP-të e tanishme të bllokuara?",
+ "CurrentlyBlockedIPsUnblockInfo": "Mundeni të zhbllokoni IP që tani janë të bllokuara, që kështu të mund të bëhet sërish hyrje prej tyre, në rast se janë bllokuar gabimisht dhe është e nevojshme të jetë e mundur të bëhet hyrje që prej tyre.",
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "Një përdorues me të drejta Superpërdoruesi s’mund të bëjë mirëfilltësimin e vetes duke përdorur mekanizmin '%s'.",
"ExceptionPasswordMD5HashExpected": "Parametri i fjalëkalimit pritet të jetë një hash MD5 fjalëkalimi.",
"HelpIpRange": "Jepni një adresë IP ose një interval IP-sh për rresht. Mund të përdorni mënyrë shënimesh CIDR, p.sh., %1$s ose mund të përdorni shenja të gjithëpushtetshme, p.sh., %2$s ose %3$s",
"IPsAlwaysBlocked": "Këto IP janë përherë të bllokuara",
+ "InvalidNonceOrigin": "Siguria e formularit dështoi, origjinë e pavlefshme. Nëse më herët u lidhët duke përdorur https, ju lutemi, sigurohuni se po lidheni përmes një lidhjeje të siguruar (SSL/TLS) dhe riprovoni.",
+ "InvalidNonceReferrer": "Siguria e formularit dështoi, krye e pavlefshme sjellësi. Nëse përdorni një shërbyes ndërmjetës, duhet %1$s të formësoni Matomo-n të pranojë krye ndërmjetësi %2$s që shpien te kryet e Strehës. Veç kësaj, kontrolloni që kryet e Sjellësit dërgohet saktë dhe nëse më herët u lidhët duke përdorur https, ju lutemi, sigurohuni se po lidheni përmes një lidhjeje të sigurt (SSL/TLS) dhe riprovoni.",
"InvalidNonceSSLMisconfigured": "Po ashtu, mund %1$sta detyroni Matomo-n të përdorë një lidhje të sigurt%2$s: te kartela juaj %3$s rregulloni %4$s nën ndarjen %5$s",
+ "InvalidNonceToken": "Siguria e formularit dështoi, mospërputhje token-ësh. Ju lutemi, ringarkoni formularin dhe shihni që cookie-t tuaja të jenë të aktivizuara.",
+ "InvalidNonceUnexpectedReferrer": "Siguria e formularit dështoi, kryet e sjellësit janë të ndryshme nga kryet që priteshin për të, kontrolloni se kryet e Sjellësit tuaj janë dërguar saktë.",
"InvalidOrExpiredToken": "Elementi është i pavlefshëm ose ka skaduar.",
"InvalidUsernameEmail": "Emër përdoruesi dhe/ose adresë email e pavlefshme.",
"LogIn": "Hyni",
@@ -28,7 +32,7 @@
"MailTopicPasswordChange": "Ripohoni Ndryshimin e Fjalëkalimit",
"NewPassword": "Fjalëkalim i ri",
"NewPasswordRepeat": "Fjalëkalim i ri (përsëriteni)",
- "NotAllowListTakesPrecendence": "Nëse një IP ka përputhje si me listën e bllokimeve, ashtu edhe me atë të mosbllokimit ndonjëherë, atëherë përparësi ka lista e blIokimit dhe IP-ja s’do të lejohej.",
+ "NotAllowListTakesPrecendence": "Nëse një IP ka përputhje si me listën e bllokimeve, ashtu edhe me atë të mosbllokimit kurrë, atëherë përparësi ka lista e blIokimeve dhe IP-ja s’do të lejohej.",
"PasswordChanged": "Fjalëkalimi juaj u ndryshua.",
"PasswordRepeat": "Fjalëkalim (sërish)",
"PasswordResetAlreadySent": "Tani së fundi keni kërkuar shumë ricaktime fjalëkalimi. Një kërkesë e re mund të bëhet pas një ore. Nëse keni probleme me ricaktimin e fjalëkalimit tuaj, ju lutemi, për ndihmë, lidhuni me përgjegjësin tuaj.",
@@ -37,17 +41,17 @@
"RememberMe": "Mbamë Mend",
"SettingBruteForceBlacklistIp": "Bllokojua përherë hyrjen këtyre IP-ve",
"SettingBruteForceEnable": "Aktivizo Pikasje Hyrjesh Me Zor",
- "SettingBruteForceEnableHelp": "Pikasja e Hyrjeve Me Zor është veçori e rëndësishme sigurie, e përdorur për të mbrojtur të dhënat tuaja nga hyrje të pa-autorizuara . Në vend që të lejohen cilido përdorues të provojë mijëra, ose miliona ndërthurje fjalëkalimesh brenda një kohe të shkurtër, do të lejohet vetëm një numër i caktuar përpjekjesh të dështuara brenda një periudhe të shkurtër kohore. Nëse brenda atij intervali kohor ndodhin shumë përpjekje të dështuara hyrjeje, përdoruesi s’do të jetë në gjendje të bëjë hyrjen deri sa të ketë kaluar një kohë e caktuar. Ju lutemi, kini parasysh që nëse një IP është e bllokuar, çdo përdoruesi që përdor atë IP do t’i bllokohet po ashtu.",
+ "SettingBruteForceEnableHelp": "Pikasja e Hyrjeve Me Zor është veçori e rëndësishme sigurie, e përdorur për të mbrojtur të dhënat tuaja nga hyrje të paautorizuara. Në vend që të lejohet cilido përdorues të provojë mijëra, ose miliona ndërthurje fjalëkalimesh brenda një kohe të shkurtër, do të lejohet vetëm një numër i caktuar përpjekjesh të dështuara brenda një periudhe të shkurtër kohore. Nëse brenda atij intervali kohor ndodhin shumë përpjekje të dështuara hyrjeje, përdoruesi s’do të jetë në gjendje të bëjë hyrjen, pa kaluar një kohë e caktuar. Ju lutemi, kini parasysh që nëse një IP është e bllokuar, çdo përdoruesi që përdor atë IP do t’i bllokohet po ashtu hyrja.",
"SettingBruteForceMaxFailedLogins": "Numër i lejuar provash hyrjeje brenda intervalit kohor",
"SettingBruteForceMaxFailedLoginsHelp": "Nëse regjistrohet një numër më i madh provash të dështuara për hyrje se sa ky numër, brenda intervalit kohor të formësuar më poshtë, bllokoje IP-në.",
"SettingBruteForceTimeRange": "Numëro prova hyrjesh brenda këtij intervali kohor në minuta",
"SettingBruteForceTimeRangeHelp": "Jepni një numër minutash.",
"SettingBruteForceWhitelistIp": "Mos u blloko kurrë hyrjen këtyre IP-ve",
- "SuspiciousLoginAttemptsInLastHourEmail1": "Vumë re një numër të madh përpjekjesh të dyshimta për hyjr në llogarinë tuaj Matomo orën e fundit, më hollësisht, %1$s përpjekje për hyrje nga %2$s adresa të ndryshme IP. Dyshojmë se dikush mund të jetë duke u përpjekur të hyjë në llogarinë tuaj.",
+ "SuspiciousLoginAttemptsInLastHourEmail1": "Vumë re një numër të madh përpjekjesh të dyshimta për hyrje në llogarinë tuaj Matomo orën e fundit, më hollësisht, %1$s përpjekje për hyrje nga %2$s adresa të ndryshme IP. Dyshojmë se dikush mund të jetë duke u përpjekur të hyjë në llogarinë tuaj.",
"SuspiciousLoginAttemptsInLastHourEmail2": "Që të ruhet Matomo-ja juaj, rekomandojmë të merrni masat vijuese:",
"SuspiciousLoginAttemptsInLastHourEmail3": "Sigurohuni se fjalëkalimi juaj është i sigurt, kuturu, me gjatësi të përshtatshme (për shembull, të paktën 30 shenja).",
"SuspiciousLoginAttemptsInLastHourEmail4": "Ujdisni mirëfilltësim dyfaktorësh, në mënyrë që agresorëve t’u duhet më tepër informacion se sa thjesht fjalëkalimi juaj, për të mundur të bëjnë hyrjen në llogari.",
- "SuspiciousLoginAttemptsInLastHourEmail5": "Më tej, nëse Matomo-ja juaj ka një grup të kufizuar përdoruesish, ose IP-sh përmes të cilave përdoruesit do të hyjnë në të, mund të jetë me leverdi të ujdiset një listë adresash IP të lejuara. %1$sPër më tepër të dhëna, lexoni dokumentimin tonë.%2$s",
+ "SuspiciousLoginAttemptsInLastHourEmail5": "Më tej, nëse Matomo-ja juaj ka një grup të kufizuar përdoruesish, ose IP-sh përmes të cilave përdoruesit do të hyjnë në të, mund të jetë me leverdi të ujdiset një listë adresash IP të lejuara. %1$sPër më tepër hollësi, lexoni dokumentimin tonë.%2$s",
"SuspiciousLoginAttemptsInLastHourEmailSubject": "Vumë re disa përpjekje të dyshimta hyrjeje në llogarinë tuaj…",
"UnblockAllIPs": "Zhblloko krejt IP-të e tanishme të bllokuara",
"WrongPasswordEntered": "Ju lutemi, jepni fjalëkalimin tuaj të saktë."
diff --git a/plugins/Login/lang/tl.json b/plugins/Login/lang/tl.json
index c4a7696f3e..7f1fd8198e 100644
--- a/plugins/Login/lang/tl.json
+++ b/plugins/Login/lang/tl.json
@@ -1,5 +1,6 @@
{
"Login": {
+ "BruteForceLog": " ",
"ConfirmationLinkSent": "Ang link na upang ma-konpirma ang iyong detalye ay ipinadala na sa iyong inbox. Tignan ang iyong e-mail at bisitahin ang link na ito upang masagawa ang iyong hiling na baguhin ang iyong password.",
"ExceptionInvalidSuperUserAccessAuthenticationMethod": "Ang isang user na may Super-access ay hindi maaaring e-authenticate gamit ang '%s' mechanism.",
"ExceptionPasswordMD5HashExpected": "Ang parameter ng password ay inaasahan na maging isang MD5 hash ng password.",
diff --git a/plugins/Login/tests/Integration/LoginTest.php b/plugins/Login/tests/Integration/LoginTest.php
index 24d9c31306..39f2cc3e76 100644
--- a/plugins/Login/tests/Integration/LoginTest.php
+++ b/plugins/Login/tests/Integration/LoginTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\Login\tests\Integration;
use Piwik\AuthResult;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\DbHelper;
-use Piwik\NoAccessException;
use Piwik\Plugins\Login\Auth;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\UserUpdater;
diff --git a/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php b/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
index 419f8ec0d3..45c6d9877d 100644
--- a/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
+++ b/plugins/Login/tests/Integration/Security/BruteForceDetectionTest.php
@@ -8,12 +8,9 @@
namespace Piwik\Plugins\Login\tests\Integration\Security;
-use Piwik\Common;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Mail;
use Piwik\Piwik;
-use Piwik\Plugins\Login\Dao\BruteForceDetectionDao;
use Piwik\Plugins\Login\Emails\SuspiciousLoginAttemptsInLastHourEmail;
use Piwik\Plugins\Login\Security\BruteForceDetection;
use Piwik\Plugins\Login\SystemSettings;
diff --git a/plugins/LoginLdap b/plugins/LoginLdap
-Subproject 94143c5d4ae86e9a3932106942cc6cbcc200906
+Subproject 5be4222ed3622a8a4fa49dd4a626fe8ee67b584
diff --git a/plugins/MarketingCampaignsReporting b/plugins/MarketingCampaignsReporting
-Subproject 9654c8151ae84a2b2450438050549607a5eaf3b
+Subproject f926dd8397c6d008b180825fd956ab54d107e29
diff --git a/plugins/Marketplace/Commands/SetLicenseKey.php b/plugins/Marketplace/Commands/SetLicenseKey.php
index 7af3389f6d..2b22cc7daa 100644
--- a/plugins/Marketplace/Commands/SetLicenseKey.php
+++ b/plugins/Marketplace/Commands/SetLicenseKey.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Marketplace\Commands;
use Piwik\Plugin\ConsoleCommand;
-use Piwik\Plugins\Marketplace\LicenseKey;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/plugins/Marketplace/Marketplace.php b/plugins/Marketplace/Marketplace.php
index a07ef9b1d0..752d26bf97 100644
--- a/plugins/Marketplace/Marketplace.php
+++ b/plugins/Marketplace/Marketplace.php
@@ -9,10 +9,7 @@
namespace Piwik\Plugins\Marketplace;
use Piwik\Container\StaticContainer;
-use Piwik\Piwik;
use Piwik\Plugin;
-use Piwik\Plugins\Marketplace\Widgets\GetNewPlugins;
-use Piwik\Plugins\Marketplace\Widgets\GetPremiumFeatures;
use Piwik\SettingsPiwik;
use Piwik\Widget\WidgetsList;
diff --git a/plugins/Marketplace/Widgets/GetPremiumFeatures.php b/plugins/Marketplace/Widgets/GetPremiumFeatures.php
index 8f27f8745f..35a35766fb 100644
--- a/plugins/Marketplace/Widgets/GetPremiumFeatures.php
+++ b/plugins/Marketplace/Widgets/GetPremiumFeatures.php
@@ -8,9 +8,7 @@
*/
namespace Piwik\Plugins\Marketplace\Widgets;
-use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Plugins\Marketplace\Api\Client;
use Piwik\Plugins\Marketplace\Input\PurchaseType;
use Piwik\Plugins\Marketplace\Input\Sort;
@@ -45,8 +43,9 @@ class GetPremiumFeatures extends Widget
$plugins = $this->marketplaceApiClient->searchForPlugins('', '', Sort::METHOD_LAST_UPDATED, PurchaseType::TYPE_PAID);
- $plugins = array_filter($plugins, function ($plugin) {
- return empty($plugin['isBundle']);
+ //sort array by bundle first
+ usort($plugins, function ($item1, $item2) {
+ return $item1['isBundle'] < $item2['isBundle'] ? 1 : -1;
});
if (empty($plugins)) {
diff --git a/plugins/Marketplace/Widgets/Marketplace.php b/plugins/Marketplace/Widgets/Marketplace.php
index 678ae31ee8..b662be0322 100644
--- a/plugins/Marketplace/Widgets/Marketplace.php
+++ b/plugins/Marketplace/Widgets/Marketplace.php
@@ -8,11 +8,7 @@
*/
namespace Piwik\Plugins\Marketplace\Widgets;
-use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Marketplace\Api\Client;
-use Piwik\Plugins\Marketplace\Input\PurchaseType;
-use Piwik\Plugins\Marketplace\Input\Sort;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
diff --git a/plugins/Marketplace/lang/ca.json b/plugins/Marketplace/lang/ca.json
index 398420af57..863f3ca2e3 100644
--- a/plugins/Marketplace/lang/ca.json
+++ b/plugins/Marketplace/lang/ca.json
@@ -1,9 +1,121 @@
{
"Marketplace": {
- "ActivateLicenseKey": "Activa",
- "ActionInstall": "Instal·la",
+ "ActionActivatePlugin": "Activar el connector",
+ "ActionActivateTheme": "Activar el tema",
+ "ActionInstall": "Instal·lar",
+ "ActivateLicenseKey": "Activar",
+ "AddToCart": "Afegeix a la cistella",
+ "AllPaidPluginsInstalledAndActivated": "Tots els connectors de pagament s'han instal·lat i activat correctament.",
+ "AllowedUploadFormats": "Podeu carregar un complement o un tema en format .zip des d'aquesta pàgina.",
"Authors": "Autors",
+ "AutoUpdateDisabledWarning": "No podeu instal·lar ni actualitzar el connector directament ja que les actualitzacions automàtiques estan desactivades a la configuració. Per activar les actualitzacions automàtiques, configureu %1$s a %2$s.",
+ "BackToMarketplace": "Torna al Mercat",
+ "Browse": "Navega",
+ "BrowseMarketplace": "Explora el Mercat",
+ "ByXDevelopers": "per %s desenvolupadors",
+ "CannotInstall": "No es pot instal·lar",
+ "CannotUpdate": "No es pot actualitzar",
+ "ClickToCompletePurchase": "Feu clic per completar la compra.",
+ "ConfirmRemoveLicense": "Esteu segur que voleu eliminar la vostra clau de llicència? Ja no rebreu cap actualització de cap dels vostres connectors comprats.",
+ "CurrentNumPiwikUsers": "Actualment el vostre Matomo té %1$s usuaris registrats.",
+ "Developer": "Desenvolupador",
+ "DevelopersLearnHowToDevelopPlugins": "Desenvolupadors: obteniu informació sobre com podeu ampliar i personalitzar Matomo %1$sdesenvolupant connectors o temes%2$s.",
+ "Exceeded": "Superat",
+ "ExceptionLinceseKeyIsExpired": "Aquesta clau de llicència ha caducat.",
+ "ExceptionLinceseKeyIsNotValid": "Aquesta clau de llicència no és vàlida.",
+ "FeaturedPlugin": "Connector destacat",
+ "FreeTrialLabel": "Prova gratuïta",
+ "InstallAllPurchasedPlugins": "Instal·leu tots els connectors comprats alhora",
+ "InstallAllPurchasedPluginsAction": "Instal·leu i activeu %d connectors comprats",
+ "InstallPurchasedPlugins": "Instal·leu els connectors comprats",
+ "InstallThesePlugins": "Això instal·larà i activarà els connectors següents:",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Podeu instal·lar automàticament %1$s des del Marketplace o %2$scarregar un %3$s%4$s en format .zip.",
+ "InstallingPlugin": "S'està instal·lant %s",
+ "LastCommitTime": "(última confirmació %s)",
+ "LastUpdated": "Última actualització",
+ "LatestMarketplaceUpdates": "Últimes actualitzacions del mercat",
+ "License": "Llicència",
+ "LicenseExceeded": "Llicència superada",
+ "LicenseExceededDescription": "Les llicències dels connectors següents ja no són vàlides perquè s'ha superat el nombre d'usuaris autoritzats per a la llicència: %1$s. %2$sNo podreu baixar actualitzacions d'aquests connectors. Per resoldre aquest problema, suprimiu alguns usuaris o %3$sactualitzeu la subscripció ara%4$s.",
+ "LicenseExceededPossibleCause": "S'ha superat la llicència. És possible que hi hagi més usuaris en aquesta instal·lació de Matomo dels que autoritza la vostra subscripció.",
+ "LicenseExpired": "La llicència ha caducat",
+ "LicenseExpiredDescription": "Les llicències dels connectors següents han caducat: %1$s. %2$sJa no rebreu cap actualització d'aquests connectors. Per resoldre aquest problema, %3$srenoveu la vostra subscripció ara%4$s o desactiveu el connector si ja no l'utilitzeu.",
+ "LicenseKey": "Clau de llicència",
+ "LicenseKeyActivatedSuccess": "La clau de llicència s'ha activat correctament!",
+ "LicenseKeyDeletedSuccess": "La clau de llicència s'ha suprimit correctament.",
+ "LicenseKeyExpiresSoon": "La vostra clau de llicència caduca aviat; poseu-vos en contacte amb %1$s.",
+ "LicenseKeyIsExpired": "La vostra clau de llicència ha caducat, contacteu amb %1$s.",
+ "LicenseKeyIsValidShort": "La clau de llicència és vàlida!",
+ "LicenseMissing": "Falta la llicència",
+ "LicenseMissingDeactivatedDescription": "Els connectors següents s'han desactivat perquè els feieu servir sense llicència: %1$s. %2$sPer resoldre aquest problema, actualitzeu la vostra clau de llicència, %3$s obteniu una subscripció ara%4$s o desactiveu el connector.",
+ "LicenseRenewsNextPaymentDate": "Es renova a la propera data de pagament",
+ "Marketplace": "Mercat",
+ "MultiServerEnvironmentWarning": "No podeu instal·lar ni actualitzar el connector directament, ja que feu servir Matomo a diversos servidors. El connector només s'instal·laria en un servidor. En lloc d'això, descarregueu el connector i desplegueu-lo manualment a tots els vostres servidors.",
+ "NewVersion": "nova versió",
+ "NoPluginsFound": "No s'ha trobat cap connector",
+ "NoSubscriptionsFound": "No s'ha trobat cap subscripció",
+ "NoThemesFound": "No s'ha trobat cap tema",
+ "NoValidSubscriptionNoUpdates": "Un cop caduca una subscripció, ja no rebreu cap actualització d'aquest connector.",
+ "NotAllowedToBrowseMarketplacePlugins": "Podeu navegar per la llista de connectors que es poden instal·lar per personalitzar o ampliar la vostra plataforma Matomo. Si us plau, poseu-vos en contacte amb el vostre administrador si necessiteu instal·lar-ne algun.",
+ "NotAllowedToBrowseMarketplaceThemes": "Podeu navegar per la llista de temes que es poden instal·lar per personalitzar l'aspecte de la plataforma Matomo. Poseu-vos en contacte amb el vostre administrador per instal·lar-vos qualsevol d'aquests temes.",
+ "NoticeRemoveMarketplaceFromReportingMenu": "Podeu eliminar el Marketplace del menú d'informes instal·lant el connector %1$sWhite Label%2$s.",
+ "NumDownloadsLatestVersion": "Darrera versió: %s descàrregues",
+ "OnlySomePaidPluginsInstalledAndActivated": "Alguns connectors de pagament no s'han instal·lat correctament.",
+ "OverviewPluginSubscriptions": "Visió general de les vostres subscripcions de connectors",
+ "OverviewPluginSubscriptionsAllDetails": "Per veure'n tots els detalls o per canviar una subscripció, inicieu sessió al vostre compte.",
+ "OverviewPluginSubscriptionsMissingInfo": "És possible que falti una subscripció, per exemple, si encara no s'ha fet un pagament. En aquest cas, torneu-ho a provar d'aquí a unes hores o poseu-vos en contacte amb l'equip de Matomo.",
+ "OverviewPluginSubscriptionsMissingLicense": "No teniu una clau de llicència definida. Si heu comprat una subscripció al connector, aneu al %1$sMarketplace%2$s i introduïu la vostra clau de llicència.",
+ "PaidPlugins": "Funcions Premium",
+ "PaidPluginsNoLicenseKeyIntro": "Si heu comprat un %1$sconnector de pagament premium%2$s, si us plau introduïu la clau de llicència rebuda a continuació.",
+ "PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "En cas que hàgiu comprat un %1$sconnector de pagament premium%2$s al Marketplace, demaneu a un usuari amb accés de superusuari que afegeixi la clau de llicència.",
+ "PaidPluginsWithLicenseKeyIntro": "S'ha configurat una clau de llicència vàlida. Per motius de seguretat no mostrem la clau de llicència aquí. Si heu perdut la clau de llicència poseu-vos en contacte amb l'equip de Matomo.",
+ "PluginDescription": "Amplieu i amplieu la funcionalitat de Matomo descarregant connectors i temes del Marketplace.",
"PluginKeywords": "Paraules clau",
- "SubscriptionType": "Tipus"
+ "PluginLicenseExceededDescription": "No teniu permís per descarregar aquest connector. La llicència d'aquest connector ja no és vàlida perquè s'ha superat el nombre d'usuaris autoritzats per a la llicència. Per resoldre aquest problema, suprimiu alguns usuaris o actualitzeu la vostra subscripció ara.",
+ "PluginLicenseMissingDescription": "No teniu permís per descarregar aquest connector perquè no hi ha cap llicència per a aquest connector. Per resoldre aquest problema, actualitzeu la vostra clau de llicència, obteniu una subscripció o desinstal·leu el connector.",
+ "PluginSubscriptionsList": "Aquesta és una llista de subscripcions associades a la vostra clau de llicència.",
+ "PluginUpdateAvailable": "Esteu utilitzant la versió %1$s i hi ha disponible una versió nova %2$s.",
+ "PluginUploadDisabled": "La càrrega del connector està desactivada al fitxer de configuració. Per activar aquesta funció, actualitzeu la vostra configuració o poseu-vos en contacte amb el vostre administrador",
+ "PluginVersionInfo": "%1$s de %2$s",
+ "PluginWebsite": "Lloc web del connector",
+ "PriceExclTax": "%1$s %2$s excl. impost.",
+ "PriceFromPerPeriod": "Des de %1$s / %2$s",
+ "RemoveLicenseKey": "Elimina la clau de llicència",
+ "Reviews": "Ressenyes",
+ "Screenshots": "Captures de pantalla",
+ "ShownPriceIsExclTax": "El preu mostrat no inclou impostos.",
+ "SortByAlpha": "Alfabèticament",
+ "SortByLastUpdated": "Última actualització",
+ "SortByNewest": "El més nou",
+ "SortByPopular": "El més popular",
+ "SpecialOffer": "Oferta especial",
+ "StepDownloadingPluginFromMarketplace": "S'està baixant el connector del Marketplace",
+ "StepDownloadingThemeFromMarketplace": "S'està descarregant el tema del Marketplace",
+ "StepPluginSuccessfullyInstalled": "Heu instal·lat correctament el connector %1$s %2$s.",
+ "StepPluginSuccessfullyUpdated": "Heu actualitzat correctament el connector %1$s %2$s.",
+ "StepReplaceExistingPlugin": "Substituïnt el connector existent",
+ "StepReplaceExistingTheme": "Substituïnt el tema existent",
+ "StepThemeSuccessfullyInstalled": "Heu instal·lat correctament el tema %1$s %2$s.",
+ "StepThemeSuccessfullyUpdated": "Heu actualitzat correctament el tema %1$s %2$s.",
+ "StepUnzippingPlugin": "Descomprimint el connector",
+ "StepUnzippingTheme": "Descomprimint el tema",
+ "SubscriptionEndDate": "Data de finalització",
+ "SubscriptionExpiresSoon": "Aquesta subscripció caducarà aviat",
+ "SubscriptionInvalid": "Aquesta subscripció no és vàlida o ha caducat",
+ "SubscriptionNextPaymentDate": "Pròxima data de pagament",
+ "SubscriptionStartDate": "Data d'inici",
+ "SubscriptionType": "Tipus",
+ "Support": "Suport",
+ "SupportMatomoThankYou": "Totes les compres ajudaran a finançar el futur del projecte de codi obert Matomo. Gràcies pel vostre suport!",
+ "TeaserExtendPiwikByUpload": "Amplieu Matomo carregant un fitxer ZIP",
+ "TrialHints": "Totes les funcions premium inclouen una %1$sprova gratuïta de 30 dies%2$s. No té cap risc i no hi ha cap mena de compromís.",
+ "TryFreeTrialTitle": "Prova-ho 30 dies gratis, doncs",
+ "Updated": "Actualitzat",
+ "UpdatingPlugin": "S'està actualitzant %1$s",
+ "UpgradeSubscription": "Actualitza la subscripció",
+ "UploadZipFile": "Carregueu el fitxer ZIP",
+ "ViewRepositoryChangelog": "Veure els canvis",
+ "ViewSubscriptions": "Veure subscripcions",
+ "ViewSubscriptionsSummary": "%1$sConsulteu les vostres subscripcions de connectors.%2$s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Marketplace/lang/el.json b/plugins/Marketplace/lang/el.json
index 3df85caed4..d8f15eafaf 100644
--- a/plugins/Marketplace/lang/el.json
+++ b/plugins/Marketplace/lang/el.json
@@ -1,117 +1,121 @@
{
"Marketplace": {
- "ActivateLicenseKey": "Ενεργοποίηση",
"ActionActivatePlugin": "Ενεργοποίηση πρόσθετου",
"ActionActivateTheme": "Ενεργοποίηση θέματος",
"ActionInstall": "Εγκατάσταση",
+ "ActivateLicenseKey": "Ενεργοποίηση",
"AddToCart": "Προσθήκη στο καλάθι",
+ "AllPaidPluginsInstalledAndActivated": "Όλα τα αγορασμένα πρόσθετα εγκαταστάθηκαν και ενεργοποιήθηκαν με επιτυχία.",
"AllowedUploadFormats": "Μπορείτε να ανεβάσετε ένα πρόσθετο ή θέμα σε μορφή .zip από αυτή τη σελίδα.",
"Authors": "Συγγραφείς",
- "Browse": "Περιήγηση",
- "SupportMatomoThankYou": "Οποιαδήποτε αγορά θα χρηματοδοτήσει το μέλλον του ανοικτού λογισμικού Matomo. Σας ευχαριστούμε για την υποστήριξη!",
- "LatestMarketplaceUpdates": "Τελευταίες Ενημερώσεις στην Αγορά",
+ "AutoUpdateDisabledWarning": "Δεν μπορείτε να εγκαταστήσετε ή ενημερώσετε το πρόσθετο απευθείας, καθώς οι αυτόματες ενημερώσεις έχουν απενεργοποιηθεί στο αρχείο ρυθμίσεων. Για να ενεργοποιήσετε τις αυτόματες ενημερώσεις, ορίστε το %1$s στο %2$s.",
"BackToMarketplace": "Πίσω στην Αγορά",
+ "Browse": "Περιήγηση",
"BrowseMarketplace": "Περιήγηση στην Αγορά",
"ByXDevelopers": "από %s προγραμματιστές",
"CannotInstall": "Δεν είναι δυνατή η εγκατάσταση",
"CannotUpdate": "Δεν είναι δυνατή η ενημέρωση",
"ClickToCompletePurchase": "Κάντε κλικ για να ολοκληρώσετε την αγορά.",
- "CurrentNumPiwikUsers": "Το Matomo σας αυτή τη στιγμή έχει %1$s εγγεγραμμένους χρήστες.",
"ConfirmRemoveLicense": "Είστε σίγουροι ότι επιθυμείτε να αφαιρέσετε την άδειά σας; Δε θα λαμβάνετε πλέον ενημερώσεις για οποιοδήποτε από τα αγορασμένα πρόσθετα.",
+ "CurrentNumPiwikUsers": "Το Matomo σας αυτή τη στιγμή έχει %1$s εγγεγραμμένους χρήστες.",
"Developer": "Προγραμματιστής",
"DevelopersLearnHowToDevelopPlugins": "Προγραμματιστές: Μάθετε πώς να επεκτείνετε και να προσαρμόζετε το Matomo %1$sδημιουργώντας πρόσθετα ή θέματα%2$s.",
- "NoticeRemoveMarketplaceFromReportingMenu": "Μπορείτε να αφαιρέσετε την Αγορά από το μενού αναφορών με εγκατάσταση του πρόσθετου %1$sWhite Label%2$s.",
- "Marketplace": "Αγορά",
- "PaidPlugins": "Χαρακτηριστικά επί πληρωμή",
+ "Exceeded": "Εκτός ορίων",
+ "ExceptionLinceseKeyIsExpired": "Το κλειδί έχει λήξει.",
+ "ExceptionLinceseKeyIsNotValid": "Το κλειδί δεν είναι έγκυρο.",
"FeaturedPlugin": "Προβαλλόμενο πρόσθετο",
+ "FreeTrialLabel": "Δωρεάν Δοκιμή",
+ "InstallAllPurchasedPlugins": "Εγκατάσταση όλων των αγορασμένων πρόσθετων με τη μία",
+ "InstallAllPurchasedPluginsAction": "Εγκατάσταση και ενεργοποίηση %d αγορασμένων πρόσθετων",
+ "InstallPurchasedPlugins": "Εγκατάσταση αγορασμένων πρόσθετων",
+ "InstallThesePlugins": "Αυτό θα εγκαταστήσει και ενεργοποιήσει τα εξής πρόσθετα:",
"InstallingNewPluginViaMarketplaceOrUpload": "Μπορείτε αυτόματα να εγκαταστήσετε το %1$s από την Αγορά ή να %2$sανεβάσετε ένα %3$s%4$s σε μορφή .zip.",
"InstallingPlugin": "Γίνεται εγκατάσταση του %s",
- "InstallPurchasedPlugins": "Εγκατάσταση αγορασμένων πρόσθετων",
"LastCommitTime": "(τελευταία οριστικοποίηση %s)",
"LastUpdated": "Τελευταία Ενημέρωση",
+ "LatestMarketplaceUpdates": "Τελευταίες Ενημερώσεις στην Αγορά",
"License": "Άδεια",
+ "LicenseExceeded": "Άδεια εκτός ορίων",
+ "LicenseExceededDescription": "Οι άδειες για τα εξής πρόσθετα δεν είναι πλέον έγκυρες, καθώς έχει ξεπεραστεί ο αριθμός των επιτρεπόμενων χρηστών της άδειας: %1$s. %2$sΔε θα μπορείτε να κατεβάσετε ενημερώσεις για αυτά τα πρόσθετα. Για να λύσετε το θέμα, διαγράψτε κάποιους χρήστες ή %3$sαναβαθμίστε την συνδρομή σας τώρα%4$s.",
+ "LicenseExceededPossibleCause": "Η άδεια είναι εκτός ορίων. Υπάρχουν πιθανώς περισσότεροι χρήστες στην εγκατάσταση του Matomo από όσους η συνδρομή επιτρέπει.",
+ "LicenseExpired": "Η άδεια έληξε",
+ "LicenseExpiredDescription": "Οι άδειες για τα εξής πρόσθετα έχουν λήξει: %1$s. %2$sΔεν μπορείτε να κατεβάσετε ενημερώσεις για αυτά τα πρόσθετα. Για να λύσετε το θέμα, %3$sανανεώστε την συνδρομή σας τώρα%4$s ή απενεργοποιήστε το πρόσθετο αν δεν το χρησιμοποιείτε πλέον.",
"LicenseKey": "Κλειδί άδειας",
"LicenseKeyActivatedSuccess": "Το κλειδί της άδειας ενεργοποιήθηκε με επιτυχία!",
"LicenseKeyDeletedSuccess": "Το κλειδί της άδειας διαγράφηκε με επιτυχία.",
- "Exceeded": "Εκτός ορίων",
+ "LicenseKeyExpiresSoon": "Η άδειά σας λήγει σύντομα, επικοινωνήστε με %1$s.",
+ "LicenseKeyIsExpired": "Η άδειά σας έληξε, επικοινωνήστε με %1$s.",
+ "LicenseKeyIsValidShort": "Το κλειδί είναι έγκυρο!",
"LicenseMissing": "Άδεια ελλιπής",
"LicenseMissingDeactivatedDescription": "Τα παρακάτω πρόσθετα έχουν απενεργοποιηθεί, επειδή τα χρησιμοποιείτε χωρίς άδεια: %1$s. %2$sΓια να λύσετε το θέμα αυτό ενημερώστε τα κλειδιά άδειας, %3$sαγοράστε τώρα μια συνδρομή%4$s ή απενεργοποιήστε το πρόσθετο.",
- "PluginLicenseMissingDescription": "Δεν επιτρέπεται να κατεβάσετε το πρόσθετο επειδή δεν υπάρχει άδεια γι' αυτό. Για να λύσετε το πρόβλημα, ενημερώστε το κλειδί της άδειάς σας, αποκτήστε μια συνδρομή ή απεγκαταστήστε το πρόσθετο.",
- "LicenseExceeded": "Άδεια εκτός ορίων",
- "LicenseExceededDescription": "Οι άδειες για τα εξής πρόσθετα δεν είναι πλέον έγκυρες, καθώς έχει ξεπεραστεί ο αριθμός των επιτρεπόμενων χρηστών της άδειας: %1$s. %2$sΔε θα μπορείτε να κατεβάσετε ενημερώσεις για αυτά τα πρόσθετα. Για να λύσετε το θέμα, διαγράψτε κάποιους χρήστες ή %3$sαναβαθμίστε την συνδρομή σας τώρα%4$s.",
- "PluginLicenseExceededDescription": "Δεν επιτρέπεται να κατεβάσετε το πρόσθετο. Η άδεια για το πρόσθετο δεν είναι πλέον έγκυρη, καθώς ο αριθμός των επιτρεπόμενων χρηστών έχει ξεπεραστεί. Για να λύσετε το θέμα, διαγράψτε κάποιους χρήστες ή αναβαθμίστε την συνδρομή σας τώρα.",
- "LicenseExpired": "Η άδεια έληξε",
- "LicenseExpiredDescription": "Οι άδειες για τα εξής πρόσθετα έχουν λήξει: %1$s. %2$sΔεν μπορείτε να κατεβάσετε ενημερώσεις για αυτά τα πρόσθετα. Για να λύσετε το θέμα, %3$sανανεώστε την συνδρομή σας τώρα%4$s ή απενεργοποιήστε το πρόσθετο αν δεν το χρησιμοποιείτε πλέον.",
"LicenseRenewsNextPaymentDate": "Ανανεώνεται στην επόμενη ημερομηνία πληρωμής",
- "UpgradeSubscription": "Αναβάθμιση της εγγραφής",
- "ViewSubscriptionsSummary": "%1$sΔείτε τις συνδρομές για τα πρόσθετά σας%2$s",
- "ViewSubscriptions": "Εμφάνιση των συνδρομών",
- "ExceptionLinceseKeyIsExpired": "Το κλειδί έχει λήξει.",
- "ExceptionLinceseKeyIsNotValid": "Το κλειδί δεν είναι έγκυρο.",
- "LicenseKeyIsValidShort": "Το κλειδί είναι έγκυρο!",
- "RemoveLicenseKey": "Αφαίρεση κλειδιού άδειας",
- "InstallAllPurchasedPlugins": "Εγκατάσταση όλων των αγορασμένων πρόσθετων με τη μία",
- "InstallAllPurchasedPluginsAction": "Εγκατάσταση και ενεργοποίηση %d αγορασμένων πρόσθετων",
- "InstallThesePlugins": "Αυτό θα εγκαταστήσει και ενεργοποιήσει τα εξής πρόσθετα:",
- "AllPaidPluginsInstalledAndActivated": "Όλα τα αγορασμένα πρόσθετα εγκαταστάθηκαν και ενεργοποιήθηκαν με επιτυχία.",
- "OnlySomePaidPluginsInstalledAndActivated": "Ορισμένα αγορασμένα πρόσθετα δεν εγκαταστάθηκαν επιτυχώς.",
+ "Marketplace": "Αγορά",
+ "MultiServerEnvironmentWarning": "Δεν μπορείτε να εγκαταστήσετε το πρόσθετο κατευθείαν, καθώς χρησιμοποιείτε το Matomo σε πολλαπλούς διακομιστές. Το πρόσθετο εγκαθίσταται σε ένα μόνο διακομιστή. Εναλλακτικά κατεβάστε το και εγκαταστήστε το χειροκίνητα σε όλους τους διακομιστές σας.",
"NewVersion": "νέα έκδοση",
- "NotAllowedToBrowseMarketplacePlugins": "Μπορείτε να δείτε τη λίστα των πρόσθετων που μπορούν να εγκατασταθούν για να προσαρμόσετε ή να επεκτείνετε την πλατφόρμα του Matomo. Παρακαλούμε επικοινωνήστε με τον διαχειριστή σας αν χρειάζεστε κάποιο από αυτά να εγκατασταθεί.",
- "NotAllowedToBrowseMarketplaceThemes": "Μπορείτε να δείτε τη λίστα των θεμάτων που μπορούν να εγκατασταθούν για να προσαρμόσετε την εμφάνιση της πλατφόρμας του Matomo. Παρακαλούμε επικοινωνήστε με τον διαχειριστή σας αν χρειάζεστε κάποιο από αυτά να εγκατασταθεί.",
"NoPluginsFound": "Δε βρέθηκαν πρόσθετα",
- "NoThemesFound": "Δε βρέθηκαν θέματα",
"NoSubscriptionsFound": "Δε βρέθηκαν συνδρομές",
+ "NoThemesFound": "Δε βρέθηκαν θέματα",
+ "NoValidSubscriptionNoUpdates": "Αφού λήξει μια συνδρομή δε θα λαμβάνετε πλέον οποιεσδήποτε ενημερώσεις για το πρόσθετο.",
+ "NotAllowedToBrowseMarketplacePlugins": "Μπορείτε να δείτε τη λίστα των πρόσθετων που μπορούν να εγκατασταθούν για να προσαρμόσετε ή να επεκτείνετε την πλατφόρμα του Matomo. Παρακαλούμε επικοινωνήστε με τον διαχειριστή σας αν χρειάζεστε κάποιο από αυτά να εγκατασταθεί.",
+ "NotAllowedToBrowseMarketplaceThemes": "Μπορείτε να δείτε τη λίστα των θεμάτων που μπορούν να εγκατασταθούν για να προσαρμόσετε την εμφάνιση της πλατφόρμας του Matomo. Παρακαλούμε επικοινωνήστε με τον διαχειριστή σας αν χρειάζεστε κάποιο από αυτά να εγκατασταθεί.",
+ "NoticeRemoveMarketplaceFromReportingMenu": "Μπορείτε να αφαιρέσετε την Αγορά από το μενού αναφορών με εγκατάσταση του πρόσθετου %1$sWhite Label%2$s.",
"NumDownloadsLatestVersion": "Τελευταία έκδοση: %s λήψεις",
+ "OnlySomePaidPluginsInstalledAndActivated": "Ορισμένα αγορασμένα πρόσθετα δεν εγκαταστάθηκαν επιτυχώς.",
"OverviewPluginSubscriptions": "Σύνοψη συνδρομών για πρόσθετα",
- "OverviewPluginSubscriptionsMissingLicense": "Δεν έχετε ορίσει κλειδί άδειας. Αν έχετε αγοράσει μια συνδρομή για πρόσθετο, πηγαίνετε στην %1$sΑγορά%2$s και εισάγετε το κλειδί της άδειάς σας.",
"OverviewPluginSubscriptionsAllDetails": "Για να δείτε όλες τις λεπτομέρειες, ή να αλλάξετε μια συνδρομή, κάνετε είσοδο με το λογαριασμό σας.",
"OverviewPluginSubscriptionsMissingInfo": "Είναι πιθανόν να λείπει μια συνδρομή, για παράδειγμα να μην έχει εκκαθαριστεί ακόμη μια πληρωμή. Σε μια τέτοια περίπτωση, δοκιμάστε πάλι μετά από λίγες ώρες ή επικοινωνήστε με την ομάδα του Matomo.",
- "NoValidSubscriptionNoUpdates": "Αφού λήξει μια συνδρομή δε θα λαμβάνετε πλέον οποιεσδήποτε ενημερώσεις για το πρόσθετο.",
- "PluginSubscriptionsList": "Αυτή είναι μια λίστα από συνδρομές που έχουν συσχετιστεί με το κλειδί της άδειάς σας.",
+ "OverviewPluginSubscriptionsMissingLicense": "Δεν έχετε ορίσει κλειδί άδειας. Αν έχετε αγοράσει μια συνδρομή για πρόσθετο, πηγαίνετε στην %1$sΑγορά%2$s και εισάγετε το κλειδί της άδειάς σας.",
+ "PaidPlugins": "Χαρακτηριστικά επί πληρωμή",
"PaidPluginsNoLicenseKeyIntro": "Αν έχετε αγοράσει ένα %1$sεπί πληρωμή πρόσθετο%2$s, εισάγετε το κλειδί άδειας που έχετε παραλάβει.",
- "PaidPluginsWithLicenseKeyIntro": "Έχει οριστεί ένα έγκυρο κλειδί άδειας. Για λόγους ασφαλείας δεν εμφανίζεται εδώ το κλειδί της άδειας. Στην περίπτωση που έχετε χάσει το κλειδί, επικοινωνήστε με την ομάδα του Matomo.",
"PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "Σε περίπτωση που αγοράσατε ένα %1$sεπί πληρωμή πρόσθετο%2$s από την Αγορά, ζητήστε από κάποιο χρήστη με δικαίωμα Υπερ-Χρήστη να προσθέσει το κλειδί της άδειας.",
+ "PaidPluginsWithLicenseKeyIntro": "Έχει οριστεί ένα έγκυρο κλειδί άδειας. Για λόγους ασφαλείας δεν εμφανίζεται εδώ το κλειδί της άδειας. Στην περίπτωση που έχετε χάσει το κλειδί, επικοινωνήστε με την ομάδα του Matomo.",
"PluginDescription": "Επεκτείνετε και αυξήστε την λειτουργικότητα του Matomo από την Αγορά με κατέβασμα πρόσθετων και θεμάτων.",
"PluginKeywords": "Λέξεις κλειδιά",
+ "PluginLicenseExceededDescription": "Δεν επιτρέπεται να κατεβάσετε το πρόσθετο. Η άδεια για το πρόσθετο δεν είναι πλέον έγκυρη, καθώς ο αριθμός των επιτρεπόμενων χρηστών έχει ξεπεραστεί. Για να λύσετε το θέμα, διαγράψτε κάποιους χρήστες ή αναβαθμίστε την συνδρομή σας τώρα.",
+ "PluginLicenseMissingDescription": "Δεν επιτρέπεται να κατεβάσετε το πρόσθετο επειδή δεν υπάρχει άδεια γι' αυτό. Για να λύσετε το πρόβλημα, ενημερώστε το κλειδί της άδειάς σας, αποκτήστε μια συνδρομή ή απεγκαταστήστε το πρόσθετο.",
+ "PluginSubscriptionsList": "Αυτή είναι μια λίστα από συνδρομές που έχουν συσχετιστεί με το κλειδί της άδειάς σας.",
"PluginUpdateAvailable": "Χρησιμοποιείτε την έκδοση %1$s και υπάρχει νεότερη έκδοση %2$s.",
+ "PluginUploadDisabled": "Η υποβολή πρόσθετου είναι απενεργοποιημένη στο αρχείο ρυθμίσεων. Προκειμένου να ενεργοποιήσετε το χαρακτηριστικό αυτό τροποποιήστε τις ρυθμίσεις σας ή επικοινωνήστε με τον διαχειριστή σας",
"PluginVersionInfo": "%1$s από %2$s",
"PluginWebsite": "Ιστοτόπος πρόσθετου",
"PriceExclTax": "%1$s %2$s χωρίς φόρους.",
- "PriceFromPerPeriod": "Από %1$s \/ %2$s",
+ "PriceFromPerPeriod": "Από %1$s / %2$s",
+ "RemoveLicenseKey": "Αφαίρεση κλειδιού άδειας",
"Reviews": "Κριτικές",
- "ShownPriceIsExclTax": "Η εμφανιζόμενη τιμή είναι χωρίς φόρους.",
"Screenshots": "Παραδείγματα οθονών",
- "SortByNewest": "Νεότερα",
+ "ShownPriceIsExclTax": "Η εμφανιζόμενη τιμή είναι χωρίς φόρους.",
"SortByAlpha": "Αλφαβητικά",
"SortByLastUpdated": "Τελευταία ενημέρωση",
+ "SortByNewest": "Νεότερα",
"SortByPopular": "Δημοφιλή",
+ "SpecialOffer": "Ειδική Προσφορά",
"StepDownloadingPluginFromMarketplace": "Κατέβασμα του πρόσθετου από την Αγορά",
"StepDownloadingThemeFromMarketplace": "Κατέβασμα του θέματος από την Αγορά",
- "StepUnzippingPlugin": "Γίνεται αποσυμπίεση του πρόσθετου",
- "StepUnzippingTheme": "Αποσυμπίεση του θέματος",
- "StepThemeSuccessfullyInstalled": "Εγκαταστήσατε με επιτυχία το θέμα %1$s %2$s.",
"StepPluginSuccessfullyInstalled": "Εγκαταστήσατε με επιτυχία το πρόσθετο %1$s %2$s.",
"StepPluginSuccessfullyUpdated": "Ενημερώσατε με επιτυχία το πρόσθετο %1$s %2$s.",
"StepReplaceExistingPlugin": "Γίνεται αντικατάσταση του υπάρχοντος πρόσθετου",
"StepReplaceExistingTheme": "Γίνεται αντικατάσταση του υπάρχοντος θέματος",
+ "StepThemeSuccessfullyInstalled": "Εγκαταστήσατε με επιτυχία το θέμα %1$s %2$s.",
"StepThemeSuccessfullyUpdated": "Ενημερώσατε με επιτυχία το θέμα %1$s %2$s.",
- "SubscriptionType": "Τύπος",
- "SubscriptionStartDate": "Ημερομηνία έναρξης",
+ "StepUnzippingPlugin": "Γίνεται αποσυμπίεση του πρόσθετου",
+ "StepUnzippingTheme": "Αποσυμπίεση του θέματος",
"SubscriptionEndDate": "Ημερομηνία λήξης",
- "SubscriptionNextPaymentDate": "Επόμενη ημερομηνία πληρωμής",
- "SubscriptionInvalid": "Η συνδρομή είναι άκυρη ή έχει λήξει",
"SubscriptionExpiresSoon": "Η συνδρομή λήγει σύντομα",
+ "SubscriptionInvalid": "Η συνδρομή είναι άκυρη ή έχει λήξει",
+ "SubscriptionNextPaymentDate": "Επόμενη ημερομηνία πληρωμής",
+ "SubscriptionStartDate": "Ημερομηνία έναρξης",
+ "SubscriptionType": "Τύπος",
"Support": "Υποστήριξη",
+ "SupportMatomoThankYou": "Οποιαδήποτε αγορά θα χρηματοδοτήσει το μέλλον του ανοικτού λογισμικού Matomo. Σας ευχαριστούμε για την υποστήριξη!",
"TeaserExtendPiwikByUpload": "Επεκτείνετε το Matomo ανεβάζοντας ένα αρχείο ZIP",
- "LicenseExceededPossibleCause": "Η άδεια είναι εκτός ορίων. Υπάρχουν πιθανώς περισσότεροι χρήστες στην εγκατάσταση του Matomo από όσους η συνδρομή επιτρέπει.",
+ "TrialHints": "Όλα τα ιδιαίτερα χαρακτηριστικά έρχονται με μια %1$sδωρεάν δοκιμή 30 ημερών%2$s. Είναι χωρίς ρίσκα και δεν υπάρχουν κρυμμένες υποχρεώσεις.",
+ "TryFreeTrialTitle": "Δοκιμάστε για 30 ημέρες δωρεάν, στη συνέχεια",
"Updated": "Ενημερώθηκε",
"UpdatingPlugin": "Γίνεται ενημέρωση του %1$s",
+ "UpgradeSubscription": "Αναβάθμιση της εγγραφής",
"UploadZipFile": "Ανέβασμα του αρχείου ZIP",
- "PluginUploadDisabled": "Η υποβολή πρόσθετου είναι απενεργοποιημένη στο αρχείο ρυθμίσεων. Προκειμένου να ενεργοποιήσετε το χαρακτηριστικό αυτό τροποποιήστε τις ρυθμίσεις σας ή επικοινωνήστε με τον διαχειριστή σας",
- "LicenseKeyExpiresSoon": "Η άδειά σας λήγει σύντομα, επικοινωνήστε με %1$s.",
- "LicenseKeyIsExpired": "Η άδειά σας έληξε, επικοινωνήστε με %1$s.",
- "MultiServerEnvironmentWarning": "Δεν μπορείτε να εγκαταστήσετε το πρόσθετο κατευθείαν, καθώς χρησιμοποιείτε το Matomo σε πολλαπλούς διακομιστές. Το πρόσθετο εγκαθίσταται σε ένα μόνο διακομιστή. Εναλλακτικά κατεβάστε το και εγκαταστήστε το χειροκίνητα σε όλους τους διακομιστές σας.",
- "AutoUpdateDisabledWarning": "Δεν μπορείτε να εγκαταστήσετε ή ενημερώσετε το πρόσθετο απευθείας, καθώς οι αυτόματες ενημερώσεις έχουν απενεργοποιηθεί στο αρχείο ρυθμίσεων. Για να ενεργοποιήσετε τις αυτόματες ενημερώσεις, ορίστε το %1$s στο %2$s.",
- "ViewRepositoryChangelog": "Εμφάνιση των αλλαγών"
+ "ViewRepositoryChangelog": "Εμφάνιση των αλλαγών",
+ "ViewSubscriptions": "Εμφάνιση των συνδρομών",
+ "ViewSubscriptionsSummary": "%1$sΔείτε τις συνδρομές για τα πρόσθετά σας%2$s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Marketplace/lang/en.json b/plugins/Marketplace/lang/en.json
index 84177ce76d..c139182f02 100644
--- a/plugins/Marketplace/lang/en.json
+++ b/plugins/Marketplace/lang/en.json
@@ -8,6 +8,10 @@
"AllowedUploadFormats": "You may upload a plugin or theme in .zip format via this page.",
"Authors": "Authors",
"Browse": "Browse",
+ "TryFreeTrialTitle": "Try 30 days for free, then",
+ "FreeTrialLabel" : "Free Trial",
+ "SpecialOffer": "Special Offer",
+ "TrialHints": "All premium features come with a %1$sfree 30-day trial%2$s. It is risk-free and there are no strings attached.",
"SupportMatomoThankYou": "Any purchase will help fund the future of the Matomo open-source project. Thank you for your support!",
"LatestMarketplaceUpdates": "Latest Marketplace Updates",
"BackToMarketplace": "Back to Marketplace",
diff --git a/plugins/Marketplace/lang/nb.json b/plugins/Marketplace/lang/nb.json
index e6a656d8cf..a0aab041d6 100644
--- a/plugins/Marketplace/lang/nb.json
+++ b/plugins/Marketplace/lang/nb.json
@@ -22,6 +22,7 @@
"ExceptionLinceseKeyIsExpired": "Denne lisensnøkkelen har utløpt.",
"ExceptionLinceseKeyIsNotValid": "Denne lisensnøkkelen er ikke gyldig.",
"FeaturedPlugin": "Fremhevet utvidelse",
+ "FreeTrialLabel": "Gratis prøveperiode",
"InstallAllPurchasedPlugins": "Installer alle kjøpte programtillegg samtidig",
"InstallAllPurchasedPluginsAction": "Installer og aktiver %d kjøpte programtillegg",
"InstallPurchasedPlugins": "Installerte kjøpte programtillegg",
@@ -60,6 +61,7 @@
"SortByLastUpdated": "Sist oppdatert",
"SortByNewest": "Nyeste",
"SortByPopular": "Populære",
+ "SpecialOffer": "Spesialtilbud",
"StepDownloadingPluginFromMarketplace": "Laster ned utvidelse fra markedsplassen",
"StepDownloadingThemeFromMarketplace": "Laster ned tema fra markedsplassen",
"StepPluginSuccessfullyInstalled": "Du har installert utvidelsen %1$s %2$s.",
@@ -78,6 +80,8 @@
"SubscriptionType": "Type",
"Support": "Støtte",
"TeaserExtendPiwikByUpload": "Utvid Matomo ved å laste opp en ZIP-fil",
+ "TrialHints": "Alle premiumsfuksjoner har en %1$sgratis 30-dagersperiode%2$s. Det er risikofritt og uten forpliktelser.",
+ "TryFreeTrialTitle": "Prøv 30 dager gratis, og så",
"Updated": "Oppdatert",
"UpdatingPlugin": "Oppdaterer %1$s",
"UpgradeSubscription": "Oppgrader abonnement",
diff --git a/plugins/Marketplace/lang/pt-br.json b/plugins/Marketplace/lang/pt-br.json
index 0b04ed4b22..2643277d3d 100644
--- a/plugins/Marketplace/lang/pt-br.json
+++ b/plugins/Marketplace/lang/pt-br.json
@@ -24,6 +24,7 @@
"ExceptionLinceseKeyIsExpired": "Esta chave de licença está expirada.",
"ExceptionLinceseKeyIsNotValid": "Esta chave de licença não é válida.",
"FeaturedPlugin": "Plugin destaque",
+ "FreeTrialLabel": "Teste Grátis",
"InstallAllPurchasedPlugins": "Instalar todos os plugins comprados de uma só vez",
"InstallAllPurchasedPluginsAction": "Instalar e ativar %d plugins comprados",
"InstallPurchasedPlugins": "Instalar plugins comprados",
@@ -87,6 +88,7 @@
"SortByLastUpdated": "Última atualização",
"SortByNewest": "Mais recente",
"SortByPopular": "Popular",
+ "SpecialOffer": "Oferta Especial",
"StepDownloadingPluginFromMarketplace": "Transferindo plugin do Marketplace",
"StepDownloadingThemeFromMarketplace": "Transferindo tema do Marketplace",
"StepPluginSuccessfullyInstalled": "Você instalou com sucesso o plugin %1$s %2$s.",
@@ -106,6 +108,8 @@
"Support": "Suporte",
"SupportMatomoThankYou": "Qualquer compra ajudará a financiar o futuro do projeto de código aberto Matomo. Obrigado pelo seu apoio!",
"TeaserExtendPiwikByUpload": "Estenda o Matomo carregando um arquivo ZIP",
+ "TrialHints": "Todos os recursos premium vêm com um %1$steste gratuito de 30 dias%2$s. É livre de riscos e sem amarras.",
+ "TryFreeTrialTitle": "Experimente 30 dias grátis e depois",
"Updated": "Atualizado(a)",
"UpdatingPlugin": "Atualizando %1$s",
"UpgradeSubscription": "Atualizar inscrição",
diff --git a/plugins/Marketplace/lang/sq.json b/plugins/Marketplace/lang/sq.json
index 853c3c604c..021bf5a4a4 100644
--- a/plugins/Marketplace/lang/sq.json
+++ b/plugins/Marketplace/lang/sq.json
@@ -1,117 +1,121 @@
{
"Marketplace": {
- "ActivateLicenseKey": "Aktivizoje",
"ActionActivatePlugin": "Aktivizoje shtojcën",
- "ActionActivateTheme": "Aktivizojeni temën",
+ "ActionActivateTheme": "Aktivizoje temën",
"ActionInstall": "Instaloje",
+ "ActivateLicenseKey": "Aktivizoje",
"AddToCart": "Shtoje në shportë",
+ "AllPaidPluginsInstalledAndActivated": "Krejt shtojcat e paguara u instaluan dhe aktivizuan me sukses.",
"AllowedUploadFormats": "Një shtojcë apo një temë mund ta ngarkoni në formatin .zip përmes kësaj faqeje.",
"Authors": "Autorë",
- "Browse": "Shfletoni",
- "SupportMatomoThankYou": "Çfarëdo blerjeje do të ndihmojë financimin e të ardhmes së projektit me burim të hapur Matomo. Faleminderit për përkrahjen!",
- "LatestMarketplaceUpdates": "Përditësimet Më të Reja Nga Marketplace-i",
+ "AutoUpdateDisabledWarning": "S’mundeni ta instaloni ose përditësoni shtojcën drejtpërsëdrejti, ngaqë përditësimet e vetvetishme janë çaktivizuar te formësimi. Që të aktivizoni përditësimet e vetvetishme caktoni %1$s për %2$s.",
"BackToMarketplace": "Mbrapsht te Marketplace",
+ "Browse": "Shfletoni",
"BrowseMarketplace": "Shfletoni në Marketplace",
"ByXDevelopers": "nga zhvilluesit %s",
"CannotInstall": "S’instalohet dot",
"CannotUpdate": "S’përditësohet dot",
"ClickToCompletePurchase": "Klikoni që të plotësoni blerjen.",
+ "ConfirmRemoveLicense": "Jeni i sigurt se doni të hiqe kyçi juaj i licencës? S’do të merrni më përditësime, për cilëndo nga shtojcat që keni blerë.",
"CurrentNumPiwikUsers": "Matomo-ja juaj hëpërhë ka %1$s përdorues të regjistruar.",
- "ConfirmRemoveLicense": "Jeni i sigurt se doni të hiqe kyçi juaj i licencës? Nuk do të merrni më përditësime për cilëndo nga shtojcat që keni blerë.",
"Developer": "Zhvillues",
"DevelopersLearnHowToDevelopPlugins": "Zhvillues: Mësoni se si ta thelloni dhe përshtatni Matomo-n përmes %1$shartimit të shtojcave ose temave%2$s.",
- "NoticeRemoveMarketplaceFromReportingMenu": "Marketplace-in mund ta hiqni nga menuja e raporteve duke instaluar shtojcën %1$sWhite Label%2$s.",
- "Marketplace": "Marketplace",
- "PaidPlugins": "Veçori Me Pagesë",
+ "Exceeded": "E tejkaluar",
+ "ExceptionLinceseKeyIsExpired": "Ky kyç licence ka skaduar.",
+ "ExceptionLinceseKeyIsNotValid": "Ky kyç licence s’është i vlefshëm.",
"FeaturedPlugin": "Shtojcë e zgjedhur",
+ "FreeTrialLabel": "Provë Falas",
+ "InstallAllPurchasedPlugins": "Instaloji krejt shtojcat e blera njëherazi",
+ "InstallAllPurchasedPluginsAction": "Instalo dhe aktivizo %d shtojcat e blera",
+ "InstallPurchasedPlugins": "Instalo shtojcat e blera",
+ "InstallThesePlugins": "Kjo do të instalojë dhe aktivizojë shtojcat vijuese:",
"InstallingNewPluginViaMarketplaceOrUpload": "%1$s mund ta instaloni vetvetiu prej Marketplace-it ose %2$stë ngarkoni një %3$s%4$s në formatin .zip.",
"InstallingPlugin": "Po instalohet %s",
- "InstallPurchasedPlugins": "Instalo shtojcat e blera",
"LastCommitTime": "(parashtrimi i fundit %s)",
"LastUpdated": "Përditësuar Së Fundi Më",
+ "LatestMarketplaceUpdates": "Përditësimet Më të Reja Nga Marketplace-i",
"License": "Licencë",
+ "LicenseExceeded": "Licencë e tejkaluar",
+ "LicenseExceededDescription": "Licencat për shtojcat vijuese s’janë më të vlefshme, ngaqë është tejkaluar numri i përdoruesve të autorizuar për licencë: %1$s. %2$sS’do të jeni në gjendje të shkarkoni përditësime për këto shtojca. Që ta zgjidhni këtë problem, ose fshini disa nga përdoruesit ose %3$spërmirësojeni pajtimin tani%4$s.",
+ "LicenseExceededPossibleCause": "Licenca është tejkaluar. Në këtë instalim Matomo ka gjasa të ketë më shumë përdorues se sa autorizon pajtimi.",
+ "LicenseExpired": "Licenca ka skaduar",
+ "LicenseExpiredDescription": "Licencat për shtojcat vijuese kanë skaduar: %1$s. %2$sPër këto shtojca s’do të merrni më përditësime. Që ta zgjidhni këtë problem, %3$srinovojeni pajtimin tuaj tani%4$s, ose çaktivizojeni shtojcën, nëse nuk e përdorni më.",
"LicenseKey": "Kyç licence",
"LicenseKeyActivatedSuccess": "Kyçi i licencës u aktivizua me sukses!",
"LicenseKeyDeletedSuccess": "Kyçi i licencës u çaktivizua me sukses.",
- "Exceeded": "E tejkaluar",
+ "LicenseKeyExpiresSoon": "Kyçi juaj i licencës skadon së shpejti, ju lutemi, lidhuni me %1$s.",
+ "LicenseKeyIsExpired": "Kyçi juaj i licencës ka skaduar, Ju lutemi, lidhuni me %1$s.",
+ "LicenseKeyIsValidShort": "Kyçi i licencës është i vlefshëm!",
"LicenseMissing": "Mungon licenca",
"LicenseMissingDeactivatedDescription": "Shtojcat vijuese janë çaktivizuar, ngaqë i përdorni pa licencë: %1$s. %2$sQë ta zgjidhni këtë çështje, ose përditësoni kyçin tuaj të licencës, %3$sbëni një pajtim%4$s ose çaktivizoni shtojcën.",
- "PluginLicenseMissingDescription": "Nuk keni leje ta shkarkoni këtë shtojcë, ngaqë për të s’ka licencë. Që ta zgjidhni këtë problem, ose përditësoni kyçin tuaj të licencës, merrni një kyç të ri ose çinstalojeni shtojcën.",
- "LicenseExceeded": "Licencë e tejkaluar",
- "LicenseExceededDescription": "Licencat për shtojcat vijuese s’janë më të vlefshme, ngaqë është tejkaluar numri i përdoruesve të autorizuar për licencë: %1$s. %2$sS’do të jeni në gjendje të shkarkoni përditësime për këto shtojca. Që ta zgjidhni këtë problem, ose fshini disa nga përdoruesit ose %3$spërmirësojeni pajtimin tani%4$s.",
- "PluginLicenseExceededDescription": "S’keni leje ta shkarkoni këtë shtojcë. Licenca për këtë shtojcë s’është më e vlefshme, ngaqë është tejkaluar numri i përdoruesve të autorizuar për licencë. Që ta zgjidhni këtë problem, ose fshini disa nga përdoruesit, ose përmirësojeni pajtimin tuaj tani.",
- "LicenseExpired": "Licenca ka skaduar",
- "LicenseExpiredDescription": "Licencat për shtojcat vijuese kanë skaduar: %1$s. %2$sS’do të merrni më përditësime për këto shtojca. Që ta zgjidhni këtë problem, %3$srinovojeni pajtimin tuaj tani%4$s, ose çaktivizojeni shtojcën, nëse nuk e përdorni më.",
"LicenseRenewsNextPaymentDate": "Rinovohet datën e pagesës së ardhshme",
- "UpgradeSubscription": "Përmirësoje Pajtimin",
- "ViewSubscriptionsSummary": "%1$sShihni pajtimet tuaja për shtojca.%2$s",
- "ViewSubscriptions": "Shihni pajtime",
- "ExceptionLinceseKeyIsExpired": "Ky kyç licence ka skaduar.",
- "ExceptionLinceseKeyIsNotValid": "Ky kyç licence s’është i vlefshëm.",
- "LicenseKeyIsValidShort": "Kyçi i licencës është i vlefshëm!",
- "RemoveLicenseKey": "Hiqe kyçin e licencës",
- "InstallAllPurchasedPlugins": "Instaloji krejt shtojcat e blera njëherazi",
- "InstallAllPurchasedPluginsAction": "Instalo dhe aktivizo %d shtojcat e blera",
- "InstallThesePlugins": "Kjo do të instalojë dhe aktivizojë shtojcat vijuese:",
- "AllPaidPluginsInstalledAndActivated": "Krejt shtojcat e paguara u instaluan dhe aktivizuan me sukses.",
- "OnlySomePaidPluginsInstalledAndActivated": "Disa shtojca të paguara s’u instaluan dot me sukses.",
+ "Marketplace": "Marketplace",
+ "MultiServerEnvironmentWarning": "S’mundeni ta instaloni apo përditësoni shtojcën drejtpërsëdrejti, ngaqë po përdorni Matomo-n në disa shërbyes. Shtojca do të instalohej vetëm në një shërbyes. Në vend të kësaj, shkarkojeni shtojcën dhe instalojeni dorazi te krejt shërbyesit tuaj.",
"NewVersion": "version i ri",
- "NotAllowedToBrowseMarketplacePlugins": "Mund të shfletoni listën e shtojcave që mund të instalohen për përshtatjen ose zgjerimin e platformës tuaj Matomo. Ju lutemi, lidhuni me përgjegjësin e instalimit tuaj, nëse keni nevojë të instalohet ndonjë prej këtyre.",
- "NotAllowedToBrowseMarketplaceThemes": "Mund të shfletoni listën e temave që mund të instalohen për përshtatjen e pamjes së platformës tuaj Matomo. Ju lutemi, lidhuni me përgjegjësin e instalimit tuaj, nëse keni nevojë të instalohet ndonjë prej këtyre.",
"NoPluginsFound": "S’u gjetën shtojca",
- "NoThemesFound": "S’u gjetën tema",
"NoSubscriptionsFound": "S’u gjetën pajtime",
+ "NoThemesFound": "S’u gjetën tema",
+ "NoValidSubscriptionNoUpdates": "Pasi të ketë skaduar një pajtim, s’do të jeni më në gjendje të merrni përditësime për këtë shtojcë.",
+ "NotAllowedToBrowseMarketplacePlugins": "Mund të shfletoni listën e shtojcave që mund të instalohen për përshtatjen ose zgjerimin e platformës tuaj Matomo. Ju lutemi, lidhuni me përgjegjësin e instalimit tuaj, nëse keni nevojë të instalohet ndonjë prej këtyre.",
+ "NotAllowedToBrowseMarketplaceThemes": "Mund të shfletoni listën e temave që mund të instalohen për përshtatjen e pamjes së platformës tuaj Matomo. Ju lutemi, lidhuni me përgjegjësin e instalimit tuaj, nëse keni nevojë të instalohet ndonjë prej këtyre.",
+ "NoticeRemoveMarketplaceFromReportingMenu": "Marketplace-in mund ta hiqni nga menuja e raporteve duke instaluar shtojcën %1$sWhite Label%2$s.",
"NumDownloadsLatestVersion": "Versioni më i ri: %s Shkarkime",
+ "OnlySomePaidPluginsInstalledAndActivated": "Disa shtojca të paguara s’u instaluan dot me sukses.",
"OverviewPluginSubscriptions": "Përmbledhje e pajtimeve tuaja në shtojca",
- "OverviewPluginSubscriptionsMissingLicense": "S’keni caktuar ndonjë kyç licence. Nëse keni blerë një pajtim shtojce, shkoni te %1$sMarketplace%2$s dhe jepni kyçin tuaj të licencës.",
"OverviewPluginSubscriptionsAllDetails": "Që të shihni krejt hollësitë, ose të ndryshoni një pajtim, hyni te llogaria juaj.",
"OverviewPluginSubscriptionsMissingInfo": "Mundet që mungon një pajtim, për shembull, nëse s’është përfunduar ende një pagesë. Në një rast të tillë riprovoni pas pak orësh, ose lidhuni me ekipin e Matomo-s.",
- "NoValidSubscriptionNoUpdates": "Pasi të ketë skaduar një pajtim, s’do të jeni më në gjendje të merrni përditësime për këtë shtojcë.",
- "PluginSubscriptionsList": "Kjo është një listë pajtimesh përshoqëruar kyçit tuaj të licencës.",
+ "OverviewPluginSubscriptionsMissingLicense": "S’keni caktuar ndonjë kyç licence. Nëse keni blerë një pajtim shtojce, shkoni te %1$sMarketplace%2$s dhe jepni kyçin tuaj të licencës.",
+ "PaidPlugins": "Veçori Me Pagesë",
"PaidPluginsNoLicenseKeyIntro": "Nëse keni blerë një %1$sshtojcë nga ato me pagesë%2$s, ju lutemi, futni më poshtë kyçin e licencës që morët.",
- "PaidPluginsWithLicenseKeyIntro": "Është rregulluar një kyç i vlefshëm licence. Për arsye sigurie kyçin e licencës nuk e shfaqim këtu. Nëse keni humbur kyçin tuaj të licencës, ju lutemi, lidhuni me ekipin e Matomo-s.",
"PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "Nëse keni blerë një %1$sshtojcë nga ato me pagesë%2$s në Marketplace, ju lutemi, kërkojini një përdoruesi me të drejta Superpërdoruesi të shtojë kyçin e licencës.",
+ "PaidPluginsWithLicenseKeyIntro": "Është rregulluar një kyç i vlefshëm licence. Kyçin e licencës, për arsye sigurie, s’e shfaqim këtu. Nëse keni humbur kyçin tuaj të licencës, ju lutemi, lidhuni me ekipin e Matomo-s.",
"PluginDescription": "Thelloni dhe zgjeroni funksionimin e Matomo-s, përmes Marketplace-it, duke shkarkuar prej andej shtojca dhe tema grafike.",
"PluginKeywords": "Fjalëkyçe",
+ "PluginLicenseExceededDescription": "S’keni leje ta shkarkoni këtë shtojcë. Licenca për këtë shtojcë s’është më e vlefshme, ngaqë është tejkaluar numri i përdoruesve të autorizuar për licencë. Që ta zgjidhni këtë problem, ose fshini disa nga përdoruesit, ose përmirësojeni pajtimin tuaj tani.",
+ "PluginLicenseMissingDescription": "Nuk keni leje ta shkarkoni këtë shtojcë, ngaqë për të s’ka licencë. Që ta zgjidhni këtë problem, ose përditësoni kyçin tuaj të licencës, merrni një kyç të ri, ose çinstalojeni shtojcën.",
+ "PluginSubscriptionsList": "Kjo është një listë pajtimesh përshoqëruar kyçit tuaj të licencës.",
"PluginUpdateAvailable": "Po përdorni versionin %1$s dhe ka gati një version të ri %2$s.",
+ "PluginUploadDisabled": "Ngarkimi i shtojcës është i çaktivizuar te kartela e formësimit. Që të mund të aktivizoni këtë veçori, ju lutemi, përditësoni formësimin tuaj ose lidhuni me përgjegjësin tuaj",
"PluginVersionInfo": "%1$s nga %2$s",
"PluginWebsite": "Sajt i Shtojcës",
"PriceExclTax": "%1$s %2$s pa taksat.",
- "PriceFromPerPeriod": "Nga %1$s \/ %2$s",
+ "PriceFromPerPeriod": "Nga %1$s / %2$s",
+ "RemoveLicenseKey": "Hiqe kyçin e licencës",
"Reviews": "Shqyrtime",
- "ShownPriceIsExclTax": "Çmimi i treguar është pa taksat.",
"Screenshots": "Foto ekrani",
- "SortByNewest": "Më të Rejat",
+ "ShownPriceIsExclTax": "Çmimi i treguar është pa taksat.",
"SortByAlpha": "Alfabetikisht",
"SortByLastUpdated": "Përditësuar së fundi",
+ "SortByNewest": "Më të Rejat",
"SortByPopular": "Popullore",
+ "SpecialOffer": "Ofertë Speciale",
"StepDownloadingPluginFromMarketplace": "Po shkarkohet shtojca që nga Marketplace-i",
"StepDownloadingThemeFromMarketplace": "Po shkarkohet tema që nga Marketplace-i",
- "StepUnzippingPlugin": "Po shpaketohet shtojca",
- "StepUnzippingTheme": "Po shpaketohet tema",
- "StepThemeSuccessfullyInstalled": "E instaluat me sukses temën %1$s %2$s.",
"StepPluginSuccessfullyInstalled": "E instaluat me sukses shtojcën %1$s %2$s.",
"StepPluginSuccessfullyUpdated": "E përditësuat me sukses shtojcën %1$s %2$s.",
"StepReplaceExistingPlugin": "Po zëvendësohet shtojca ekzistuese",
"StepReplaceExistingTheme": "Po zëvendësohet tema ekzistuese",
+ "StepThemeSuccessfullyInstalled": "E instaluat me sukses temën %1$s %2$s.",
"StepThemeSuccessfullyUpdated": "E përditësuat me sukses temën %1$s %2$s.",
- "SubscriptionType": "Lloj",
- "SubscriptionStartDate": "Datë fillimi",
- "SubscriptionEndDate": "Datë mbarimi",
- "SubscriptionNextPaymentDate": "Datë e pagesës pasuese",
- "SubscriptionInvalid": "Ky pajtim është i pavlefshëm ose ka skaduar",
+ "StepUnzippingPlugin": "Po shpaketohet shtojca",
+ "StepUnzippingTheme": "Po shpaketohet tema",
+ "SubscriptionEndDate": "Datë përfundimi",
"SubscriptionExpiresSoon": "Ky pajtim skadon së shpejti",
+ "SubscriptionInvalid": "Ky pajtim është i pavlefshëm ose ka skaduar",
+ "SubscriptionNextPaymentDate": "Datë e pagesës pasuese",
+ "SubscriptionStartDate": "Datë fillimi",
+ "SubscriptionType": "Lloj",
"Support": "Asistencë",
+ "SupportMatomoThankYou": "Çfarëdo blerjeje do të ndihmojë financimin e të ardhmes së projektit me burim të hapur Matomo. Faleminderit për përkrahjen!",
"TeaserExtendPiwikByUpload": "Zgjerojeni Matomo-n përmes ngarkimit të një kartele ZIP",
- "LicenseExceededPossibleCause": "Licenca është tejkaluar. Në këtë instalim Matomo ka gjasa të ketë më shumë përdorues se sa autorizon pajtimi.",
+ "TrialHints": "Krejt veçoritë me pagesë vijnë me një %1$speriudhë 30 ditë falas%2$s. Është pa rrezik dhe pa yçkla nga pas.",
+ "TryFreeTrialTitle": "Provojeni 30 ditë falas, mandej",
"Updated": "U përditësua",
"UpdatingPlugin": "Po përditësohet %1$s",
+ "UpgradeSubscription": "Përmirësoje Pajtimin",
"UploadZipFile": "Ngarkoni kartelë ZIP",
- "PluginUploadDisabled": "Ngarkimi i shtojcës është i çaktivizuar te kartela e formësimit. Që të mund të aktivizoni këtë veçori, ju lutemi, përditësoni formësimin tuaj ose lidhuni me përgjegjësin tuaj",
- "LicenseKeyExpiresSoon": "Kyçi juaj i licencës skadon së shpejti, ju lutemi, lidhuni me %1$s.",
- "LicenseKeyIsExpired": "Kyçi juaj i licencës ka skaduar, Ju lutemi, lidhuni me %1$s.",
- "MultiServerEnvironmentWarning": "S’mundeni ta instaloni apo përditësoni shtojcën drejtpërsëdrejti, ngaqë po përdorni Matomo-n në disa shërbyes. Shtojca do të instalohej vetëm në një shërbyes. Në vend të kësaj, shkarkojeni shtojcën dhe instalojeni dorazi te krejt shërbyesit tuaj.",
- "AutoUpdateDisabledWarning": "S’mundeni ta instaloni ose përditësoni shtojcën drejtpërsëdrejti, ngaqë përditësimet e vetvetishme janë çaktivizuar te formësimi. Që të aktivizoni përditësimet e vetvetishme vëreni %1$s si %2$s.",
- "ViewRepositoryChangelog": "Shihni ndryshimet"
+ "ViewRepositoryChangelog": "Shihni ndryshimet",
+ "ViewSubscriptions": "Shihni pajtime",
+ "ViewSubscriptionsSummary": "%1$sShihni pajtimet tuaja për shtojca.%2$s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Marketplace/lang/tr.json b/plugins/Marketplace/lang/tr.json
index b59397de88..682759e15a 100644
--- a/plugins/Marketplace/lang/tr.json
+++ b/plugins/Marketplace/lang/tr.json
@@ -24,6 +24,7 @@
"ExceptionLinceseKeyIsExpired": "Lisans anahtarının süresi dolmuş.",
"ExceptionLinceseKeyIsNotValid": "Lisans anahtarı geçersiz.",
"FeaturedPlugin": "Öne çıkarılmış uygulama eki",
+ "FreeTrialLabel": "Ücretsiz deneme",
"InstallAllPurchasedPlugins": "Satın alınmış tüm uygulama ekleri bir kerede yüklensin",
"InstallAllPurchasedPluginsAction": "Satın alınmış %d uygulama ekini kur ve etkinleştir",
"InstallPurchasedPlugins": "Satın alınmış uygulama eklerini kur",
@@ -87,6 +88,7 @@
"SortByLastUpdated": "Son güncelleme",
"SortByNewest": "En yeni",
"SortByPopular": "Beğenilen",
+ "SpecialOffer": "Özel teklif",
"StepDownloadingPluginFromMarketplace": "Uygulama eki mağazadan indiriliyor",
"StepDownloadingThemeFromMarketplace": "Tema mağazadan indiriliyor",
"StepPluginSuccessfullyInstalled": "%1$s %2$s uygulama eki kuruldu.",
@@ -106,6 +108,8 @@
"Support": "Destek",
"SupportMatomoThankYou": "Yapılan her satış Matomo açık kaynak projesinin sürmesine destek olur. Desteğiniz için teşekkürler!",
"TeaserExtendPiwikByUpload": "Bir ZIP dosyası yükleyerek Matomo özelliklerini arttırın",
+ "TrialHints": "Tüm premium özellikler, %1$s 30 günlük ücretsiz deneme%2$s ile birlikte gelir. Risksizdir ve bağlayıcı herhangi bir koşul yoktur.",
+ "TryFreeTrialTitle": "30 gün ücretsiz, sonra",
"Updated": "Güncellendi",
"UpdatingPlugin": "%1$s güncelleniyor",
"UpgradeSubscription": "Aboneliği yükselt",
diff --git a/plugins/Marketplace/templates/getPremiumFeatures.twig b/plugins/Marketplace/templates/getPremiumFeatures.twig
index 3663ff69c0..c0cc827478 100644
--- a/plugins/Marketplace/templates/getPremiumFeatures.twig
+++ b/plugins/Marketplace/templates/getPremiumFeatures.twig
@@ -1,14 +1,20 @@
<div class="getNewPlugins getPremiumFeatures widgetBody">
<div class="row">
<div class="col s12 m12">
- <h3 style="margin-bottom: 28px;">{{ 'Marketplace_SupportMatomoThankYou'|translate }}</h3></div>
+ <h3 style="font-weight: bold;color: #5bb75b">{{ 'Marketplace_TrialHints'|translate("<a style='color:#5bb75b;text-decoration: underline;' href='https://shop.matomo.org/free-trial/' target='_blank' rel='nofollo'>","</a>")|raw }}</h3>
+ <h3 style="margin-bottom: 28px;color: #5bb75b">{{ 'Marketplace_SupportMatomoThankYou'|translate }} <i class='icon-heart red-text'></i></h3></div>
{% for plugin in plugins %}
<div class="col s12 m4">
<h3 class="pluginName" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ plugin.displayName }}</h3>
+ {% if plugin.specialOffer !='' %}
+ <span class="pluginSubtitle">
+ <span>{{ 'Marketplace_SpecialOffer'|translate }}:</span> {{ plugin.specialOffer }}
+ </span>
+ {% endif %}
<span class="pluginBody">
- {{ plugin.description }}
+ {% if plugin.isBundle %} {{ 'Marketplace_SpecialOffer'|translate }}: {% endif %}{{ plugin.description }}
<br />
<a href="javascript:;" class="pluginMoreDetails" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ 'General_MoreDetails'|translate }}</a>
</span>
diff --git a/plugins/Marketplace/templates/plugin-details.twig b/plugins/Marketplace/templates/plugin-details.twig
index 1cdfc2a079..794e6fed0e 100644
--- a/plugins/Marketplace/templates/plugin-details.twig
+++ b/plugins/Marketplace/templates/plugin-details.twig
@@ -123,6 +123,7 @@
{% if plugin.shop.variations|length %}
+ <h4 style="color:#5bb75b;font-weight: bold;font-size: 1.2em;">{{ 'Marketplace_TryFreeTrialTitle'|translate }}</h4>
<div class="input-field variationPicker">
<select title="{{ 'Marketplace_ShownPriceIsExclTax'|translate|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}">
{% for variation in plugin.shop.variations %}
diff --git a/plugins/Marketplace/templates/plugin-list.twig b/plugins/Marketplace/templates/plugin-list.twig
index a8d13dcb87..d225ce5439 100644
--- a/plugins/Marketplace/templates/plugin-list.twig
+++ b/plugins/Marketplace/templates/plugin-list.twig
@@ -70,7 +70,7 @@
{% else %}
{{ 'General_MoreDetails'|translate }}
{% endif %}
-
+ <span style="white-space: nowrap;">({{ 'Marketplace_FreeTrialLabel'|translate }})</span>
</a>
{% endmacro %}
@@ -86,7 +86,6 @@
</div>
{% elseif plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
-
<div class="alert alert-danger">
{{ 'Marketplace_LicenseExceeded'|translate }}
@@ -99,7 +98,6 @@
{{ 'CoreUpdater_UpdateTitle'|translate }}
</a>
{% elseif plugin.missingRequirements|length > 0 or not isAutoUpdatePossible %}
-
{% macro downloadButton(showOr, plugin, isAutoUpdatePossible, showBrackets = false) -%}
{%- if plugin.missingRequirements|length == 0 and plugin.isDownloadable and not isAutoUpdatePossible -%}
{% if showBrackets %}({% endif %}<span onclick="$(this).css('display', 'none')">
diff --git a/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
index 73ed18059f..a3f49c3349 100644
--- a/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
+++ b/plugins/Marketplace/tests/Integration/UpdateCommunicationTest.php
@@ -17,7 +17,6 @@ use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Twig;
use Piwik\View;
-use Twig\Environment;
/**
* @group Plugins
diff --git a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
index 5ed4d5a73b..d1c71b935a 100644
--- a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
+++ b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_exceeded_license_user.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a8f4c2eccfb82d52d1f09ac6d4af7a8968c21c79a21096c92828ce8678ef5f6f
-size 76181
+oid sha256:8c3f32581b36e9fa22316e49ffd8d3735897fea2e6124473ad120fbebe9235b9
+size 79475
diff --git a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
index 47f4f73d96..177b5051aa 100644
--- a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
+++ b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_multiUserEnvironment.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e1454b85549aa8618cc001515b30a712e1afd37c0783a204b3666bdcfde29f69
-size 106456
+oid sha256:27f5d4e9b7938c00ebe3c7f35664f6f3e2031fa455abf09cfd3e9ce8d7de29ab
+size 110566
diff --git a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
index 5521860fab..cfc6c7c38f 100644
--- a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
+++ b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_superuser.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:46cb19680cbd6081e728cc799c2bd5a7db6b256e1b90eb0aec576522f30c6ad8
-size 90142
+oid sha256:32ed63595ca25112fc7eab52634c70eafa0d237a5057f20eeb027d4869ab95d1
+size 93697
diff --git a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
index 80e34ec955..6f7adc7be4 100644
--- a/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
+++ b/plugins/Marketplace/tests/UI/expected-screenshots/Marketplace_paid_plugin_details_no_license_user.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:209cd3420c768d7189b4cbaeb2d7435ad0c3bd9a2c9ff8df2b929cb338dfb069
-size 75797
+oid sha256:fb660529f02032a8c257cd49016063b717a3680998e987b541d564bdc88ca9c7
+size 79143
diff --git a/plugins/MobileAppMeasurable/lang/ca.json b/plugins/MobileAppMeasurable/lang/ca.json
index 0967ef424b..3452e01464 100644
--- a/plugins/MobileAppMeasurable/lang/ca.json
+++ b/plugins/MobileAppMeasurable/lang/ca.json
@@ -1 +1,7 @@
-{}
+{
+ "MobileAppMeasurable": {
+ "MobileApp": "Aplicació mòbil",
+ "MobileAppDescription": "Una aplicació mòbil nativa per a iOS, Android o qualsevol altre sistema operatiu mòbil.",
+ "MobileApps": "Aplicacions mòbils"
+ }
+}
diff --git a/plugins/MobileAppMeasurable/lang/id.json b/plugins/MobileAppMeasurable/lang/id.json
index 64b67dc967..783de365a1 100644
--- a/plugins/MobileAppMeasurable/lang/id.json
+++ b/plugins/MobileAppMeasurable/lang/id.json
@@ -1,6 +1,7 @@
{
"MobileAppMeasurable": {
"MobileApp": "Aplikasi Mobil",
+ "MobileAppDescription": "Aplikasi seluler asli untuk iOS, Android, atau sistem operasi seluler lainnya.",
"MobileApps": "Aplikasi Mobil"
}
-} \ No newline at end of file
+}
diff --git a/plugins/MobileAppMeasurable/lang/sq.json b/plugins/MobileAppMeasurable/lang/sq.json
index 4ee1569244..9c6d8bf326 100644
--- a/plugins/MobileAppMeasurable/lang/sq.json
+++ b/plugins/MobileAppMeasurable/lang/sq.json
@@ -1,7 +1,7 @@
{
"MobileAppMeasurable": {
"MobileApp": "Aplikacion Celulari",
- "MobileApps": "Aplikacione Celulari",
- "MobileAppDescription": "Një aplikacion celulari, i shkruar në gjuhën origjinale të vetë sistemit, për iOS, Android ose çfarëdo sistemi tjetër operativ për celular."
+ "MobileAppDescription": "Një aplikacion celulari, i shkruar në gjuhën origjinale të vetë sistemit, për iOS, Android ose çfarëdo sistemi tjetër operativ për celular.",
+ "MobileApps": "Aplikacione Celulari"
}
-} \ No newline at end of file
+}
diff --git a/plugins/MobileMessaging/API.php b/plugins/MobileMessaging/API.php
index 808b8f370a..b1ecb07102 100644
--- a/plugins/MobileMessaging/API.php
+++ b/plugins/MobileMessaging/API.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\MobileMessaging;
use Piwik\Common;
-use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\MobileMessaging\SMSProvider;
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index 3dc8f3b72d..240ab55fb9 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -12,7 +12,6 @@ use Piwik\Option;
use Piwik\Period;
use Piwik\Piwik;
use Piwik\Plugins\API\API as APIPlugins;
-use Piwik\Plugins\MobileMessaging\API as APIMobileMessaging;
use Piwik\Plugins\MobileMessaging\ReportRenderer\ReportRendererException;
use Piwik\Plugins\MobileMessaging\ReportRenderer\Sms;
use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
diff --git a/plugins/MobileMessaging/SMSProvider.php b/plugins/MobileMessaging/SMSProvider.php
index fda7dcc2ec..48294bb123 100644
--- a/plugins/MobileMessaging/SMSProvider.php
+++ b/plugins/MobileMessaging/SMSProvider.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\MobileMessaging;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Plugin;
use Piwik\Piwik;
diff --git a/plugins/MobileMessaging/lang/ca.json b/plugins/MobileMessaging/lang/ca.json
index f12f8749b1..ca85ad0b88 100644
--- a/plugins/MobileMessaging/lang/ca.json
+++ b/plugins/MobileMessaging/lang/ca.json
@@ -1,27 +1,48 @@
{
"MobileMessaging": {
- "MobileReport_NoPhoneNumbers": "Siusplau, activeu com a mínim un numbre de telèfon per accedir.",
+ "Available_Credits": "Crèdits disponibles: %1$s",
+ "Exception_UnknownProvider": "Nom del proveïdor '%1$s' desconegut. Proveu qualsevol de les opcions següents: %2$s.",
+ "MobileReport_AdditionalPhoneNumbers": "Podeu afegir més números de telèfon accedint a",
+ "MobileReport_MobileMessagingSettingsLink": "la pàgina de configuració de missatgeria mòbil",
+ "MobileReport_NoPhoneNumbers": "Si us plau activeu almenys un número de telèfon accedint a",
"MultiSites_Must_Be_Activated": "Per generar SMS de les vostres estadístiques web, siusplau activeu la extensió MultiSites de Matomo.",
"PhoneNumbers": "Nombres de telèfon",
"PluginDescription": "Crea i descarrega informes personalitzats per SMS i envieu-los al vostre mobil de forma diària, semanal o mensual.",
+ "SMS_Content_Too_Long": "[massa llarg]",
+ "SettingsMenu": "Missatgeria Mòbil",
"Settings_APIKey": "Clau API",
"Settings_CountryCode": "Codi de país",
+ "Settings_CredentialInvalid": "El vostre compte de l'API SMS de %1$s està configurat, però s'ha produït un error en intentar rebre els crèdits disponibles.",
"Settings_CredentialNotProvided": "Abans de crear i gestionar els vostres nombres de telèfon, siusplau conecteu el Matomo a la vostra compta de SMS.",
+ "Settings_CredentialNotProvidedByAdmin": "Abans de poder crear i gestionar números de telèfon demaneu al vostre administrador que connecti Matomo a un compte d'SMS.",
"Settings_CredentialProvided": "La vostra compta de la API de SMS %s ha estat configurada correctament!",
+ "Settings_DelegatedPhoneNumbersOnlyUsedByYou": "Els números de telèfon configurats només el pot veure i utilitzar vosté i cap altre usuari.",
+ "Settings_DelegatedSmsProviderOnlyAppliesToYou": "El proveïdor d'SMS configurat només el farà servir vostè i cap altre usuari.",
"Settings_DeleteAccountConfirm": "Esteu segurs d'esborrar aquest compte de SMS?",
+ "Settings_EnterActivationCode": "Introduïu el codi d'activació",
"Settings_InvalidActivationCode": "El codi introduït és invàlid, sisplau torneu-ho a probar.",
"Settings_LetUsersManageAPICredential": "Permetre als usuaris administrar les seves credencials de la API de SMS",
"Settings_LetUsersManageAPICredential_No_Help": "Tots els usuaris poden rebre informes per SMS i faran servir els credits de la vostra compta.",
+ "Settings_LetUsersManageAPICredential_Yes_Help": "Cada usuari podrà configurar el seu propi compte SMS API i no utilitzarà el vostre crèdit.",
"Settings_ManagePhoneNumbers": "Administra nombres de telèfon",
"Settings_PhoneActivated": "Nombre de telèfon validat! Ara podeu rebre SMS amb les vostres estadístiques.",
"Settings_PhoneNumber": "Telèfon",
"Settings_PhoneNumbers_Add": "Afegir un nou telèfon",
+ "Settings_PhoneNumbers_CountryCode_Help": "Si no coneixeu el codi del país del telèfon, cerqueu el vostre país aquí.",
+ "Settings_PhoneNumbers_Help": "Abans de rebre informes SMS (missatges de text) en un telèfon cal introduir el número de telèfon a continuació.",
+ "Settings_PhoneNumbers_HelpAdd": "Quan feu clic a \"Afegeix\" s'enviarà un SMS amb un codi al telèfon. L'usuari que rebi el codi haurà d'iniciar sessió a Matomo, fer clic a Configuració i després a Missatgeria mòbil. Després d'introduir el codi l'usuari podrà rebre informes de text al seu telèfon.",
+ "Settings_PleaseSignUp": "Per crear informes per SMS i rebre missatges de text breus amb les estadístiques dels vostres llocs web al vostre telèfon mòbil, registreu-vos amb l'API d'SMS i introduïu la vostra informació a continuació.",
"Settings_SMSAPIAccount": "Administra el compte de l'API de SMS",
"Settings_SMSProvider": "Proveïdor SMS",
+ "Settings_SelectCountry": "Escull un país",
"Settings_SuperAdmin": "Preferències del Super Usuari",
+ "Settings_SuspiciousPhoneNumber": "Si no rebeu el missatge de text, podeu provar-ho sense el zero inicial. Es a dir. %s",
+ "Settings_UpdateOrDeleteAccount": "També podeu %1$sactualitzar%2$s o %3$ssuprimir%4$s aquest compte.",
"Settings_ValidatePhoneNumber": "Valida",
- "SettingsMenu": "Missatgeria Mòbil",
- "SMS_Content_Too_Long": "[massa llarg]",
- "TopMenu": "Informes per Email i SMS"
+ "Settings_VerificationCodeJustSent": "Acabem d'enviar un SMS a aquest número amb un codi: introduïu aquest codi a dalt i feu clic a \"Validar\".",
+ "TopLinkTooltip": "Obteniu informes d'anàlisi web a la vostra safata d'entrada de correu electrònic o al vostre telèfon mòbil.",
+ "TopMenu": "Informes per Email i SMS",
+ "UserKey": "Clau d'usuari",
+ "VerificationText": "El codi és %1$s. Per validar el vostre número de telèfon i rebre informes SMS de Matomo, copieu aquest codi en el formulari disponible mitjançant Matomo - %2$s -- %3$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/MobileMessaging/lang/nb.json b/plugins/MobileMessaging/lang/nb.json
index 696b93f5e3..0fcd935264 100644
--- a/plugins/MobileMessaging/lang/nb.json
+++ b/plugins/MobileMessaging/lang/nb.json
@@ -7,11 +7,14 @@
"MobileReport_NoPhoneNumbers": "Aktiver minst ett telefonnummer ved å besøke",
"MultiSites_Must_Be_Activated": "For å generere SMS-er av din nettsidestatistikk må du skru på MultiSites-programtillegget i Matomo.",
"PhoneNumbers": "Telefonnumre",
+ "PluginDescription": "Opprett og last ned egendefinerte SMS-rapporter og få dem tilsendt mobiltelefonen din daglig, ukentlig, eller månedlig.",
"SMS_Content_Too_Long": "[for lang]",
"SettingsMenu": "Meldingstjenester",
"Settings_APIKey": "API-nøkkel",
"Settings_CountryCode": "Landskode",
+ "Settings_CredentialNotProvided": "Før du kan opprette og håndtere telefonnummer, koble Matomo til din SMS-konto ovenfor.",
"Settings_CredentialNotProvidedByAdmin": "Før du kan opprette og håndtere telefonnummer må du spørre din administrator om å koble Matomo til en SMS-konto.",
+ "Settings_CredentialProvided": "Din %s-SMS-API-konto er satt opp rett.",
"Settings_DelegatedPhoneNumbersOnlyUsedByYou": "De oppsatte telefonnumrene vises kun for deg, og kan ikke brukes av andre brukere.",
"Settings_DelegatedSmsProviderOnlyAppliesToYou": "Oppsatt SMS-tilbyder vil kun anvendes av deg og ikke av andre brukere.",
"Settings_DeleteAccountConfirm": "Er du sikker på at du vil slette denne SMS-kontoen?",
@@ -24,12 +27,15 @@
"Settings_PhoneNumber": "Telefonnummer",
"Settings_PhoneNumbers_Add": "Legg til et nytt telefonnummer",
"Settings_PhoneNumbers_CountryCode_Help": "Hvis du ikke kjenner telefonens landsretningskode kan du se etter landskoder her.",
+ "Settings_PhoneNumbers_Help": "Før du mottar SMS-rapporter på en telefon, må telefonnummeret skrives inn nedenfor.",
"Settings_SMSAPIAccount": "Behandle SMS API-konto",
"Settings_SMSProvider": "SMS-leverandør",
"Settings_SelectCountry": "Velg land",
"Settings_SuperAdmin": "Superbruker-instillinger",
+ "Settings_SuspiciousPhoneNumber": "Hvis du ikke mottar tekstmeldingen, kan du prøve uten innledende null, altså %s",
"Settings_UpdateOrDeleteAccount": "Du kan også %1$soppdatere%2$s eller %3$sslette%4$s denne kontoen.",
"Settings_ValidatePhoneNumber": "Valider",
+ "Settings_VerificationCodeJustSent": "En SMS med en kode har blitt sendt til dette nummeret. Skriv denne koden ovenfor og klikk «Bekreft».",
"TopMenu": "E-post- og SMS-rapporter",
"UserKey": "Brukernøkkel"
}
diff --git a/plugins/MobileMessaging/lang/sq.json b/plugins/MobileMessaging/lang/sq.json
index 2bc89905a1..85219bb90e 100644
--- a/plugins/MobileMessaging/lang/sq.json
+++ b/plugins/MobileMessaging/lang/sq.json
@@ -1,5 +1,6 @@
{
"MobileMessaging": {
+ "Available_Credits": "Krediti që zotëroni: %1$s",
"Exception_UnknownProvider": "Emër furnizuesi '%1$s' i panjohur. Provoni më mirë një nga vijuesit: %2$s.",
"MobileReport_AdditionalPhoneNumbers": "Mund të shtoni më tepër numra telefoni duke hyrë te",
"MobileReport_MobileMessagingSettingsLink": "faqja e rregullimeve për Mesazhe Celulari",
@@ -7,16 +8,17 @@
"MultiSites_Must_Be_Activated": "Që të prodhohen tekste SMS për statistikat e sajtit tuaj, ju lutemi, aktivizoni shtojcën MultiSajte te Matomo.",
"PhoneNumbers": "Numra Telefonash",
"PluginDescription": "Krijoni dhe shkarkoni raporte vetjake SMS dhe bëni që të dërgohen te celulari juaj përditë, çdo javë ose çdo muaj.",
- "Settings_APIKey": "Kyç API-sh",
+ "SMS_Content_Too_Long": "[shumë i gjatë]",
+ "SettingsMenu": "Mesazhe Celulari",
+ "Settings_APIKey": "Kyç API",
"Settings_CountryCode": "Kod Vendi",
- "Settings_SelectCountry": "Përzgjidhni vend",
+ "Settings_CredentialInvalid": "Llogaria juaj API SMS %1$s është formësuar, por ndodhi një gabim teksa provohej të merrej krediti që zotëroni.",
"Settings_CredentialNotProvided": "Përpara se të mund të krijoni dhe administroni numra telefoni, ju lutemi, lidheni Matomo-n me Llogarinë tuaj SMS më sipër.",
"Settings_CredentialNotProvidedByAdmin": "Përpara se të mund të krijoni dhe administroni numra telefoni, ju lutemi, kërkojini përgjegjësit të instalimit tuaj të lidhë Matomo-n me një Llogari SMS.",
"Settings_CredentialProvided": "API juaj %s është e formësuar saktë!",
- "Settings_CredentialInvalid": "Llogaria juaj API SMS %1$s është formësuar, por ndodhi një gabim teksa provohej të merrej krediti që zotëroni.",
+ "Settings_DelegatedPhoneNumbersOnlyUsedByYou": "Numrat e telefonave të formësuar mund të shihen dhe përdoren vetëm nga ju dhe jo nga çfarëdo përdoruesi tjetër.",
+ "Settings_DelegatedSmsProviderOnlyAppliesToYou": "Furnizuesi i SMS-ve i formësuar do të përdoret vetëm nga ju dhe jo nga ndonjë përdorues tjetër çfarëdo.",
"Settings_DeleteAccountConfirm": "Jeni i sigurt se doni të fshihet kjo llogari SMS?",
- "Settings_DelegatedSmsProviderOnlyAppliesToYou": "Furnizuesi i SMS-ve i formësuar do të përdoret vetëm nga ju, dhe jo nga ndonjë përdorues tjetër çfarëdo.",
- "Settings_DelegatedPhoneNumbersOnlyUsedByYou": "Numrat e telefonave të formësuar mund të shihen dhe përdoren vetëm nga ju, dhe jo nga ndonjë përdorues tjetër çfarëdo.",
"Settings_EnterActivationCode": "Jepni kod aktivizimi",
"Settings_InvalidActivationCode": "Kodi i dhënë s’qe i vlefshëm, ju lutemi, riprovoni.",
"Settings_LetUsersManageAPICredential": "Lejoju përdoruesve të administrojnë furnizuesit e tyre SMS",
@@ -28,21 +30,19 @@
"Settings_PhoneNumbers_Add": "Shtoni një Numër Telefoni të ri",
"Settings_PhoneNumbers_CountryCode_Help": "Nëse nuk e dini kodin e telefonave për vendin tuaj, kontrolloni për vendin tuaj këtu.",
"Settings_PhoneNumbers_Help": "Përpara se të merren raporte me SMS (mesazhe tekst) në një telefon, duhet dhënë më poshtë numri i telefonit.",
- "Settings_PhoneNumbers_HelpAdd": "Kur klikoni \"Shtoje\", te telefoni do të dërgohet një SMS që përmban një kod. Përdoruesi që merr kodin, duhet mandej të bëjë hyrjen në Matomo, të klikojë mbi Rregullime, mandej të klikojë mbi Mesazhe Me Celular. Pasi të japë kodin, përdoruesi do të jetë në gjendje të marrë raporte tekst në celularin e tij.",
+ "Settings_PhoneNumbers_HelpAdd": "Kur klikoni “Shtoje”, te telefoni do të dërgohet një SMS që përmban një kod. Përdoruesi që merr kodin, duhet mandej të bëjë hyrjen në Matomo, të klikojë mbi Rregullime, mandej të klikojë mbi Mesazhe Me Celular. Pasi të japë kodin, përdoruesi do të jetë në gjendje të marrë raporte tekst në celularin e tij.",
"Settings_PleaseSignUp": "Që të krijoni dhe të merrni në celularin tuaj raporte SMS me statistika nga sajti juaj, ju lutemi, bëni regjistrimin te API SMS dhe jepni më poshtë të dhënat tuaja.",
"Settings_SMSAPIAccount": "Administroni Llogari SMS API",
"Settings_SMSProvider": "Furnizues SMS-sh",
+ "Settings_SelectCountry": "Përzgjidhni vend",
"Settings_SuperAdmin": "Rregullime Superpërdoruesi",
"Settings_SuspiciousPhoneNumber": "Nëse s’e merrni mesazhin tekst, mund të provoni pa zero në fillim, domethënë, %s",
- "Settings_UpdateOrDeleteAccount": "Mundeni edhe ta %1$spërditësoni%2$s ose %3$sfshini%4$s këtë llogari.",
+ "Settings_UpdateOrDeleteAccount": "Mundeni edhe ta %1$spërditësoni%2$s, ose %3$sfshini%4$s këtë llogari.",
"Settings_ValidatePhoneNumber": "Vleftësoje",
- "Settings_VerificationCodeJustSent": "Sapo dërguam një SMS me një kod te ky numër: ju lutemi, jepeni këtë kod më sipër dhe klikoni mbi \"Vleftësoje\".",
- "SettingsMenu": "Mesazhe Celulari",
- "SMS_Content_Too_Long": "[shumë i gjatë]",
- "Available_Credits": "Krediti që zotëroni: %1$s",
+ "Settings_VerificationCodeJustSent": "Sapo dërguam një SMS me një kod te ky numër: ju lutemi, jepeni këtë kod më sipër dhe klikoni mbi “Vleftësoje”.",
"TopLinkTooltip": "Merrni Raporte Analizash Web drejt e te email-i ose celulari juaj.",
- "TopMenu": "Raporte me Email & SMS",
+ "TopMenu": "Raporte me Email &amp; SMS",
"UserKey": "Kyç përdoruesi",
- "VerificationText": "Kodi është %1$s. Që të vleftësohet numri i telefonit tuaj dhe të merrni raporte Matomo me SMS, ju lutemi, kopjojeni këtë kod te formulari përkatës përmes Matomo-s > %2$s > %3$s."
+ "VerificationText": "Kodi është %1$s. Që të vleftësohet numri i telefonit tuaj dhe të merrni raporte Matomo me SMS, ju lutemi, kopjojeni këtë kod te formulari përkatës përmes Matomo &gt; %2$s &gt; %3$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Monolog/tests/Integration/LogTest.php b/plugins/Monolog/tests/Integration/LogTest.php
index 6353a0ed06..4bc2e72f75 100644
--- a/plugins/Monolog/tests/Integration/LogTest.php
+++ b/plugins/Monolog/tests/Integration/LogTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\Monolog\tests\Integration;
use Exception;
use Piwik\Application\Environment;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Db;
use Piwik\Log;
@@ -28,7 +27,7 @@ class LogTest extends IntegrationTestCase
const STRING_MESSAGE_FORMAT = '[%tag%] %message%';
const STRING_MESSAGE_FORMAT_SPRINTF = "[%s] [%s] %s";
- public static $expectedExceptionOutput = '[Monolog] [%s] LogTest.php(130): dummy error message
+ public static $expectedExceptionOutput = '[Monolog] [%s] LogTest.php(129): dummy error message
dummy backtrace [Query: , CLI mode: 1]';
public static $expectedErrorOutput = '[Monolog] [%s] dummyerrorfile.php(145): dummy error message
diff --git a/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php b/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
index eb427bf01c..b5efb73d7d 100644
--- a/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
+++ b/plugins/Monolog/tests/Unit/Processor/ExceptionToTextProcessorTest.php
@@ -11,9 +11,7 @@ namespace Piwik\Plugins\Monolog\tests\Unit\Processor;
use PHPUnit\Runner\Version;
use Piwik\Access;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Log;
-use Piwik\Piwik;
use Piwik\Plugins\Monolog\Processor\ExceptionToTextProcessor;
/**
@@ -72,7 +70,7 @@ class ExceptionToTextProcessorTest extends \PHPUnit\Framework\TestCase
$result = $processor($record);
$expected = array(
- 'message' => __FILE__ . "(65): [message and stack trace] [Query: , CLI mode: 1]",
+ 'message' => __FILE__ . "(63): [message and stack trace] [Query: , CLI mode: 1]",
'context' => array(
'exception' => $exception,
),
diff --git a/plugins/Morpheus/Controller.php b/plugins/Morpheus/Controller.php
index 74eee29d3f..92717e6042 100644
--- a/plugins/Morpheus/Controller.php
+++ b/plugins/Morpheus/Controller.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Morpheus;
use Piwik\Development;
use Piwik\Piwik;
-use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/Morpheus/icons b/plugins/Morpheus/icons
-Subproject 8d89ce17e1006489b91664b24157a762c6d3717
+Subproject 0e4e1400d2b410287cdd3fa5f524023efdbdf48
diff --git a/plugins/Morpheus/javascripts/piwikHelper.js b/plugins/Morpheus/javascripts/piwikHelper.js
index e14d6c1985..077d698ddf 100644
--- a/plugins/Morpheus/javascripts/piwikHelper.js
+++ b/plugins/Morpheus/javascripts/piwikHelper.js
@@ -150,6 +150,78 @@ window.piwikHelper = {
return angular.element(document).injector().get(dependency);
},
+ // initial call for 'body' later in this file
+ compileVueEntryComponents: function (selector) {
+ function toCamelCase(arg) {
+ return arg.substring(0, 1) + arg.substring(1)
+ .replace(/-[a-z]/g, function (s) { return s.substring(1).toUpperCase(); });
+ }
+
+ $('[vue-entry]', selector).add($(selector).filter('[vue-entry]')).each(function () {
+ var entry = $(this).attr('vue-entry');
+
+ var parts = entry.split('.');
+ if (parts.length !== 2) {
+ throw new Error('Expects vue-entry to have format Plugin.Component, where Component is exported Vue component. Got: ' + entry);
+ }
+
+ var createVueApp = CoreHome.createVueApp;
+ var plugin = window[parts[0]];
+ if (!plugin) {
+ throw new Error('Unknown plugin in vue-entry: ' + plugin);
+ }
+
+ var component = plugin[parts[1]];
+ if (!component) {
+ throw new Error('Unknown component in vue-entry: ' + entry);
+ }
+
+ var paramsStr = '';
+
+ var componentParams = {};
+ $.each(this.attributes, function () {
+ if (this.name === 'vue-entry') {
+ return;
+ }
+
+ var camelName = toCamelCase(this.name);
+ paramsStr += ':' + this.name + '=' + JSON.stringify(camelName) + ' ';
+
+ var value = this.value;
+ try {
+ value = JSON.parse(this.value);
+ } catch (e) {
+ // pass
+ }
+
+ componentParams[camelName] = value;
+ });
+
+ // NOTE: we could just do createVueApp(component, componentParams), but Vue will not allow
+ // slots to be in the vue-entry element this way. So instead, we create a quick
+ // template that references the root component and wraps the vue-entry component's html.
+ // this allows using slots in twig.
+ var app = createVueApp({
+ template: '<root ' + paramsStr + '>' + this.innerHTML + '</root>',
+ data: function () {
+ return componentParams;
+ }
+ });
+ app.component('root', component);
+ app.mount(this);
+
+ this.addEventListener('matomoVueDestroy', function () {
+ app.unmount();
+ });
+ });
+ },
+
+ destroyVueComponent: function (selector) {
+ $('[vue-entry]', selector).each(function () {
+ this.dispatchEvent(new CustomEvent('matomoVueDestroy'));
+ });
+ },
+
/**
* As we still have a lot of old jQuery code and copy html from node to node we sometimes have to trigger the
* compiling of angular components manually.
@@ -186,9 +258,17 @@ window.piwikHelper = {
}
$compile($element)(scope);
+
+ setTimeout(function () {
+ piwikHelper.processDynamicHtml($element);
+ });
});
},
+ processDynamicHtml: function ($element) {
+ piwik.postEvent('Matomo.processDynamicHtml', $element);
+ },
+
/**
* Detection works currently only for directives defining an isolated scope. Functionality might need to be
* extended if needed. Under circumstances you might call this method before calling compileAngularComponents()
@@ -277,7 +357,7 @@ window.piwikHelper = {
// skip this button if it's part of another modal, the current modal can launch
// (which is true if there are more than one parent elements contained in domElem,
// w/ css class ui-confirm)
- const uiConfirm = $button.parents('.ui-confirm').filter(function () {
+ var uiConfirm = $button.parents('.ui-confirm,[ui-confirm]').filter(function () {
return domElem[0] === this || $.contains(domElem[0], this);
});
if (uiConfirm.length > 1) {
@@ -311,7 +391,6 @@ window.piwikHelper = {
})
}
-
$footer.append(button);
});
@@ -648,3 +727,9 @@ try {
} catch (e) {}
}(jQuery));
+
+(function ($) {
+ $(function () {
+ piwikHelper.compileVueEntryComponents('body');
+ });
+}(jQuery))
diff --git a/plugins/MultiSites/Controller.php b/plugins/MultiSites/Controller.php
index 86792958f6..bc66edd022 100644
--- a/plugins/MultiSites/Controller.php
+++ b/plugins/MultiSites/Controller.php
@@ -11,9 +11,6 @@ namespace Piwik\Plugins\MultiSites;
use Piwik\Common;
use Piwik\Config;
use Piwik\Date;
-use Piwik\Period;
-use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\Piwik;
use Piwik\Translation\Translator;
use Piwik\View;
@@ -70,12 +67,15 @@ class Controller extends \Piwik\Plugin\Controller
return json_encode($response);
}
+ /**
+ * @throws \Piwik\NoAccessException
+ */
public function getSitesInfo($isWidgetized = false)
{
Piwik::checkUserHasSomeViewAccess();
- $date = Common::getRequestVar('date', 'today');
- $period = Common::getRequestVar('period', 'day');
+ $date = Piwik::getDate('today');
+ $period = Piwik::getPeriod('day');
$view = new View("@MultiSites/getSitesInfo");
@@ -93,8 +93,8 @@ class Controller extends \Piwik\Plugin\Controller
) {
$view->autoRefreshTodayReport = Config::getInstance()->General['multisites_refresh_after_seconds'];
}
-
- $params = $this->getGraphParamsModified();
+ $paramsToSet = ['period' => $period, 'date' => $date];
+ $params = $this->getGraphParamsModified($paramsToSet);
$view->dateSparkline = $period == 'range' ? $date : $params['date'];
$this->setGeneralVariablesView($view);
diff --git a/plugins/MultiSites/Dashboard.php b/plugins/MultiSites/Dashboard.php
index 1a64f26edf..614a7c7e92 100644
--- a/plugins/MultiSites/Dashboard.php
+++ b/plugins/MultiSites/Dashboard.php
@@ -11,15 +11,10 @@ namespace Piwik\Plugins\MultiSites;
use Piwik\API\DataTablePostProcessor;
use Piwik\API\Request;
use Piwik\API\ResponseBuilder;
-use Piwik\Config;
-use Piwik\Metrics\Formatter;
use Piwik\NumberFormatter;
-use Piwik\Period;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\DataTable\Row\DataTableSummaryRow;
use Piwik\Site;
-use Piwik\View;
/**
* Fetches and formats the response of `MultiSites.getAll` in a way that it can be used by the All Websites AngularJS
diff --git a/plugins/MultiSites/lang/ca.json b/plugins/MultiSites/lang/ca.json
index 822f181e5d..9ad542e179 100644
--- a/plugins/MultiSites/lang/ca.json
+++ b/plugins/MultiSites/lang/ca.json
@@ -1,6 +1,16 @@
{
"MultiSites": {
+ "AllWebsitesDashboardDocumentation": "Aquest informe us ofereix una visió general informativa de cadascun dels vostres llocs web, que conté les mètriques més generals sobre els vostres visitants.",
"Evolution": "Evolució",
+ "EvolutionComparisonDay": "%1$s %2$s aquest dia en comparació amb %3$s %2$s del període parcial anterior (%4$s) Evolució: %5$s",
+ "EvolutionComparisonIncomplete": "El període de temps seleccionat actualment és %1$s complet.",
+ "EvolutionComparisonMonth": "%1$s %2$s aquest mes en comparació amb %3$s %2$s en el període parcial anterior (%4$s) Evolució: %5$s",
+ "EvolutionComparisonProportional": "Quan el període anterior també estava al %1$s, hi havia una estimació de %2$s %3$s\n(d'un total de %4$s %3$s en el període anterior).",
+ "EvolutionComparisonWeek": "%1$s %2$s aquesta setmana en comparació amb %3$s %2$s del període parcial anterior (%4$s) Evolució: %5$s",
+ "EvolutionComparisonYear": "%1$s %2$s aquest any en comparació amb %3$s %2$s en el període parcial anterior (%4$s) Evolució: %5$s",
+ "LoadingWebsites": "Carregant llocs web",
+ "PluginDescription": "Consulteu i compareu tots els vostres llocs web i aplicacions en aquest útil tauler de control \"Tots els llocs web\".",
+ "SingleWebsitesDashboardDocumentation": "Aquest informe us ofereix una visió general informativa d'un lloc web específic, que conté les mètriques més generals sobre els vostres visitants.",
"TopLinkTooltip": "Compareu les estadístiques anàlitiques de tots els vostres llocs web."
}
-} \ No newline at end of file
+}
diff --git a/plugins/MultiSites/lang/id.json b/plugins/MultiSites/lang/id.json
index 32d476c625..7fb12d6ea3 100644
--- a/plugins/MultiSites/lang/id.json
+++ b/plugins/MultiSites/lang/id.json
@@ -1,7 +1,7 @@
{
"MultiSites": {
"Evolution": "Perkembangan",
- "LoadingWebsites": "Membuat website",
+ "LoadingWebsites": "Memuat situs",
"TopLinkTooltip": "Bandingkan statistik Analisis Ramatraya untuk seluruh Situs Anda."
}
-} \ No newline at end of file
+}
diff --git a/plugins/MultiSites/lang/nb.json b/plugins/MultiSites/lang/nb.json
index 2b7289b625..2c6ce578a9 100644
--- a/plugins/MultiSites/lang/nb.json
+++ b/plugins/MultiSites/lang/nb.json
@@ -1,8 +1,11 @@
{
"MultiSites": {
+ "AllWebsitesDashboardDocumentation": "Denne rapporten gir deg en informasjonsoversikt for hver av nettsidene dine, inneholdende den vanligste statistikken om dine besøkende.",
"Evolution": "Utvikling",
"EvolutionComparisonDay": "%1$s %2$s denne dagen sammenlignet med %3$s %2$s i den forrige delvise perioden (%4$s) Utvikling: %5$s",
"EvolutionComparisonIncomplete": "Valgt tidsperiode er %1$s fullført.",
+ "EvolutionComparisonMonth": "%1$s%2$s denne måneden sammenlignet med %3$s %2$s i forrige delvise periode (%4$s) Utvikling: %5$s",
+ "EvolutionComparisonProportional": "Når tidligere periode også var %1$s fullført, ville det anslagsvis ha vært %2$s %3$s\n (av totalt %4$s %3$s i forrige periode).",
"EvolutionComparisonWeek": "%1$s %2$s denne uken sammenlignet med %3$s %2$s i forrige delvise periode (%4$s) Utvikling: %5$s",
"EvolutionComparisonYear": "%1$s %2$s dette året sammenlignet med %3$s %2$s i forrige delvise periode (%4$s) Utvikling: %5$s",
"LoadingWebsites": "Laster nettsteder",
diff --git a/plugins/MultiSites/lang/pt-br.json b/plugins/MultiSites/lang/pt-br.json
index 14759925ce..c3b5671d23 100644
--- a/plugins/MultiSites/lang/pt-br.json
+++ b/plugins/MultiSites/lang/pt-br.json
@@ -2,6 +2,12 @@
"MultiSites": {
"AllWebsitesDashboardDocumentation": "Este relatório fornece uma visão geral informativa de cada um de seus sites, contendo as métricas mais gerais sobre seus visitantes.",
"Evolution": "Evolução",
+ "EvolutionComparisonDay": "%1$s%2$s neste dia, comparado a %3$s%2$s no período parcial anterior (%4$s) Evolução: %5$s",
+ "EvolutionComparisonIncomplete": "O período de tempo atualmente selecionado está %1$s concluído.",
+ "EvolutionComparisonMonth": "%1$s%2$s este mês comparado a %3$s%2$s no período parcial anterior (%4$s) Evolução: %5$s",
+ "EvolutionComparisonProportional": "Quando o período anterior também foi %1$s completo, teria havido uma estimativa %2$s%3$s\n (fora de um total de %4$s %3$s no período anterior).",
+ "EvolutionComparisonWeek": "%1$s%2$s nesta semana comparado a %3$s%2$s no período parcial anterior (%4$s) Evolução:%5$s",
+ "EvolutionComparisonYear": "%1$s %2$s este ano em comparação com %3$s %2$s no período parcial anterior (%4$s) Evolução: %5$s",
"LoadingWebsites": "Carregando sites",
"PluginDescription": "Veja e compare todos os seus sites e aplicativos neste útil painel 'Todos os sites'.",
"SingleWebsitesDashboardDocumentation": "Este relatório fornece uma visão geral informativa de um site específico, contendo as métricas mais gerais sobre seus visitantes.",
diff --git a/plugins/MultiSites/lang/sq.json b/plugins/MultiSites/lang/sq.json
index 8639759cd7..319d539b7d 100644
--- a/plugins/MultiSites/lang/sq.json
+++ b/plugins/MultiSites/lang/sq.json
@@ -1,8 +1,16 @@
{
"MultiSites": {
- "Evolution": "Evolucion",
+ "AllWebsitesDashboardDocumentation": "Ky raport ju jep një përmbledhje informuese për çdonjërin nga sajtet tuaj, me matjet më të përgjithshme rreth vizitorëve tuaj.",
+ "Evolution": "Evoluim",
+ "EvolutionComparisonDay": "%1$s %2$s sot krahasohet me %3$s %2$s në periudhën e mëparshme të pjesshme (%4$s) Evoluim: %5$s",
+ "EvolutionComparisonIncomplete": "Periudha kohore e përzgjedhur tani është %1$s e plotë.",
+ "EvolutionComparisonMonth": "%1$s %2$s këtë muaj krahasohet me %3$s %2$s në periudhën e pjesshme të mëparshme (%4$s) Evoluim: %5$s",
+ "EvolutionComparisonProportional": "Kur periudha e mëparshme qe gjithashtu %1$s e plotë, do të kishte afërsisht %2$s %3$s\n (nga gjithsej %4$s %3$s në periudhën e mëparshme).",
+ "EvolutionComparisonWeek": "%1$s %2$s këtë javë krahasohet me %3$s %2$s në periudhën e mëparshme (%4$s) Evoluim: %5$s",
+ "EvolutionComparisonYear": "%1$s %2$s këtë vit krahasohet me %3$s %2$s në periudhën e mëparshme (%4$s) Evoluim: %5$s",
"LoadingWebsites": "Po ngarkohen sajte",
- "PluginDescription": "Shihni dhe krahasoni krejt sajtet dhe aplikacionet tuaja te ky pult i dobishëm 'Krejt Sajtet'.",
- "TopLinkTooltip": "Krahasoni Analiza Web për krejt Sajtet tuaj."
+ "PluginDescription": "Shihni dhe krahasoni krejt sajtet dhe aplikacionet tuaja te ky pult i dobishëm “Krejt Sajtet”.",
+ "SingleWebsitesDashboardDocumentation": "Ky raport ju jep një përmbledhje informuese për një sajt të dhënë, me matjet më të përgjithshme rreth vizitorëve tuaj.",
+ "TopLinkTooltip": "Krahasoni statistika Analizimesh Web për krejt Sajtet tuaj."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Overlay/Controller.php b/plugins/Overlay/Controller.php
index fb950e1fa6..9f6b905472 100644
--- a/plugins/Overlay/Controller.php
+++ b/plugins/Overlay/Controller.php
@@ -14,12 +14,10 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Metrics;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Plugins\SegmentEditor\SegmentFormatter;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\ProxyHttp;
-use Piwik\Segment;
use Piwik\Session;
use Piwik\Tracker\Action;
use Piwik\Tracker\PageUrl;
diff --git a/plugins/Overlay/Overlay.php b/plugins/Overlay/Overlay.php
index 1828dfaed5..2528e550aa 100644
--- a/plugins/Overlay/Overlay.php
+++ b/plugins/Overlay/Overlay.php
@@ -9,6 +9,9 @@
namespace Piwik\Plugins\Overlay;
+use Piwik\Url;
+use Piwik\UrlHelper;
+
class Overlay extends \Piwik\Plugin
{
/**
@@ -37,4 +40,37 @@ class Overlay extends \Piwik\Plugin
$translationKeys[] = 'General_OverlayRowActionTooltipTitle';
$translationKeys[] = 'General_OverlayRowActionTooltip';
}
+
+ /**
+ * Returns if a request belongs to the Overlay page
+ *
+ * Whenever we change the Overlay, or any feature that is available on that page, this list needs to be adjusted
+ * Otherwise it can happen, that the session cookie is sent with samesite=lax, which might break the session in Overlay
+ * See https://github.com/matomo-org/matomo/pull/18648
+ */
+ public static function isOverlayRequest($module, $action, $method, $referer)
+ {
+ $isOverlay = $module == 'Overlay';
+ $referrerUrlQuery = parse_url($referer ?? '', PHP_URL_QUERY);
+ $referrerUrlQueryParams = UrlHelper::getArrayFromQueryString($referrerUrlQuery);
+ $referrerUrlHost = parse_url($referer ?? '', PHP_URL_HOST);
+ $comingFromOverlay = Url::isValidHost($referrerUrlHost) && !empty($referrerUrlQueryParams['module']) && $referrerUrlQueryParams['module'] === 'Overlay';
+ $isPossibleOverlayRequest = (
+ $module === 'Proxy' // JS & CSS requests
+ || ($module === 'API' && 0 === strpos($method, 'Overlay.')) // Overlay API data
+ || ($module === 'CoreHome' && $action === 'getRowEvolutionPopover') // Row evolution
+ || ($module === 'CoreHome' && $action === 'getRowEvolutionGraph') // Row evolution (graph)
+ || ($module === 'CoreHome' && $action === 'saveViewDataTableParameters') // store chart changes (within row evolution & transitions)
+ || $module === 'Annotations' // required to interact with annotations in evolution charts (within row evolution)
+ || ($module === 'Transitions' && $action === 'renderPopover') // Transitions
+ || ($module === 'API' && 0 === strpos($method, 'Transitions.')) // Transitions API data
+ || ($module === 'Live' && $action === 'indexVisitorLog') // Visits Log
+ || ($module === 'Live' && $action === 'getLastVisitsDetails') // Visits Log (pagination)
+ || ($module === 'Live' && $action === 'getVisitorProfilePopup') // Visitor Profile
+ || ($module === 'Live' && $action === 'getVisitList') // Visitor Profile (load more visits)
+ || ($module === 'UserCountryMap' && $action === 'realtimeMap') // Visitor Profile (map)
+ );
+
+ return $isOverlay || ($comingFromOverlay && $isPossibleOverlayRequest);
+ }
}
diff --git a/plugins/Overlay/lang/ca.json b/plugins/Overlay/lang/ca.json
index eaa0aa9058..9269089d3c 100644
--- a/plugins/Overlay/lang/ca.json
+++ b/plugins/Overlay/lang/ca.json
@@ -1,19 +1,22 @@
{
"Overlay": {
- "Clicks": "%s clicks",
+ "Clicks": "%s clics",
"ClicksFromXLinks": "%1$s clicks de un de %2$s enllaços",
"Domain": "Domini",
- "ErrorNotLoading": "No es pot iniciar la sessió de pàgines Overlay",
+ "ErrorNoSiteUrls": "ATENCIÓ: aquest lloc web no té cap URL de lloc definit a Matomo. Això pot provocar que la superposició i altres funcions es trenquin o es comportin de manera estranya. Per solucionar-ho, afegiu un URL a la configuració d'aquest lloc web a la secció Administració de Matomo.",
+ "ErrorNotLoading": "La sessió de superposició de pàgina encara no s'ha pogut iniciar.",
"ErrorNotLoadingDetails": "Potser la pàgina carregada a la dreta no te el codi de rastreig de Matomo. En aquest cas, proveu de llençar el Overlay d'un altra pàgina del informe de pàgines.",
"ErrorNotLoadingDetailsSSL": "Com esteu fent servir Matomo a través de https, es possible que el vostre lloc web no suporti el SSL. Proveu utilitzant el Matomo sobre http.",
- "ErrorNotLoadingLink": "Feu click aquí per obtenir més informació sobre com solucionar el problema.",
+ "ErrorNotLoadingLink": "Feu clic aquí per obtenir més consells per resoldre problemes",
"Link": "Enllaç",
"Location": "Ubicació",
"NoData": "No hi ha informació per aquesta pàgina en el període seleccionat.",
"OneClick": "1 click",
"OpenFullScreen": "Mostra a pantalla complerta (sense barra lateral)",
"Overlay": "Overlay de pàgina",
+ "PluginDescription": "Vegeu les vostres dades d'anàlisi com una superposició al vostre lloc web real. Consulta quantes vegades els teus usuaris han fet clic a cada enllaç. Nota: requereix que el connector Transitions estigui habilitat.",
+ "RedirectUrlError": "Esteu provant d'obrir la superposició de pàgina per a l'URL \"%1$s\". %2$s Cap dels dominis de la configuració de Matomo coincideix amb l'enllaç.",
"RedirectUrlErrorAdmin": "Podeu afegir una URL addicional per un domini a %1$s les preferències%2$s.",
"RedirectUrlErrorUser": "Contacteu amb el vostre administrador per afegir el domini com una URL adicional."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Overlay/lang/id.json b/plugins/Overlay/lang/id.json
index a4faafd679..6c4f5c7149 100644
--- a/plugins/Overlay/lang/id.json
+++ b/plugins/Overlay/lang/id.json
@@ -3,6 +3,7 @@
"Clicks": "%s klik",
"ClicksFromXLinks": "%1$s klik dari salah satu %2$s tautan",
"Domain": "Ranah",
+ "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.",
"ErrorNotLoadingDetailsSSL": "Sejak Anda menggunakan Matomo melalui https, kemungkinan besar penyebabnya adalah situs Anda tidak mendukung SSL. Silakan menggunakan Matomo melalui http.",
@@ -13,7 +14,9 @@
"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.",
+ "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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Overlay/lang/nb.json b/plugins/Overlay/lang/nb.json
index b0ed0dc94c..8463bfc3c0 100644
--- a/plugins/Overlay/lang/nb.json
+++ b/plugins/Overlay/lang/nb.json
@@ -3,7 +3,9 @@
"Clicks": "%s klikk",
"ClicksFromXLinks": "%1$s klikk fra én av %2$s lenker",
"Domain": "Domene",
+ "ErrorNoSiteUrls": "Advarsel: Nettsiden har ingen side-nettadresser definert i Matomo. Dette kan forårsake at side-overlegg og andre funksjoner ikke fungerer helt eller delvis. For å fikse dette kan du legge til en nettadresse i innstillingene for denne nettsiden i delen for Matomo-administrasjon.",
"ErrorNotLoading": "Side-overlagsøkten kunne ikke startes enda.",
+ "ErrorNotLoadingDetails": "Kanskje siden innlastet til høyre ikke har Matomo-sporingskoden. I sådant fall kan du prøve å kjøre overlag for en annen side fra siderapporteringen.",
"ErrorNotLoadingDetailsSSL": "Siden du bruker Matomo over HTTPS er den mest sannsynlige årsaken at nettsiden din ikke støtter SSL. Prøv å bruke Matomo over HTTP.",
"ErrorNotLoadingLink": "Klikk her for å få flere tips for feilsøking",
"Link": "Lenke",
@@ -11,6 +13,9 @@
"NoData": "Det finnes ingen data for denne siden i valgt periode.",
"OneClick": "1 klikk",
"OpenFullScreen": "Gå til fullskjermsvisning (uten sidefelt)",
+ "Overlay": "Side-overlegg",
+ "PluginDescription": "Vis din analysedata som et overlegg på nettsiden. Vis hvor mange ganger dine brukere har klikket på hver lenke. Merk: Krever at overgangsprogramtillegget er påskrudd.",
+ "RedirectUrlError": "Du prøver å åpne side-overlegg for nettadressen «%1$s». %2$s Ingen av domenene fra Matomo-innstillingene samsvarer med lenken.",
"RedirectUrlErrorAdmin": "Du kan legge til domenet som en ytterligere nettadresse %1$si innstillingene%2$s.",
"RedirectUrlErrorUser": "Spør administratoren din om å legge til domenet som en ekstra nettadresse."
}
diff --git a/plugins/Overlay/lang/sq.json b/plugins/Overlay/lang/sq.json
index de6be660a1..621cdf9975 100644
--- a/plugins/Overlay/lang/sq.json
+++ b/plugins/Overlay/lang/sq.json
@@ -3,20 +3,20 @@
"Clicks": "%s klikime",
"ClicksFromXLinks": "%1$s klikime nga një prej %2$s lidhjeve",
"Domain": "Përkatësi",
+ "ErrorNoSiteUrls": "KUJDES: Ky sajt s’ka URL-ra Sajti të përkufizuara në Matomo. Kjo mund të prishë funksionimin e Përmbledhjes dhe veçorive të tjera, ose të prodhojë sjellje të çuditshme. Për ta ndrequr këtë, shtoni një URL te rregullimet për këtë sajt, te ndarja Administrim Matomo-je.",
"ErrorNotLoading": "Sesioni Përmbledhje Faqesh s’u nis dot ende.",
- "ErrorNotLoadingDetails": "Ndoshta faqja e ngarkuar djathtas s’ka kod ndjekësi Matomo. Në këtë rast, provoni të hapni Përmbledhjen për një faqe tjetër që nga raporti për faqet.",
- "ErrorNotLoadingDetailsSSL": "Meqë po e përdorni Matomo-n përmes https-je, shkaku më i mundshëm është që sajti juaj nuk e mbulon SSL-në. Provoni ta përdorni Matomo-n përmes http-je.",
+ "ErrorNotLoadingDetails": "Ndoshta faqja e ngarkuar djathtas s’ka kod ndjekësi Matomo. Në këtë rast, provoni të hapni Përmbledhjen për një faqe tjetër, që nga raporti për faqet.",
+ "ErrorNotLoadingDetailsSSL": "Meqë po e përdorni Matomo-n përmes https-je, shkaku më i mundshëm është që sajti juaj s’mbulon SSL. Provoni ta përdorni Matomo-n përmes http-je.",
"ErrorNotLoadingLink": "Klikoni këtu që të merrni më tepër ndihmëza diagnostikimi",
"Link": "Lidhje",
"Location": "Vend",
"NoData": "S’ka të dhëna për këtë faqe gjatë periudhës së përzgjedhur.",
"OneClick": "1 klikim",
- "OpenFullScreen": "Kalo sa krejt ekrani (pa anështyllë)",
+ "OpenFullScreen": "Kalo nën mënyrën “Sa krejt ekrani” (pa anështyllë)",
"Overlay": "Përmbledhje Faqeje",
"PluginDescription": "Shihni të dhënat tuaja statistikore si një Përmbledhje te sajti juaj aktual. Shihni sa herë kanë klikuar përdoruesit tuaj në secilën lidhje. Shënim: Lyp të aktivizuar shtojcën Tranzicione.",
- "RedirectUrlError": "Po përpiqeni të hapni Përmbledhje Faqeje për URL-në \\\"%1$s\\\". %2$s Asnjë nga përkatësitë prej rregullimeve të Matomo-s nuk përputhet me këtë lidhje.",
+ "RedirectUrlError": "Po përpiqeni të hapni Përmbledhje Faqeje për URL-në “%1$s”. %2$s Asnjë nga përkatësitë te rregullimet e Matomo-s s’ka përputhje me këtë lidhje.",
"RedirectUrlErrorAdmin": "Përkatësinë mund ta shtoni si URL shtesë %1$ste rregullimet%2$s.",
- "RedirectUrlErrorUser": "Kërkojini përgjegjësit tuaj ta shtojë përkatësinë si URL shtesë.",
- "ErrorNoSiteUrls": "KUJDES: Ky sajt s’ka URL-ra Sajti të përkufizuara në Matomo. Kjo mund të prishë funksionimin e Overlay-it dhe veçorish të tjera, ose të prodhojë sjellje të çuditshme. Për ta ndrequr këtë, shtoni një URL te rregullimet për këtë sajt, te ndarja Administrim Matomo-je."
+ "RedirectUrlErrorUser": "Kërkojini përgjegjësit tuaj ta shtojë përkatësinë si URL shtesë."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Overlay/tests/Unit/OverlayTest.php b/plugins/Overlay/tests/Unit/OverlayTest.php
new file mode 100644
index 0000000000..0111f98252
--- /dev/null
+++ b/plugins/Overlay/tests/Unit/OverlayTest.php
@@ -0,0 +1,127 @@
+<?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\Overlay\tests\Unit;
+
+use Piwik\Plugins\Overlay\Overlay;
+
+class OverlayTest extends \PHPUnit\Framework\TestCase
+{
+ /**
+ * @dataProvider getOverlayRequestTestData
+ */
+ public function testIsOverlayRequestWithValidReferredRequests($module, $action, $method)
+ {
+ $this->assertSame(true, Overlay::isOverlayRequest($module, $action, $method, 'https://demo.matomo.cloud/index.php?module=Overlay&period=month&date=today&idSite=1'));
+ $this->assertSame(false, Overlay::isOverlayRequest($module, $action, $method, 'https://demo.matomo.org'));
+ }
+
+ public function getOverlayRequestTestData()
+ {
+ return [
+ [ // CSS
+ 'Proxy',
+ 'getCss',
+ '',
+ ],
+ [ // JS
+ 'Proxy',
+ 'getCoreJs',
+ '',
+ ],
+ [ // API request
+ 'API',
+ 'index',
+ 'Overlay.getTranslations',
+ ],
+ [ // API request
+ 'API',
+ 'index',
+ 'Transitions.get',
+ ],
+ [ // Row evolution
+ 'CoreHome',
+ 'getRowEvolutionPopover',
+ '',
+ ],
+ [ // Row evolution
+ 'CoreHome',
+ 'getRowEvolutionGraph',
+ '',
+ ],
+ [
+ 'CoreHome',
+ 'saveViewDataTableParameters',
+ '',
+ ],
+ [
+ 'Transitions',
+ 'renderPopover',
+ '',
+ ],
+ [
+ 'Live',
+ 'indexVisitorLog',
+ '',
+ ],
+ [
+ 'Live',
+ 'getLastVisitsDetails',
+ '',
+ ],
+ [
+ 'Live',
+ 'getVisitorProfilePopup',
+ '',
+ ],
+ [
+ 'Live',
+ 'getVisitList',
+ '',
+ ],
+ [
+ 'UserCountryMap',
+ 'realtimeMap',
+ '',
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider getInvalidOverlayRequestTestData
+ */
+ public function testIsOverlayRequestWithiNValidReferredRequests($module, $action, $method, $referer)
+ {
+ $this->assertSame(false, Overlay::isOverlayRequest($module, $action, $method, $referer));
+ }
+
+ public function getInvalidOverlayRequestTestData()
+ {
+ return [
+ [ // invalid module / action
+ 'Referer',
+ 'get',
+ '',
+ 'https://demo.matomo.cloud/index.php?module=Overlay&period=month&date=today&idSite=1'
+ ],
+ [ // invalid api method
+ 'API',
+ 'index',
+ 'VisitsSummary.get',
+ 'https://demo.matomo.cloud/index.php?module=Overlay&period=month&date=today&idSite=1'
+ ],
+ [ // invalid referer
+ 'API',
+ 'index',
+ 'Transitions.get',
+ 'https://demo.matomo.cloud/index.php?module=Overlay&module=CoreHome&action=index&period=month&date=today&idSite=1'
+ ],
+ ];
+ }
+} \ No newline at end of file
diff --git a/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php b/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
index 86fd5e09ef..9c005dc620 100644
--- a/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
+++ b/plugins/PagePerformance/JqplotDataGenerator/StackedBarEvolution.php
@@ -8,15 +8,9 @@
*/
namespace Piwik\Plugins\PagePerformance\JqplotDataGenerator;
-use Piwik\Archive\DataTableFactory;
-use Piwik\Common;
use Piwik\DataTable;
-use Piwik\Date;
-use Piwik\Metrics;
use Piwik\Period;
-use Piwik\Period\Factory;
use Piwik\Plugins\CoreVisualizations\JqplotDataGenerator;
-use Piwik\Url;
/**
* Generates JQPlot JSON data/config for evolution graphs.
diff --git a/plugins/PagePerformance/Reports/Get.php b/plugins/PagePerformance/Reports/Get.php
index 673a294f83..eb8556ae05 100644
--- a/plugins/PagePerformance/Reports/Get.php
+++ b/plugins/PagePerformance/Reports/Get.php
@@ -12,7 +12,6 @@ use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\Plugins\Installation\View;
use Piwik\Plugins\PagePerformance\Metrics;
use Piwik\Plugins\PagePerformance\Visualizations\JqplotGraph\StackedBarEvolution;
use Piwik\Plugins\PagePerformance\Visualizations\PerformanceColumns;
diff --git a/plugins/PagePerformance/lang/ca.json b/plugins/PagePerformance/lang/ca.json
index 1f4af4ca09..33fca8cecf 100644
--- a/plugins/PagePerformance/lang/ca.json
+++ b/plugins/PagePerformance/lang/ca.json
@@ -1,5 +1,43 @@
{
"PagePerformance": {
- "ColumnTimeServer": "Hora del servidor"
+ "ColumnAveragePageLoadTime": "Temps mitjà de càrrega de la pàgina",
+ "ColumnAveragePageLoadTimeDocumentation": "Temps mitjà (en segons) que es triga des que es sol·licita una pàgina fins que la pàgina es representa completament al navegador",
+ "ColumnAverageTimeDomCompletion": "Temps mitjà de finalització del DOM",
+ "ColumnAverageTimeDomCompletionDocumentation": "Temps mitjà (en segons) que triga el navegador a carregar mitjans i executar qualsevol codi Javascript que escolti l'esdeveniment DOMContentLoaded després de carregar la pàgina web i que l'usuari ja pugui interactuar amb ella.",
+ "ColumnAverageTimeDomProcessing": "Temps mitjà de tractament DOM",
+ "ColumnAverageTimeDomProcessingDocumentation": "Temps mitjà (en segons) que el navegador dedica a carregar la pàgina web després de rebre la resposta completament i abans que l'usuari pugui començar a interactuar amb ella.",
+ "ColumnAverageTimeNetwork": "Temps mitjà de xarxa",
+ "ColumnAverageTimeNetworkDocumentation": "Temps mitjà (en segons) que es triga a connectar-se al servidor. Això inclou el temps necessari per la cerca DNS i establir una connexió TCP. Aquest valor pot ser 0 després de la primera sol·licitud a un domini, ja que el navegador podria emmagatzemar la connexió a la memòria cau.",
+ "ColumnAverageTimeOnLoad": "Temps mitjà de càrrega",
+ "ColumnAverageTimeOnLoadDocumentation": "Temps mitjà (en segons) que triga el navegador a executar el codi Javascript esperant l'esdeveniment window.load. Aquest esdeveniment s'activa un cop el DOM s'ha renderitzat completament.",
+ "ColumnAverageTimeServer": "Temps mitjà del servidor",
+ "ColumnAverageTimeServerDocumentation": "Temps mitjà (en segons) que triga el servidor a generar la pàgina. Aquest és el temps entre que el servidor rep la sol·licitud i que comença a servir la resposta.",
+ "ColumnAverageTimeTransfer": "Temps mitjà de transferència",
+ "ColumnAverageTimeTransferDocumentation": "Temps mitjà (en segons) que triga el navegador a descarregar la resposta del servidor. Aquest és el temps des que es rep el primer byte fins que s'ha completat la resposta.",
+ "ColumnTimeDomCompletion": "Temps de finalització DOM",
+ "ColumnTimeDomProcessing": "Temps de procés DOM",
+ "ColumnTimeNetwork": "Temps de xarxa",
+ "ColumnTimeOnLoad": "En temps de càrrega",
+ "ColumnTimeServer": "Hora del servidor",
+ "ColumnTimeTransfer": "Temps de transferència",
+ "ColumnViewsWithTimeDomCompletion": "Pàgines vistes amb temps de finalització DOM",
+ "ColumnViewsWithTimeDomProcessing": "Pàgines vistes amb temps de procés DOM",
+ "ColumnViewsWithTimeNetwork": "Pàgines vistes amb temps de xarxa",
+ "ColumnViewsWithTimeOnLoad": "Pàgines vistes amb temps de càrrega",
+ "ColumnViewsWithTimeServer": "Pàgines vistes amb temps de servidor",
+ "ColumnViewsWithTimeTransfer": "Pàgines vistes amb temps de transferència",
+ "EvolutionOverPeriod": "Evolució de les mètriques de rendiment de la pàgina",
+ "HelpNote": "És possible que algunes d'aquestes mètriques no sempre estiguin disponibles. Pots trobar més informació a la nostra %1$sguia en línia%2$s.",
+ "Overview": "Visió general del rendiment",
+ "OverviewDocumentation": "Aquest informe ofereix una visió general de la rapidesa amb què les vostres pàgines web són visibles per als vostres visitants. Això inclou tant el temps que triguen els navegadors a baixar les vostres pàgines web com el temps que triguen els navegadors a mostrar-les.",
+ "PageLoadTime": "Temps de càrrega de la pàgina",
+ "PagePerformanceTitle": "Rendiment de la pàgina per a la pàgina amb %1$s \"%2$s\"",
+ "Performance": "Rendiment",
+ "PerformanceSubcategoryHelp1": "La secció Rendiment us pot ajudar a analitzar la velocitat del vostre lloc web o aplicació en conjunt i ajudar-vos a descobrir si teniu pàgines específiques que es desvien significativament de les vostres mitjanes.",
+ "PerformanceSubcategoryHelp2": "També podeu trobar informes que mostren exactament quant de temps triga a carregar-se cada pàgina del vostre lloc web i què penalitza el seu temps de càrrega.",
+ "PerformanceTable": "Taula amb mètriques de rendiment",
+ "PluginDescription": "Afegeix alguns informes de rendiment de la pàgina",
+ "RowActionDescription": "Mostra l'informe de rendiment de la pàgina per a aquesta fila",
+ "RowActionTitle": "Obre l'informe de rendiment de la pàgina"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PagePerformance/lang/ru.json b/plugins/PagePerformance/lang/ru.json
index 0d95bf6c0c..b9b4a85dfb 100644
--- a/plugins/PagePerformance/lang/ru.json
+++ b/plugins/PagePerformance/lang/ru.json
@@ -1,6 +1,43 @@
{
"PagePerformance": {
+ "ColumnAveragePageLoadTime": "Среднее время загрузки страницы",
+ "ColumnAveragePageLoadTimeDocumentation": "Среднее время (в секундах), которое проходит с момента запроса страницы до её полного отображения в браузере",
+ "ColumnAverageTimeDomCompletion": "Среднее время выполнения DOM",
+ "ColumnAverageTimeDomCompletionDocumentation": "Среднее время (в секундах), необходимое браузеру для загрузки мультимедиа и выполнения любого кода Javascript, прослушивающего событие DOMContentLoaded после того, как веб-страница была загружена и пользователь уже может взаимодействовать с ней.",
+ "ColumnAverageTimeDomProcessing": "Среднее время обработки DOM",
+ "ColumnAverageTimeDomProcessingDocumentation": "Среднее время (в секундах), которое браузер тратит на загрузку веб-страницы после того, как ответ был полностью получен и прежде чем пользователь сможет начать взаимодействовать с ней.",
+ "ColumnAverageTimeNetwork": "Среднее сетевое время",
+ "ColumnAverageTimeNetworkDocumentation": "Среднее время (в секундах), необходимое для подключения к серверу. Сюда входит время, необходимое для поиска DNS и установления TCP-соединения. Это значение может быть равно 0 после первого запроса к домену, так как браузер может кэшировать соединение.",
+ "ColumnAverageTimeOnLoad": "Среднее время загрузки",
+ "ColumnAverageTimeOnLoadDocumentation": "Среднее время (в секундах), которое требуется браузеру для выполнения кода Javascript в ожидании события window.load. Это событие запускается, когда DOM полностью отрисована.",
+ "ColumnAverageTimeServer": "Среднее время сервера",
+ "ColumnAverageTimeServerDocumentation": "Среднее время (в секундах), которое требуется серверу для создания страницы. Это время между получением сервером запроса и началом обслуживания ответа.",
+ "ColumnAverageTimeTransfer": "Среднее время передачи данных",
+ "ColumnAverageTimeTransferDocumentation": "Среднее время (в секундах), которое требуется браузеру для загрузки ответа с сервера. Это время с момента получения первого байта до завершения загрузки ответа.",
+ "ColumnTimeDomCompletion": "Время завершения работы DOM",
+ "ColumnTimeDomProcessing": "Время обработки DOM",
+ "ColumnTimeNetwork": "Сетевое время",
+ "ColumnTimeOnLoad": "Время загрузки",
"ColumnTimeServer": "Время на сервере",
- "Performance": "эффективность"
+ "ColumnTimeTransfer": "Время передачи",
+ "ColumnViewsWithTimeDomCompletion": "Просмотры страниц с временем завершения DOM",
+ "ColumnViewsWithTimeDomProcessing": "Просмотры страниц с временем обработки DOM",
+ "ColumnViewsWithTimeNetwork": "Просмотры страниц с учетом сетевого времени",
+ "ColumnViewsWithTimeOnLoad": "Количество просмотров страниц с учетом времени загрузки",
+ "ColumnViewsWithTimeServer": "Количество просмотров страниц с учетом времени сервера",
+ "ColumnViewsWithTimeTransfer": "Просмотры страниц со временем перехода",
+ "EvolutionOverPeriod": "Эволюция показателей производительности страниц",
+ "HelpNote": "Некоторые из этих показателей могут быть не всегда доступны. Более подробную информацию можно найти в %1$sруководстве%2$s.",
+ "Overview": "Обзор производительности",
+ "OverviewDocumentation": "Этот отчёт дает представление о том, как быстро ваши веб-страницы становятся видимыми для ваших посетителей. Сюда входит как время, необходимое браузерам для загрузки ваших страниц, так и время, необходимое браузерам для их отображения.",
+ "PageLoadTime": "Время загрузки страницы",
+ "PagePerformanceTitle": "Производительность страницы для страницы с %1$s «%2$s»",
+ "Performance": "Эффективность",
+ "PerformanceSubcategoryHelp1": "Раздел «Производительность» поможет вам проанализировать, насколько быстро работает ваш сайт или приложение в целом, а также выяснить, есть ли у вас определённые страницы, которые значительно отклоняются от средних показателей.",
+ "PerformanceSubcategoryHelp2": "Вы также можете найти отчёты, показывающие как долго загружается каждая страница вашего сайта и что влияет на время загрузки.",
+ "PerformanceTable": "Таблица с показателями производительности",
+ "PluginDescription": "Добавляет некоторые отчёты о производительности страниц",
+ "RowActionDescription": "Показать отчёт о производительности страницы для этой строки",
+ "RowActionTitle": "Отчёт о производительности открытой страницы"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PagePerformance/lang/sq.json b/plugins/PagePerformance/lang/sq.json
index d4bca6c8d0..07772bda15 100644
--- a/plugins/PagePerformance/lang/sq.json
+++ b/plugins/PagePerformance/lang/sq.json
@@ -2,40 +2,42 @@
"PagePerformance": {
"ColumnAveragePageLoadTime": "Kohë mes. ngarkimi faqesh",
"ColumnAveragePageLoadTimeDocumentation": "Kohë mesatare (në sekonda) që duhet nga kërkesa për një faqe deri sa faqja është vizatuar plotësisht brenda shfletuesit",
+ "ColumnAverageTimeDomCompletion": "Kohë mes. plotësimi DOM",
+ "ColumnAverageTimeDomCompletionDocumentation": "Kohë mesatare (në sekonda) që i duhet shfletuesit për të ngarkuar media dhe për të ekzekutuar çfarëdo kodi Javascript në përgjim për aktin DOMContentLoaded, pasi faqja qe ngarkuar dhe përdoruesi mund të ndërveprojë tashmë me të.",
+ "ColumnAverageTimeDomProcessing": "Kohë mes. përpunimi DOM",
+ "ColumnAverageTimeDomProcessingDocumentation": "Kohë mesatare (në sekonda) që shfletuesi shpenzon për ngarkimin e faqes pasi përgjigja u mor tërësisht dhe para se përdoruesi të fillojë të ndërveprojë me të.",
"ColumnAverageTimeNetwork": "Kohë mes. rrjeti",
"ColumnAverageTimeNetworkDocumentation": "Koha mesatare (në sekonda) që duhet për t’u lidhur me shërbyesin. Këtu përfshihet koha për kërkim te DNS dhe ajo për të vendosur një lidhje TCP. Ko vlerë mund të jetë 0 pas kërkesës së parë te një përkatësi, teksa shfletuesi ruan në fshehtinë të dhëna lidhjeje.",
+ "ColumnAverageTimeOnLoad": "Kohë mes. ngarkimesh",
+ "ColumnAverageTimeOnLoadDocumentation": "Kohë mesatare (në sekonda) që i duhet shfletuesit për të ekzekutuar kod Javascript në pritje për aktin window.load. Ky akt vihet në punë kur DOM-i ka përfunduar vizatimin.",
"ColumnAverageTimeServer": "Kohë mes. shërbyesi",
"ColumnAverageTimeServerDocumentation": "Koha mesatare (në sekonda) që i duhet shërbyesit të prodhojë faqen. Kjo është koha e rrjedhur mes çastit që shërbyesi merr kërkesën dhe atij të nisjes së përgjigjes nga shërbyesi.",
"ColumnAverageTimeTransfer": "Kohë mes. shpërnguljesh",
"ColumnAverageTimeTransferDocumentation": "Koha mesatare (në sekonda) që i duhet shfletuesit për të shkarkuar përgjigjen nga shërbyesi. Kjo është koha nga marrja e bajtit të parë deri sa përgjigja është plotë.",
- "ColumnAverageTimeDomProcessing": "Kohë mes. përpunimi DOM",
- "ColumnAverageTimeDomProcessingDocumentation": "Kohë mesatare (në sekonda) që shfletuesi shpenzon për ngarkimin e faqes pasi përgjigja u mor tërësisht dhe para se përdoruesi të fillojë të ndërveprojë me të.",
- "ColumnAverageTimeDomCompletion": "Kohë mes. plotësimi DOM",
- "ColumnAverageTimeDomCompletionDocumentation": "Kohë mesatare (në sekonda) që i duhet shfletuesit për të ngarkuar media dhe për të ekzekutuar çfarëdo kodi Javascript në përgjim për aktin DOMContentLoaded, pasi faqja qe ngarkuar dhe përdoruesi mund të ndërveprojë tashmë me të.",
- "ColumnAverageTimeOnLoad": "Kohë mes. ngarkimesh",
- "ColumnAverageTimeOnLoadDocumentation": "Kohë mesatare (në sekonda) që i duhet shfletuesit për të ekzekutuar kod Javascript në pritje për aktin window.load. Ky akt vihet në punë kur DOM-i ka përfunduar vizatimin.",
- "ColumnViewsWithTimeNetwork": "Parje faqesh me kohë rrjeti",
- "ColumnViewsWithTimeServer": "Parje faqesh me kohë shërbyesi",
- "ColumnViewsWithTimeTransfer": "Parje faqesh me kohë shpërnguljeje",
- "ColumnViewsWithTimeDomProcessing": "Parje faqesh me kohë përpunimi DOM",
- "ColumnViewsWithTimeDomCompletion": "Parje faqesh me kohë plotësimi DOM",
- "ColumnViewsWithTimeOnLoad": "Parje faqesh me kohë pranie në faqe",
+ "ColumnTimeDomCompletion": "Kohë plotësimi DOM",
+ "ColumnTimeDomProcessing": "Kohë përpunimi DOM",
"ColumnTimeNetwork": "Kohë rrjeti",
+ "ColumnTimeOnLoad": "Kohë pranie në faqe",
"ColumnTimeServer": "Kohë shërbyesi",
"ColumnTimeTransfer": "Kohë shpërnguljesh",
- "ColumnTimeDomProcessing": "Kohë përpunimi DOM",
- "ColumnTimeDomCompletion": "Kohë plotësimi DOM",
- "ColumnTimeOnLoad": "Kohë pranie në faqe",
- "PageLoadTime": "Kohë ngarkimi faqeje",
+ "ColumnViewsWithTimeDomCompletion": "Parje faqesh me kohë plotësimi DOM",
+ "ColumnViewsWithTimeDomProcessing": "Parje faqesh me kohë përpunimi DOM",
+ "ColumnViewsWithTimeNetwork": "Parje faqesh me kohë rrjeti",
+ "ColumnViewsWithTimeOnLoad": "Parje faqesh me kohë pranie në faqe",
+ "ColumnViewsWithTimeServer": "Parje faqesh me kohë shërbyesi",
+ "ColumnViewsWithTimeTransfer": "Parje faqesh me kohë shpërnguljeje",
"EvolutionOverPeriod": "Evolucion i matjeve të funksionimit të faqes",
- "PluginDescription": "Shtoni ndonjë raport funksionimi faqesh",
- "PerformanceTable": "Tabelë me matje funksionimi",
+ "HelpNote": "Disa nga këto matje mund të mos jenë përherë të pranishme. më tepër informacion mund të gjeni te %1$sudhërrëfyesi ynë internetor%2$s.",
"Overview": "Përmbledhje funksionimi",
"OverviewDocumentation": "Ky raport ju jep një përmbledhje se sa të shpejta janë bërë faqet tuaj për vizitorët tuaj. Kjo përfshin qoftë sa kohë u duhet shfletuesve të shkarkojnë faqet tuaj, ashtu edhe sa kohë u duhet shfletuesve për t’i shfaqur ato.",
- "Performance": "Punim",
- "HelpNote": "Disa nga këto matje mund të mos jenë përherë të pranishme. më tepër informacion mund të gjeni te %1$sudhërrëfyesi ynë internetor%2$s.",
- "RowActionTitle": "Hap raport funksionimi faqesh",
+ "PageLoadTime": "Kohë ngarkimi faqeje",
+ "PagePerformanceTitle": "Funksionim faqeje për faqe me %1$s “%2$s”",
+ "Performance": "Funksionim",
+ "PerformanceSubcategoryHelp1": "Ndarja Funksionim mund t’ju ndihmojë të analizoni sa shpejt sajti apo aplikacioni juaj punon në përgjithësi dhe ju ndihmon të zbuloni nëse keni faqe specifike që kanë shmangie domethënëse nga mesataret tuaja.",
+ "PerformanceSubcategoryHelp2": "Mund të gjeni raporte që shfaqin saktësisht sa zgjat ngarkimi i çdo faqeje të sajtit tuaj dhe se çfarë kontribuon në kohën e ngarkimit të tyre.",
+ "PerformanceTable": "Tabelë me matje funksionimi",
+ "PluginDescription": "Shtoni ndonjë raport funksionimi faqesh",
"RowActionDescription": "Shfaq raport funksionimi faqesh për këtë rresht",
- "PagePerformanceTitle": "Funksionim faqeje për faqe me %1$s \"%2$s\""
+ "RowActionTitle": "Hap raport funksionimi faqesh"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PagePerformance/lang/tl.json b/plugins/PagePerformance/lang/tl.json
index 16ddb6e92f..3fd027719e 100644
--- a/plugins/PagePerformance/lang/tl.json
+++ b/plugins/PagePerformance/lang/tl.json
@@ -1,5 +1,6 @@
{
"PagePerformance": {
+ "ColumnAveragePageLoadTime": "Average na panahon na mag-loag ng page",
"ColumnTimeServer": "Oras ng server"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PrivacyManager/Controller.php b/plugins/PrivacyManager/Controller.php
index 1c3521163b..d2120f1f2e 100644
--- a/plugins/PrivacyManager/Controller.php
+++ b/plugins/PrivacyManager/Controller.php
@@ -11,12 +11,10 @@ namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\Config as PiwikConfig;
use Piwik\Container\StaticContainer;
-use Piwik\DataTable\Renderer\Json;
use Piwik\Date;
use Piwik\Db;
use Piwik\Metrics\Formatter;
use Piwik\Nonce;
-use Piwik\Notification;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
diff --git a/plugins/PrivacyManager/Dao/LogDataAnonymizer.php b/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
index 0ddf6c8ef2..23d3f37b61 100644
--- a/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
+++ b/plugins/PrivacyManager/Dao/LogDataAnonymizer.php
@@ -17,7 +17,6 @@ use Piwik\Plugins\PrivacyManager\IPAnonymizer;
use Piwik\Plugins\PrivacyManager\Tracker\RequestProcessor;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Plugins\UserCountry\VisitorGeolocator;
-use Piwik\SettingsPiwik;
use Piwik\Tracker\Model;
use Exception;
diff --git a/plugins/PrivacyManager/ReferrerAnonymizer.php b/plugins/PrivacyManager/ReferrerAnonymizer.php
index c27b6be252..2790994407 100644
--- a/plugins/PrivacyManager/ReferrerAnonymizer.php
+++ b/plugins/PrivacyManager/ReferrerAnonymizer.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\PrivacyManager;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig;
class ReferrerAnonymizer
{
diff --git a/plugins/PrivacyManager/SystemSettings.php b/plugins/PrivacyManager/SystemSettings.php
index 611a3d2786..7d0f4e6b9a 100644
--- a/plugins/PrivacyManager/SystemSettings.php
+++ b/plugins/PrivacyManager/SystemSettings.php
@@ -8,10 +8,7 @@
*/
namespace Piwik\Plugins\PrivacyManager;
-use Piwik\Container\StaticContainer;
-use Piwik\Log;
use Piwik\Piwik;
-use Piwik\Plugin\Manager;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Settings\FieldConfig;
diff --git a/plugins/PrivacyManager/lang/ca.json b/plugins/PrivacyManager/lang/ca.json
index 7cbdc54209..71e392426b 100644
--- a/plugins/PrivacyManager/lang/ca.json
+++ b/plugins/PrivacyManager/lang/ca.json
@@ -1,42 +1,189 @@
{
"PrivacyManager": {
- "AnonymizeIpInlineHelp": "Anonimitzar el(s) últim(s) de la IP de les adreces dels visitants per complir amb la vostra política de privacitat\/llei.",
+ "AddUserIdToSearch": "Feu clic per afegir aquest ID d'usuari a la cerca",
+ "AddVisitorIPToSearch": "Feu clic per afegir aquesta IP del visitant a la cerca",
+ "AddVisitorIdToSearch": "Feu clic per afegir aquest ID de visitant a la cerca",
+ "AnonymizeData": "Anonimitzar les dades",
+ "AnonymizeDataConfirm": "Esteu segur que voleu anonimitzar les dades dels llocs web i l'interval de temps seleccionats? Aquesta acció no es pot desfer, les dades es poden suprimir segons se sol·liciti i aquest procés pot trigar molt de temps.",
+ "AnonymizeDataNow": "Anonimitzar les dades anteriors del lloc i l'hora seleccionats",
+ "AnonymizeIp": "Anonimitzar IP",
+ "AnonymizeIpDescription": "Seleccioneu \"Si\" si voleu que Matomo no faci un seguiment d'adreces IP completes.",
+ "AnonymizeIpExtendedHelp": "Quan els usuaris visitin el vostre lloc web, Matomo no utilitzarà l'adreça IP completa (com ara %1$s), sinó que Matomo l'anonimitzarà primer (a %2$s). L'anonimització de l'adreça IP és un dels requisits establerts per les lleis de privadesa d'alguns països com Alemanya.",
+ "AnonymizeIpHelp": "Aquesta acció no es pot desfer. Si s'habilita, per a totes les visites durant aquest període la IP quedarà emmascarada en almenys 2 bytes, per exemple, \"192.168.xxx.xxx\". Si heu configurat la màscara en 3 bytes, es respectarà aquesta configuració i totes les IP seran emmascarades en 3 bytes.",
+ "AnonymizeIpInlineHelp": "Emmascara els darrers bytes de les adreces IP dels visitants per complir amb les lleis/directrius de privadesa locals.",
+ "AnonymizeIpMaskFully": "Emmascarar completament les adreces IP",
"AnonymizeIpMaskLengtDescription": "Seleccioneu quans bytes de l'adreça IP del visitant voleu enmascarar.",
"AnonymizeIpMaskLength": "%1$s byte(s) - p.e. %2$s",
- "ClickHereSettings": "Feu click aquí per entrar a %s la configuració",
- "CurrentDBSize": "Tamany actual de la Base de dades",
- "DBPurged": "Base de dades purgada",
- "DeleteDataInterval": "Esborrar la informació antiga cada",
- "DeleteLogDescription2": "Quan activeu l'eliminació automàtica us heu d'asegurar que tots els informes diaris han estat processats, així no perdeu informació.",
- "DeleteLogsOlderThan": "Eliminar elsb registres anterior a",
- "DeleteMaxRows": "Nombre màxim de files per eliminar en una sola execució:",
+ "AnonymizeLocation": "Anonimitzar la ubicació",
+ "AnonymizeLocationHelp": "Aquesta acció no es pot desfer. Torna a avaluar la ubicació en funció de la IP anonimitzada (almenys 2 bytes de la IP seran anonimitzats).",
+ "AnonymizeOrderIdNote": "Com que un identificador de comanda es pot creuar amb un altre sistema, normalment una botiga de comerç electrònic, l'identificador de la comanda pot comptar com a informació personal segons el RGPD. Quan activeu aquesta opció, un identificador de comanda es convertirà automàticament en anònim, de manera que no es farà un seguiment de cap informació personal.",
+ "AnonymizeProcessInfo": "Aquesta acció pot trigar molt de temps i, per tant, no s'executarà immediatament. A continuació podreu seguir l'estat actual del procés. Normalment l'anonimització hauria de començar en una hora.",
+ "AnonymizeReferrer": "Anonimitzar el referent",
+ "AnonymizeReferrerExcludeAll": "No enregistreu l'URL de referent, però detecteu igualment el tipus de referent",
+ "AnonymizeReferrerExcludeNone": "No anonimitzeu el referent",
+ "AnonymizeReferrerExcludePath": "Conserveu només el domini d'una URL de referent",
+ "AnonymizeReferrerExcludeQuery": "Elimineu els paràmetres de consulta de l'URL de referent",
+ "AnonymizeReferrerNote": "Matomo emmagatzema des de quina URL (referent) arriba un usuari al vostre lloc. En alguns casos aquesta URL pot contenir informació que es pot considerar informació personal. Si voleu evitar que es faci un seguiment d'aquesta informació podeu restringir la quantitat de dades de referència que Matomo emmagatzemarà quan un visitant entri al vostre lloc web. Com més informació s'elimini de la informació de referència, menys probable és que es registri la informació personal. Com més informació suprimiu del referent, menys clar serà com va arribar un visitant al vostre lloc web.",
+ "AnonymizeRowDataFrom": "Anonimitzar totes les dades en brut a partir de:",
+ "AnonymizeRowDataTo": "Anonimitzar totes les dades en brut fins a:",
+ "AnonymizeSites": "Anonimitzar les dades d'aquest(s) lloc(s)",
+ "AnonymizeUserId": "Substituïr l'identificador d'usuari per un pseudònim",
+ "AnonymizeUserIdHelp": "Quan activeu aquesta opció, l'identificador d'usuari es substituirà per un pseudònim per evitar que s'emmagatzemi i es mostri directament informació d'identificació personal, com ara una adreça de correu electrònic. En termes tècnics: donat el vostre ID d'usuari, Matomo processarà el pseudònim de l'ID d'usuari mitjançant una funció hash salada.<br><br><em>Nota: substituir per un pseudònim no és el mateix que anonimitzar. En termes de RGPD: el pseudònim de l'identificador d'usuari encara compta com a dades personals. L'identificador d'usuari original encara es podria identificar si hi ha certa informació addicional disponible (a la qual només tenen accés Matomo i el seu processador de dades).</em>",
+ "AskingForConsent": "Demanant consentiment",
+ "AwarenessDocumentation": "Conscienciació i documentació",
+ "AwarenessDocumentationDesc1": "Informeu els vostres visitants mitjançant un avís de privadesa clar sempre que recolliu dades personals.",
+ "AwarenessDocumentationDesc2": "Informeu els vostres usuaris a la vostra política de privadesa sobre quines dades recopileu i com s'utilitzen.",
+ "AwarenessDocumentationDesc3": "Feu que el vostre equip sàpiga que utilitzeu Matomo Analytics i %1$squines dades està recopilant la vostra plataforma d'anàlisi%2$s.",
+ "AwarenessDocumentationDesc4": "Documenteu el vostre ús de Matomo al vostre %1$sregistre d'actius d'informació%2$s.",
+ "AwarenessDocumentationIntro": "Informeu els vostres usuaris de manera clara i transparent, i feu que els vostres companys coneguin les dades que es recullen i com s'utilitzen:",
+ "BackgroundColor": "Color de fons",
+ "ClickHereSettings": "Feu clic aquí per accedir a la configuració de %s.",
+ "ConsentExplanation": "El consentiment significa oferir a les persones opció i control sobre com es tracten les seves dades personals.",
+ "CurrentDBSize": "Mida actual de la base de dades",
+ "DBPurged": "Base de dades esporgada.",
+ "DataRetention": "Retenció de dades",
+ "DataRetentionInMatomo": "Retenció de dades per a les dades emmagatzemades a Matomo:",
+ "DataRetentionOverall": "La taxa de retenció de dades global de la vostra política de privadesa és la taxa de retenció de dades en brut. Tingueu en compte que els informes agregats també poden contenir dades personals. Si utilitzeu funcions com l'identificador d'usuari, les variables personalitzades, la dimensió personalitzada o feu un seguiment de les dades personals d'altres maneres, com ara esdeveniments, URL de pàgines o títols de pàgines, etc., la taxa de retenció de dades global de la vostra política de privadesa serà la més alta de les dues.",
+ "DeleteAggregateReportsDetailedInfo": "Quan activeu aquesta configuració se suprimiran tots els informes agregats. Els informes agregats es generen a partir de les dades en brut i representen dades agregades de diverses visites individuals. Per exemple, l'informe \"País\" mostra les xifres agregades per veure quantes visites heu rebut de cada país.",
+ "DeleteBothConfirm": "Esteu a punt d'activar tant la supressió de dades en brut com la supressió de dades d'informes. Això suprimirà permanentment la vostra capacitat de veure dades d'anàlisi antigues. Esteu segur que voleu fer-ho?",
+ "DeleteDataDescription": "Podeu configurar Matomo per eliminar regularment dades en brut antigues i/o informes agregats per mantenir la vostra base de dades petita o per complir les regulacions de privadesa com ara el RGPD.",
+ "DeleteDataInterval": "Suprimeix les dades antigues cada",
+ "DeleteDataSettings": "Suprimeix els registres i els informes antics de visitants",
+ "DeleteLogDescription2": "Quan activeu l'eliminació automàtica del registre heu d'assegurar-vos que s'han processat tots els informes diaris anteriors, de manera que no es perdi cap dada.",
+ "DeleteLogsConfirm": "Esteu a punt d'activar la supressió de dades en brut. Si s'eliminen les dades en brut antigues i els informes encara no s'han creat, no podreu veure les dades històriques d'anàlisi del passat. Esteu segur que voleu fer-ho?",
+ "DeleteLogsOlderThan": "Suprimeix els registres anteriors a",
+ "DeleteMaxRows": "Nombre màxim de files per suprimir en una execució:",
"DeleteMaxRowsNoLimit": "sense límit",
- "DeleteReportsConfirm": "Esteu a punt d'activar l'eliminació de la informació dels informes. Si els informes antics s'eliminen, haure de tornar-los a procesar per veure'ls. Esteu segur que voleu fer això?",
- "DeleteReportsOlderThan": "Elmina els informes anteriors a",
- "DeleteDataSettings": "Eliminar el registre de visitants i informes antics",
- "DoNotTrack_Description": "La tecnologia de no traquejar permet als usuris donar-se de baixa de les estadístiques pels llocs web que ells no visiten, incloïent els serveis analítiques, les xarxes públicitaries i els xarxes socials.",
- "DoNotTrack_Disable": "Desactiveu el suport per a la desactivació del rastreig.",
- "DoNotTrack_Enable": "Activeu el suport per la desactivació del restreig",
- "DoNotTrack_Enabled": "Bravo! Esteu respectant la privacitat dels vostres usuaris.",
- "DoNotTrack_SupportDNTPreference": "Suportar la configuració de No Rastreig",
- "EstimatedDBSizeAfterPurge": "Tamany de la base de dades desprès de la purga",
- "EstimatedSpaceSaved": "Tamany estalviat (estimació)",
- "GeolocationAnonymizeIpNote": "Nota: La geocalitazció tindrà els mateixos resultats amb 1 bit anònim. Amb 2 bits o més, la geocalització no serà acurada.",
- "GetPurgeEstimate": "Obtenir l'estimació de la purga",
- "KeepBasicMetrics": "Conserveu les mètriques bàsiques ( visites, pàgines vistes, raó de rebot, conversió d'objectius, conversións ecommerce, etc.)",
- "KeepReportSegments": "Per mantenir aquesta informació també heu de mantenir els informes segmentats.",
- "LastDelete": "La última eliminació va ser el",
- "LeastDaysInput": "Siusplau especifieu un nombre de díes més gran que %s.",
- "LeastMonthsInput": "Siusplau, especifiqueu un nombre de dies més gran que %s.",
- "MenuPrivacySettings": "Privacitat",
- "NextDelete": "La pròxima eliminació programada el",
- "PurgeNow": "Purga la BD ara",
- "PurgeNowConfirm": "Esteu a punt d'esborrar tota la informació de la vostra base de ades. Esteu segur que voleu continuar?",
- "PurgingData": "Prugant la informació...",
- "ReportsDataSavedEstimate": "Mida de la Base de dades",
- "SaveSettingsBeforePurge": "Heu canviat la configuració d'esborrament. Sisplau, guardeu les vostres preferències abans de començar la purga.",
- "TeaserHeadline": "Preferències de Privacitat",
- "UseAnonymizeIp": "Convertir la IP dels vostres visitants en anònima",
- "UseDeleteReports": "Esobrreu els informes de la base de dades de forma períodica"
+ "DeleteOldAggregatedReports": "Suprimeix les dades d'informes agregats antics",
+ "DeleteOldRawData": "Suprimeix periòdicament les dades en brut antigues",
+ "DeleteOldVisitorLogs": "Suprimeix els registres de visitants antics",
+ "DeleteRawDataInfo": "Les dades en brut contenen tots els detalls sobre cada visita individual i cada acció que van fer els visitants. Quan suprimiu les dades en brut, la informació suprimida ja no estarà disponible al registre de visitants. A més, si més tard decidiu crear un segment, els informes segmentats no estaran disponibles durant el període de temps que s'ha suprimit, ja que tots els informes agregats es generen a partir d'aquestes dades en brut.",
+ "DeleteReportsConfirm": "Esteu a punt d'activar la supressió de dades dels informes. Si s'eliminen els informes antics, els haureu de tornar a processar per veure'ls. Esteu segur que ho voleu fer?",
+ "DeleteReportsInfo2": "Si suprimiu informes antics és possible que es tornin a processar a partir de les vostres dades RAW quan els sol·liciteu.",
+ "DeleteReportsInfo3": "Si també heu activat \"%s\" llavors les dades dels informes que esteu suprimint es perdran permanentment.",
+ "DeleteReportsOlderThan": "Suprimeix els informes anteriors a",
+ "DeleteSchedulingSettings": "Programeu la supressió de dades antigues",
+ "DeleteSelectedVisits": "Suprimeix les visites seleccionades",
+ "DeleteVisitsConfirm": "Esteu segur que voleu suprimir les visites seleccionades? Aquesta acció no es pot desfer.",
+ "DeletionFromMatomoOnly": "Tingueu en compte també que les dades només s'eliminaran de la base de dades de Matomo però no dels registres del vostre servidor web. Tingueu en compte també que si torneu a importar dades històriques, per exemple dels registres, les dades esborrades anteriorment es podran tornar a importar.",
+ "DoNotTrack_Description": "Do Not Track és una proposta de tecnologia i política que permet als usuaris desactivar el seguiment dels llocs web que visiten, inclosos els serveis d'anàlisi, les xarxes de publicitat i les plataformes socials.",
+ "DoNotTrack_Disable": "Desactiveu el suport de Do Not Track",
+ "DoNotTrack_Disabled": "Actualment, Matomo està fent un seguiment de tots els visitants, fins i tot quan han especificat \"No vull ser seguit\" als seus navegadors web.",
+ "DoNotTrack_DisabledMoreInfo": "Us recomanem que habiliteu el suport de DoNotTrack per respectar la privadesa dels vostres visitants",
+ "DoNotTrack_Enable": "Activeu el suport per Do Not Track",
+ "DoNotTrack_Enabled": "Actualment estàs respectant la privadesa dels teus usuaris, Bravo!",
+ "DoNotTrack_EnabledMoreInfo": "Quan els usuaris hagin configurat el seu navegador web a \"No vull ser seguit\" (DoNotTrack està habilitat), Matomo no farà el seguiment d'aquestes visites.",
+ "DoNotTrack_SupportDNTPreference": "Admet la preferència de Do Not Track",
+ "EstimatedDBSizeAfterPurge": "Mida estimada de la base de dades després de la purga",
+ "EstimatedSpaceSaved": "Espai estimat estalviat",
+ "ExportSelectedVisits": "Exporta les visites seleccionades",
+ "ExportingNote": "En cas que estigueu exportant les dades per exercir el dret d'accés, si us plau, assegureu-vos que les visites seleccionades les realitzi realment l'interessat del qual voleu exportar les dades.",
+ "FindDataSubjectsBy": "Cerca persones per",
+ "FontColor": "Color de la lletra",
+ "FontFamily": "Tipus de lletra",
+ "FontSize": "Mida de la lletra",
+ "ForceCookielessTracking": "Força el seguiment sense galetes",
+ "ForceCookielessTrackingDescription": "Si activeu aquesta opció s'actualitzarà automàticament %1$s, de manera que contingui algun codi addicional per assegurar que tots els seguidors no utilitzaran galetes. A més Matomo ignorarà totes les galetes de seguiment del costat del servidor.",
+ "ForceCookielessTrackingDescription2": "Les galetes es desactivaran fins i tot quan s'utilitzen els mètodes de consentiment al seguiment de Matomo i, per exemple, cridant als mètodes de consentiment de galetes no s'habilitaran les galetes.",
+ "ForceCookielessTrackingDescriptionNotWritable": "El fitxer de seguiment JS \"%1$s\" no es pot escriure, cosa que és necessària perquè aquesta funció funcioni completament. Quan el fitxer de seguiment JS no es pot escriure, les galetes només s'ignoraran al costat del servidor, però les galetes encara es poden configurar al navegador. Per resoldre aquest problema, vosaltres o un administrador del sistema heu de canviar els permisos dels fitxers perquè el vostre servidor web pugui canviar aquest fitxer.",
+ "GDPR": "RGPD",
+ "GdprChecklistDesc1": "Si esteu tractant dades personals de ciutadans europeus a través de Matomo, encara que la vostra empresa estigui ubicada fora d'Europa heu de complir amb les obligacions del RGPD i aquesta guia us hi ajudarà.",
+ "GdprChecklistDesc2": "Trobareu a continuació les nostres eines que us permeten exercir fàcilment els drets dels vostres usuaris i la llista d'accions que cal dur a terme per tal que el vostre ús de Matomo compleixi amb el RGPD i protegir les vostres dades. Visiteu la nostra %1$sGuia de l'usuari del RGPD%2$s per obtenir encara més informació.",
+ "GdprChecklists": "Llistes de verificació de RGPD",
+ "GdprManager": "Delegat de Protecció de Dades (DPO)",
+ "GdprOverview": "Visió general del RGPD",
+ "GdprOverviewIntro1": "El Reglament General de Protecció de Dades (RGPD) és un reglament que reforça i unifica la protecció de dades per a totes les persones de la Unió Europea (UE).",
+ "GdprOverviewIntro2": "Si preneu mesures per assegurar-vos que no es recullin dades personals a Matomo, és possible que no us preocupi el RGPD de Matomo (si no feu un seguiment de les adreces IP, els ID d'usuari, les dades de geolocalització, etc.).",
+ "GdprTools": "Eines RGPD",
+ "GdprToolsOverviewHint": "En cas que no sapigueu què és el RGPD consulteu la %1$sVisió general del RGPD%2$s.",
+ "GdprToolsPageIntro1": "Aquesta pàgina ha estat dissenyada per tal que vostè pugui exercir els drets com a interessat.",
+ "GdprToolsPageIntro2": "Aquí podeu exercir els drets dels vostres usuaris amb els nostres procediments compatibles amb RGPD:",
+ "GdprToolsPageIntroAccessRight": "el dret d'accés a totes les seves dades (i el dret a la portabilitat de les dades),",
+ "GdprToolsPageIntroEraseRight": "el dret a suprimir algunes o totes les seves dades (i el dret de rectificació).",
+ "GeolocationAnonymizeIpNote": "Nota: la geolocalització tindrà aproximadament els mateixos resultats amb 1 byte emmascarat. Amb 2 bytes o més, la geolocalització serà inexacta.",
+ "GetPurgeEstimate": "Obteniu una estimació de purga",
+ "HowDoIAskForConsent": "Com puc demanar el consentiment als usuaris?",
+ "HowDoIAskForConsentIntroduction": "Més informació sobre %1$ssol·licitar consentiment per a galetes o per fer el seguiment a la nostra guia d'integració.%2$s",
+ "Imprint": "Empremta",
+ "ImprintUrl": "URL d'impressió",
+ "ImprintUrlDescription": "Un enllaç a la teva pàgina d'empremta.",
+ "IndividualsRights": "Drets de les persones",
+ "IndividualsRightsAccess": "El dret d'accés: %1$scerca les dades d'una persona%2$s i exporta-les totes.",
+ "IndividualsRightsChildren": "Si oferiu serveis en línia als nens i confieu en el consentiment per recollir-ne informació, és possible que necessiteu el consentiment dels pares o tutors per processar les dades personals dels nens de manera legal.",
+ "IndividualsRightsErasure": "Dret de supressió: %1$scerca les dades d'una persona%2$s i suprimeix-les totes o només algunes.",
+ "IndividualsRightsInform": "Dret a ser informat: informa els teus usuaris amb un avís de privadesa clar.",
+ "IndividualsRightsIntro": "Exercita els drets dels teus usuaris amb els nostres procediments compatibles amb RGPD:",
+ "IndividualsRightsObject": "Dret d'oposició: %1$spermet als vostres usuaris marxar fàcilment%2$s des de la vostra pàgina de política de privadesa.",
+ "IndividualsRightsPortability": "Dret a la portabilitat de les dades: %1$scerca les dades d'una persona%2$s i exporta-les totes.",
+ "IndividualsRightsRectification": "Dret de rectificació: podeu %1$scercar les dades d'una persona%2$s i elimina-les totes o només algunes.",
+ "InfoSomeReferrerInfoMayBeAnonymized": "És possible que falti alguna informació de referents perquè l'anonimització del referent està activada de la manera següent: %s",
+ "KeepBasicMetrics": "Manteniu les mètriques bàsiques (visites, pàgines vistes, percentatge de rebots, conversions d'objectius, conversions de comerç electrònic, etc.)",
+ "KeepBasicMetricsReportsDetailedInfo": "Quan activeu aquesta configuració, alguns indicadors numèrics de rendiment clau no se suprimiran.",
+ "KeepDataFor": "Conserveu totes les dades per",
+ "KeepReportSegments": "Per a les dades conservades anteriorment, mantenir també informes segmentats",
+ "LastDelete": "L'última supressió va ser el",
+ "LeastDaysInput": "Si us plau especifiqueu un nombre de dies superior a %s.",
+ "LeastMonthsInput": "Si us plau,especifiqueu un nombre de dies més gran que %s.",
+ "MatchingDataSubjects": "Coincidència de persones",
+ "MenuPrivacySettings": "Privadesa",
+ "NextDelete": "Pròxima supressió programada en",
+ "NoDataSubjectsFound": "No s'ha trobat persones",
+ "OptOutCustomize": "Personalitzeu l'iframe d'exclusió",
+ "OptOutHtmlCode": "Codi HTML per incrustar al vostre lloc web",
+ "OptOutPreview": "Vista prèvia de l'exclusió tal com apareixerà al vostre lloc web",
+ "PluginDescription": "Augmenteu la privadesa dels vostres usuaris i feu que la privadesa de la vostra instància Matomo compleixi amb la vostra legislació local.",
+ "PrivacyPolicy": "Política de privacitat",
+ "PrivacyPolicyUrl": "URL de la política de privadesa",
+ "PrivacyPolicyUrlDescription": "Un enllaç a la vostra pàgina de la Política de privadesa.",
+ "PrivacyPolicyUrlDescriptionSuffix": "Si ho configureu, es mostrarà a la part inferior de la pàgina d'inici de sessió i a les pàgines a les quals pugui accedir l'usuari '%1$s'.",
+ "PseudonymizeUserId": "Substituïr l'identificador d'usuari per un pseudònim",
+ "PseudonymizeUserIdNote": "Quan activeu aquesta opció l'identificador d'usuari es substituirà per un pseudònim per evitar que s'emmagatzemi i es mostri directament informació d'identificació personal, com ara una adreça de correu electrònic. En termes tècnics: donat el vostre User ID, Matomo processarà el pseudònim User ID mitjançant una funció de hash salat.",
+ "PseudonymizeUserIdNote2": "Nota: substituir per un pseudònim no és el mateix que anonimitzar. En termes de RGPD: el pseudònim de User ID encara compta com a dades personals. L'identificador d'usuari original encara es podria identificar si hi ha certa informació addicional disponible (a la qual només tenen accés Matomo i el seu processador de dades).",
+ "PurgeNow": "Purgueu la base de dades ara",
+ "PurgeNowConfirm": "Esteu a punt d'eliminar permanentment les dades de la vostra base de dades. Esteu segur que voleu continuar?",
+ "PurgingData": "Purgant les dades...",
+ "RawDataNeverRemoved": "Les dades en brut de les visites i les accions no s'eliminen <strong>mai</strong> .",
+ "RawDataRemovedAfter": "totes les dades en brut de visites i accions se suprimeixen després de %1$s.",
+ "RecommendedForPrivacy": "Recomanat per privadesa",
+ "ReportsDataSavedEstimate": "Mida de la base de dades",
+ "ReportsNeverRemoved": "els informes agregats no s'eliminen <strong>mai</strong>.",
+ "ReportsRemovedAfter": "tots els informes agregats se suprimeixen després de %1$s.",
+ "ResultIncludesAllVisits": "Els resultats trobats inclouen totes les visites sense cap restricció horària i inclouen avui.",
+ "ResultTruncated": "S'han trobat més de %1$s resultats i el resultat ha estat retallat a les primeres %1$s visites.",
+ "SaveSettingsBeforePurge": "Heu canviat la configuració de supressió de dades. Deseu-la abans d'iniciar una purga.",
+ "SearchForDataSubject": "Cerca una persona",
+ "SecurityProcedures": "Procediments de seguretat",
+ "SecurityProceduresDesc1": "Apliqueu les nostres %1$srecomanacions de seguretat%2$s per protegir les vostres dades de Matomo.",
+ "SecurityProceduresDesc2": "Comproveu que teniu un contracte per escrit amb l'empresa que us proporciona el servidor o l'allotjament de Matomo que garanteix que %1$ses proporcionen proteccions adequades%2$s.",
+ "SecurityProceduresDesc3": "Incloeu Matomo al vostre %1$sprocediment de violació de dades%2$s.",
+ "SecurityProceduresDesc4": "Incloeu Matomo a la vostra %1$savaluació d'impacte sobre la privadesa de dades (DPIA)%2$s, si escau.",
+ "SecurityProceduresIntro": "Informeu els vostres usuaris de manera clara i transparent, i feu que els vostres companys coneguin les dades que es recullen i com s'utilitzen:",
+ "SeeAlsoOurOfficialGuidePrivacy": "Consulteu també la nostra guia oficial: %1$sPrivadesa d'analítica web%2$s",
+ "SelectWebsite": "Seleccioneu un lloc web",
+ "ShowInEmbeddedWidgets": "Mostra als ginys incrustats",
+ "ShowInEmbeddedWidgetsDescription": "Si està marcat, es mostrarà un enllaç a la vostra Política de Privadesa i als vostres Termes i Condicions a la part inferior dels ginys incrustats.",
+ "TeaserHeader": "En aquesta pàgina podeu personalitzar Matomo perquè la privadesa compleixi amb les legislacions existents: %1$s anonimitzant la IP del visitant%2$s, %3$s eliminant automàticament els registres antics de visitants de la base de dades%4$s i %5$s anonimitzant les dades d'usuaris sense processar amb un seguiment anterior%6$s.",
+ "TeaserHeadline": "Configuració de privadesa",
+ "TermsAndConditionUrl": "URL de Termes i Condicions",
+ "TermsAndConditionUrlDescription": "Un enllaç a la pàgina de Termes i Condicions.",
+ "TermsAndConditions": "Termes &amp; Condicions",
+ "TrackingOptOut": "Permet als usuaris desactivar el seguiment",
+ "UnsetActionColumns": "Desactiveu les columnes d'acció",
+ "UnsetActionColumnsHelp": "Aquesta acció no es pot desfer. Una llista de columnes de la base de dades de l'àmbit acció que voleu desactivar. Cada valor d'aquesta columna s'establirà al seu valor predeterminat.",
+ "UnsetVisitColumns": "Desactiveu les columnes de visita",
+ "UnsetVisitColumnsHelp": "Aquesta acció no es pot desfer. Una llista de columnes de la base de dades de l'àmbit visita que voleu desactivar. Cada valor d'aquesta columna s'establirà al seu valor predeterminat. Tingueu en compte que si la mateixa columna existeix a l'àmbit \"conversió\", aquesta columna també se suprimirà",
+ "UseAnonymizeIp": "Fer anònimes les adreces IP dels visitants",
+ "UseAnonymizeOrderId": "Anonimitzar l'identificador de comanda",
+ "UseAnonymizeTrackingData": "Anonimitzar les dades de seguiment",
+ "UseAnonymizeUserId": "Anonimitzar l'identificador d'usuari",
+ "UseAnonymizedIpForVisitEnrichment": "Utilitzeu també les adreces IP anonimitzades a l'hora d'enriquir visites.",
+ "UseAnonymizedIpForVisitEnrichmentNote": "Els connectors com ara la ubicació geogràfica mitjançant IP i el proveïdor milloren les metadades dels visitants. Per defecte aquests connectors utilitzen les adreces IP anonimitzades. Si seleccioneu \"No\" s'utilitzarà l'adreça IP completa no anònima, la qual cosa comportarà menys privadesa però una millor precisió de les dades.",
+ "UseDeleteLog": "Suprimiu periòdicament les dades en brut antigues de la base de dades",
+ "UseDeleteReports": "Suprimiu regularment els informes antics de la base de dades",
+ "UsersOptOut": "Exclusió d'usuaris",
+ "VisitsMatchedCriteria": "Aquestes visites coincideixen amb els criteris seleccionats.",
+ "WhenConsentIsNeeded1": "En el context de les %1$snormes de privadesa RGPD%2$s, quan esteu processant dades personals en alguns casos haureu de demanar el consentiment dels vostres usuaris. Per identificar si necessiteu sol·licitar el consentiment heu de determinar si la vostra base legal per al tractament de dades personals és \"Consentiment\" o \"Interès legítim\", o si podeu evitar la recollida de dades personals del tot. Us recomanem obtenir més informació sobre %3$sla base legal segons el RGPD per a Matomo%4$s.",
+ "WhenConsentIsNeeded2": "Tingueu en compte que quan necessiteu el consentiment dels vostres usuaris i si no podeu demostrar que heu obtingut el \"Consentiment\" dels vostres usuaris en el passat, us recomanem que %1$sanonimitzeu les dades en brut dels usuaris que ja havien estat seguits%2$s.",
+ "WhenDoINeedConsent": "Quan he de demanar el consentiment de l'usuari?"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PrivacyManager/lang/nb.json b/plugins/PrivacyManager/lang/nb.json
index 8cfeb5562c..4e6840c04c 100644
--- a/plugins/PrivacyManager/lang/nb.json
+++ b/plugins/PrivacyManager/lang/nb.json
@@ -1,52 +1,78 @@
{
"PrivacyManager": {
+ "AddUserIdToSearch": "Klikk for å legge denne bruker-ID-en i søket",
+ "AddVisitorIPToSearch": "Klikk for å legge denne besøks-IP-en i søket",
+ "AddVisitorIdToSearch": "Klikk for å legge denne besøks-ID-en i søket",
"AnonymizeData": "Anonymiser data",
+ "AnonymizeDataConfirm": "Anonymiser data for valgt(e) nettside(r) og tidsrom? Dette kan ikke angres, ta lang tid, og data kan bli slettes som forespurt.",
+ "AnonymizeDataNow": "Anonymiser tidligere data for valgt side og tid",
"AnonymizeIp": "Anonymisering av IP",
"AnonymizeIpDescription": "Velg «Ja» hvis du vil at Matomo ikke skal spore fullstendige IP-adresser.",
"AnonymizeIpExtendedHelp": "Når brukere besøker nettsiden din, bruker ikke Matomo hele IP-adressen (som f.eks %1$s) men istedenfor vil Matomo anonymisere dem først (til %2$s). Anonymisering av IP-adresser er ett av kravene for personvernslovgivning i f.eks. Tyskland.",
+ "AnonymizeIpHelp": "Denne handlingen kan ikke angres og vil anonymisere IP-en med minst to byte innenfor tidsrommet. For eksempel «192.16.xxx.xxxx». Hvis du har satt opp anonymisering med tre byte vil denne innstillingen respekteres og alle IP-adresser anonymiseres med tre byte.",
"AnonymizeIpInlineHelp": "Anonymiser siste byte for IP-adresser for å overholde lokale lover og retningslinjer for personvern.",
"AnonymizeIpMaskFully": "Masker hele IP-adressen",
"AnonymizeIpMaskLengtDescription": "Velg hvor mange byte av besøkendes IP-er som skal maskeres.",
"AnonymizeIpMaskLength": "%1$s byte(s) – f.eks. %2$s",
"AnonymizeLocation": "Anonymisering av posisjon",
+ "AnonymizeLocationHelp": "Denne handlingen kan ikke angres. Omvurderer posisjonen basert på anonymisert IP (minst 2 byte av IP-en vil bli anonymisert).",
+ "AnonymizeProcessInfo": "Denne handlingen kan ta lang tid og vil derfor ikke kjøres umiddelbart. Du vil kunne følge prosessen nedenfor. Anonymiseringen bør vanligvis starte innen én time.",
"AnonymizeReferrer": "Anonymiser henviser",
+ "AnonymizeReferrerExcludeAll": "Ikke registrer referent-nettadresse, men oppdag typen referent",
"AnonymizeReferrerExcludeNone": "Ikke anonymiser henviseren",
"AnonymizeReferrerExcludePath": "Kun behold domenedelen av henviser-nettadresse",
"AnonymizeReferrerExcludeQuery": "Fjern spørringsparameter fra henviser-nettadresse",
+ "AnonymizeReferrerNote": "Matomo lagrer hvilken nettadresse (referent) en bruker ankommer siden din fra. I noen fall vil en slik nettadresse inneholde info som kan anses som personvernsinfo. Hvis du ønsker å forhindre at slik info spores kan du begrense mengden referentdato Matomo lagrer når en besøkende ankommer nettsiden. Desto mer info som fjernes fra referent-infoen desto mindre sannsynlig er det at personvernsinfo registreres. Desto mer info du fjerner fra referenten desto mindre klart vil det være hvordan en besøkende ankom nettsiden din.",
"AnonymizeRowDataFrom": "Anonymiser all rådata med start fra:",
"AnonymizeRowDataTo": "Anonymiser all rådata opp til:",
"AnonymizeSites": "Anonymiser data for denne/disse siden(e)",
"AnonymizeUserId": "Erstatt bruker-ID med et pseudonym",
"AskingForConsent": "Forespørsel om samtykke",
"AwarenessDocumentation": "Oppmerksomhet og dokumentasjon",
+ "AwarenessDocumentationDesc1": "Informer dine besøkende gjennom en klar personvernsmerknad når du samler inn personvernsdata.",
+ "AwarenessDocumentationDesc2": "Informer dine brukere i personvernspraksisen om hvilken data du samler inn og hvordan den brukes.",
+ "AwarenessDocumentationDesc3": "Gjør laget ditt oppmerksom på at du bruker Matomo-analyse og %1$shvilken data som samles inn av din analyseplattform%2$s.",
+ "AwarenessDocumentationDesc4": "Dokumenter din bruk av Matomo innen ditt %1$sregister over informasjonstilganger%2$s.",
+ "AwarenessDocumentationIntro": "Informer dine brukere klart og gjennomsiktig, og gjør dine kolleger klare over dataen som samles inn og hvordan den brukes.",
"BackgroundColor": "Bakgrunnsfarge",
"ClickHereSettings": "Klikk her for å få tilgang til %s-innstillingene.",
"ConsentExplanation": "Samtykke betyr at brukere har valget og kontrollerer hvordan deres persondetaljer behandles.",
"CurrentDBSize": "Nåværende databasestørrelse",
"DBPurged": "Database tømt.",
"DataRetention": "Datalagring",
+ "DataRetentionInMatomo": "Bevaring av data lagret i Matomo:",
"DeleteDataInterval": "Slett gammel data hver",
"DeleteDataSettings": "Slett gamle besøkslogger og -rapporter",
"DeleteLogsOlderThan": "Slett logger eldre enn",
+ "DeleteMaxRows": "Maksimalt antall rader å slette i én kjøring:",
"DeleteMaxRowsNoLimit": "ingen grense",
"DeleteOldRawData": "Slett gammel rådata regelmessig",
"DeleteOldVisitorLogs": "Slett gamle besøkslogger",
"DeleteReportsOlderThan": "Slett rapporter eldre enn",
"DeleteSelectedVisits": "Slett valgte besøk",
+ "DeleteVisitsConfirm": "Slett valgte besøk for godt?",
"DoNotTrack_Disable": "Deaktiver Do Not Track-støtte",
"DoNotTrack_Enable": "Aktiver Do Not Track-støtte",
+ "DoNotTrack_Enabled": "Du respekterer nå dine brukeres personvern. Bravo.",
+ "DoNotTrack_SupportDNTPreference": "Støtt «ikke spor meg»-innstilling",
+ "EstimatedDBSizeAfterPurge": "Anslått databasestørrelse etter rensing",
"EstimatedSpaceSaved": "Estimert plassbesparelse",
"ExportSelectedVisits": "Eksporter valgte besøk",
"FontColor": "Skriftfarge",
"FontFamily": "Skriftfamilie",
"FontSize": "Skriftstørrelse",
+ "ForceCookielessTracking": "Påtving sporing uten kaker",
"GDPR": "GDPR",
"GdprChecklists": "GDPR-sjekklister",
"GdprManager": "GDPR-håndterer",
"GdprOverview": "GDPR-oversikt",
"GdprTools": "GDPR-verktøy",
+ "GdprToolsOverviewHint": "I fall du ikke vet hva GDPR er, kan du lese %1$sGDPR-oversikten%2$s.",
+ "GdprToolsPageIntro1": "Denne siden er designet for at du skal kunne utøve dataemne-rettigheter.",
+ "GdprToolsPageIntro2": "Her kan du utøve rettighetene til dine brukere med en GDPR_kompatibel prosedyre:",
"GeolocationAnonymizeIpNote": "Merk: Geoposisjonering vil ha omtrent de samme resultatene med en byte anonymisert. Med to byte eller mer, vil geoposisjonering være unøyaktig.",
"HowDoIAskForConsent": "Hvordan spør jeg brukere om samtykke?",
+ "HowDoIAskForConsentIntroduction": "Lær alt om å %1$sspørre om kake- eller sporingssamtykke i integrasjonsveiledningen.%2$s",
"Imprint": "Impressum",
"ImprintUrl": "Impressum-nettadresse",
"ImprintUrlDescription": "En lenke til din impressums-side",
@@ -58,30 +84,42 @@
"MatchingDataSubjects": "Samsvarende dataemner",
"MenuPrivacySettings": "Personvern",
"NextDelete": "Neste planlagte sletting om",
+ "NoDataSubjectsFound": "Fant ingen dataemner",
"OptOutHtmlCode": "HTML-kode til innebygging 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å",
"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",
"SecurityProcedures": "Sikkerhetsprosedyrer",
+ "SeeAlsoOurOfficialGuidePrivacy": "Sjekk også den offisielle veiledningen: %1$svev-analysepersonvern%2$s",
"SelectWebsite": "Velg en nettside",
"ShowInEmbeddedWidgets": "Vis i innebygde miniprogrammer",
+ "ShowInEmbeddedWidgetsDescription": "Viser en lenke til din personvernspraksis og dine vilkår og betingelser på bunnen av innebygde miniprogrammer.",
"TeaserHeadline": "Personverninnstillinger",
"TermsAndConditionUrl": "Nettadresse for vilkår og betingelser",
"TermsAndConditionUrlDescription": "En lenke til din side for vilkår og betingelser.",
"TermsAndConditions": "Vilkår og betingelser",
+ "TrackingOptOut": "La brukere velge bort sporing",
"UnsetActionColumns": "Fjern innstilling for handlingskolonner",
+ "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.",
"UseAnonymizeOrderId": "Anonymiser ordre-ID",
"UseAnonymizeTrackingData": "Anonymiser sporingsdata",
"UseAnonymizeUserId": "Anonymiser bruker-ID",
"UseDeleteLog": "Slett gammel rådata fra databasen regelmessig",
"UseDeleteReports": "Slett gamle rapporter fra databasen regelmessig",
+ "UsersOptOut": "Utmelding av sporing for brukere",
"VisitsMatchedCriteria": "Disse besøkene samsvarer med valgte kriterium",
+ "WhenConsentIsNeeded1": "I henseende %1$sGDPR-personvernsreguleringer%2$s er det når du behandler personvernsdata noen fall der du må spørre brukere om samtykke. For å finne ut om du trenger det må du fastsette hvorvidt din lovige basis for å behandle personvernsdata er «Samtykke» eller «Legitim interesse», eller hvorvidt du kan unngå å samle inn personvernsdata overhodet. Det anbefales at du lærer mer om%3$slovlig basis under GDPR for Matomo%4$s.",
+ "WhenConsentIsNeeded2": "Merk at når du kreves å hente brukersamtykke og hvis du ikke kan bevise at du innhentet «Samtykke» for dine brukere i fortiden, anbefales det å %1$sanonymisere rådata om de brukerne du har sporet%2$s",
"WhenDoINeedConsent": "Når må jeg pørre om brukersamtykke?"
}
}
diff --git a/plugins/PrivacyManager/lang/sq.json b/plugins/PrivacyManager/lang/sq.json
index 35d50699e1..8bb42ab8c3 100644
--- a/plugins/PrivacyManager/lang/sq.json
+++ b/plugins/PrivacyManager/lang/sq.json
@@ -1,184 +1,186 @@
{
"PrivacyManager": {
+ "AddUserIdToSearch": "Klikoni që të shtohet te kërkimi kjo userID",
+ "AddVisitorIPToSearch": "Klikoni që të shtohet te kërkimi kjo visitorIP",
+ "AddVisitorIdToSearch": "Klikoni që të shtohet te kërkimi kjo visitorID",
"AnonymizeData": "Anonimizo të dhënat",
- "AnonymizeIpDescription": "Përzgjidhni \"Po\" nëse doni që Matomo të mos ndjekë adresa IP të përcaktuara qartë.",
- "AnonymizeIpInlineHelp": "Anonimizoje bajtin(et) e fundit të adresave IP të vizitorëve, në pajtim me ligjet\/udhëzimet vendore mbi privatësinë.",
- "AnonymizeIpExtendedHelp": "Kur përdoruesit vizitojnë sajtin tuaj, Piwik-u s’do të përdorë adresën e plotë IP (të tillë si %1$s), por, në vend të kësaj, Matomo-u së pari do ta anonimizojë (si %2$s). Anonimizimi i adresave IP është një nga domosdoshmëritë e vendosura nga ligjet mbi privatësinë në disa vende, si Gjermania, fjala vjen.",
- "AnonymizeIpMaskLengtDescription": "Përzgjidhni sa bajte të maskohen te IP-ja e vizitorit.",
- "AnonymizeIpMaskLength": "%1$s bajt(e) - p.sh. %2$s",
- "AnonymizeIpMaskFully": "Masko plotësisht adresën IP",
- "AnonymizeReferrer": "Anonimizo Referues",
- "AnonymizeReferrerNote": "Matomo-ja depoziton prej cilave URL (referues) vjen në sajtin tuaj një përdorues. Në disa raste, një URL e tillë mund të përmbajë informacion që mund të konsiderohet informacion personal. Nëse doni të pengoni ndjekjen e informacioneve të tilla, mund të kufizoni sasinë e të dhënave mbi referuesin që do të depozitojë Matomo-ja, kur një vizitor hyn në sajtin tuaj. Sa më tepër informacion që të hiqet prej të dhënave mbi referuesin, aq më pak të dhëna personale do të regjistrohen. Sa më tepër informacion që hiqni prej referuesit, aq më pak e qartë do të bëhet njohja se si erdhi një vizitor në sajtin tuaj.",
- "AskingForConsent": "Kërkim pranimi",
- "ConsentExplanation": "Pranim do të thotë t’u ofrohet individëve zgjedhje dhe kontroll rreth se si përpunohen të dhënat e tyre personale.",
- "ClickHereSettings": "Klikoni këtu që të shkoni te rregullimet mbi %s.",
- "WhenDoINeedConsent": "Kur më duhet të kërkoj për pranim nga përdoruesi?",
- "WhenConsentIsNeeded1": "Në kontekstin e %1$srregullave GDPR mbi privatësinë%2$s, kur përpunoni të dhëna personale, në disa raste do t’ju duhet të kërkoni për pranim nga përdoruesit tuaj. Që të përcaktoni nëse ju duhet apo jo të kërkoni pranim, duhet të përcaktoni nëse baza juaj ligjore për përpunim të dhënash personale është \"Pranim\" ose \"Interes i ligjshëm\", ose nëse mund të shmangni fare grumbullim të dhënash personale. Këshillojmë të mësoni më tepër mbi %3$sbazën ligjore sipas GDPR-së për Matomo-n%4$s.",
- "WhenConsentIsNeeded2": "Mbani parasysh se kur e keni detyrim të merrni pranimin e përdoruesve dhe nuk provoni dot se patët \"Pranimin\" e përdoruesve tuaj në të kaluarën, atëherë këshillojmë të %1$sanonimizoni të dhënat e papërpunuara të përdoruesve të ndjekur dikur%2$s.",
- "HowDoIAskForConsent": "Si ta kërkoj pranimin nga përdoruesit?",
- "HowDoIAskForConsentIntroduction": "Mësoni gjithçka rreth %1$skërkimit të pranimit për cookie ose gjurmim, te udhërrëfyesi ynë i integrimeve.%2$s",
- "AnonymizeSites": "Anonimizo të dhënat e këtij sajti(eve)",
- "AnonymizeRowDataFrom": "Anonimizo krejt të dhënat e papërpunuara duke filluar nga:",
- "AnonymizeRowDataTo": "Anonimizo krejt të dhënat e papërpunuara deri më:",
- "AnonymizeReferrerExcludeNone": "Mos e anonimizo referuesin",
- "AnonymizeReferrerExcludeQuery": "Hiq prej URL-së së referuesit parametra kërkese",
- "AnonymizeReferrerExcludePath": "Mbaj vetëm përkatësinë e një URL-je referuesi",
- "AnonymizeReferrerExcludeAll": "Mos e regjistro URL-në e referuesit, por pikas prapëseprapë llojin e referuesit",
+ "AnonymizeDataConfirm": "Jeni i sigurt se doni të anonimizohen të dhënat për sajtin(et) e përzgjedhur dhe intervalin e dhënë të kohës? Ky veprim s’mund të zhbëhet, të dhëna mund të fshihen, në u dashtë dhe ky proces do të hajë një kohë të gjatë.",
+ "AnonymizeDataNow": "Anonimizo të dhëna të dikurshme për sajtin dhe kohën e përzgjedhur",
"AnonymizeIp": "Anonimizo IP",
+ "AnonymizeIpDescription": "Përzgjidhni “Po”, nëse doni që Matomo të mos ndjekë adresa IP të përcaktuara qartë.",
+ "AnonymizeIpExtendedHelp": "Kur përdoruesit vizitojnë sajtin tuaj, Matomo s’do të përdorë adresën e plotë IP (të tillë si %1$s), por, në vend të kësaj, Matomo-ja së pari do ta anonimizojë (si %2$s). Anonimizimi i adresave IP është një nga domosdoshmëritë e vendosura nga ligjet mbi privatësinë në disa vende, si Gjermania, fjala vjen.",
"AnonymizeIpHelp": "Ky veprim s’mund të zhbëhet. Në u aktivizoftë, për krejt vizitat gjatë kohëzgjatjes, IP-ja do të anonimizohet të paktën me 2 bajte, për shembull '192.168.xxx.xxx'. Nëse keni formësuar të anonimizohen 3 bajte, atëherë ky rregullim do të respektohet dhe krejt IP-të do të anonimizohen me 3 bajte.",
+ "AnonymizeIpInlineHelp": "Anonimizoje bajtin(et) e fundit të adresave IP të vizitorëve, në pajtim me ligjet/udhëzimet vendore mbi privatësinë.",
+ "AnonymizeIpMaskFully": "Masko plotësisht adresën IP",
+ "AnonymizeIpMaskLengtDescription": "Përzgjidhni sa bajte të maskohen te IP-ja e vizitorit.",
+ "AnonymizeIpMaskLength": "%1$s bajt(e) - p.sh., %2$s",
"AnonymizeLocation": "Anonimizo Vendndodhje",
- "AnonymizeLocationHelp": "Ky veprim s’mund të zhbëhet. Rivlerëson vendndodhjen bazuar bë IP-në e anonimizuar (do të anonimizohen të paktën 2 bajte të IP-së).",
- "AnonymizeUserId": "Zëvendëso ID Përdoruesi me një pseudonim",
- "AnonymizeUserIdHelp": "Kur aktivizoni këtë mundësi, ID-ja e Përdoruesit do të zëvendësohet me një pseudonim, që të shmanget depozitimi dhe shfaqja e drejtpërdrejtë e të dhënash që lejojnë identifikim personal, bie fjala, një adresë email. Në terma teknikë: me bazë ID-në tuaj të Përdoruesit, Matomo-ja do të përpunojë pseudonimin e ID-së së Përdoruesit duke përdorur një funksion hash <em>salted<\/em>.<br\/><br\/><em>Shënim: zëvendësimi me një pseudonim s’është e njëjta gjë si anonimizimi. Sipas termave të GDPR-së: pseudonimi i ID-së së Përdoruesit ende konsiderohet e dhënë personale. ID-ja origjinale e Përdoruesit ende mund të identifikohet, nëse kihen disa të dhëna shtesë (te të cilat mund të hyjnë vetëm Matomo dhe përpunuesi juaj i të dhënave).<\/em>",
+ "AnonymizeLocationHelp": "Ky veprim s’mund të zhbëhet. Rivlerëson vendndodhjen bazuar në IP-në e anonimizuar (do të anonimizohen të paktën 2 bajte të IP-së).",
+ "AnonymizeOrderIdNote": "Ngaqë një ID Porosie mund të mund të përshoqërohet me një sistem tjetër, zakonisht një dyqan etregtie, ID-ja e Porosisë mund të shihet si e dhënë personale, nën GDPR-në. Kur e aktivizoni këtë mundësi, një ID Porosie do të anonimizohet vetvetiu dhe kështu s’do të ketë ndjekje të dhënash personale.",
"AnonymizeProcessInfo": "Ky veprim mund të zgjasë një kohë të gjatë, ndaj edhe s’do të kryhet menjëherë. Më poshtë do të jeni në gjendje të ndiqni gjendjen aktuale të procesit. Anonimizimi normalisht duhet të fillojë brenda një ore.",
- "AnonymizeDataNow": "Anonimizo të dhëna të dikurshme për sajtin dhe kohën e përzgjedhur",
- "AnonymizeDataConfirm": "Jeni i sigurt se doni të anonimizohen të dhënat për sajtin(et) e përzgjedhur dhe intervalin e dhënë të kohës? Ky veprim s’mund të zhbëhet, të dhëna mund të fshihen, në u dashtë, dhe ky proces do të hajë një kohë të gjatë.",
- "UnsetVisitColumns": "Rikthe shtylla vizitash te parazgjedhjet",
- "UnsetActionColumns": "Rikthe te parazgjedhjet shtylla veprimi",
- "AwarenessDocumentation": "Ndërgjegjësim & dokumentim",
- "AwarenessDocumentationIntro": "Informoni përdoruesit tuaj qartë dhe me transparencë dhe bëjini kolegët tuaj të ndërgjegjshëm rreth të dhënave që grumbullohen dhe se si përdoren ato:",
- "AwarenessDocumentationDesc1": "Informoni vizitorët tuaj përmes një shënimi të qartë mbi privatësinë, kurdo që grumbulloni të dhëna personale.",
- "AwarenessDocumentationDesc2": "Informojini përdoruesit tuaj te rregullat tuaja të privatësisë rreth se ç’të dhëna grumbulloni dhe se si përdoren të dhënat.",
+ "AnonymizeReferrer": "Anonimizo Sjellës",
+ "AnonymizeReferrerExcludeAll": "Mos e regjistro URL-në e sjellësit, por pikas prapëseprapë llojin e sjellësit",
+ "AnonymizeReferrerExcludeNone": "Mos e anonimizo sjellësin",
+ "AnonymizeReferrerExcludePath": "Mbaj vetëm përkatësinë e një URL-je sjellësi",
+ "AnonymizeReferrerExcludeQuery": "Hiq prej URL-së së sjellësit parametra kërkese",
+ "AnonymizeReferrerNote": "Matomo-ja depoziton prej cilave URL (sjellës) vjen në sajtin tuaj një përdorues. Në disa raste, një URL e tillë mund të përmbajë informacion që mund të konsiderohet informacion personal. Nëse doni të pengoni ndjekjen e informacioneve të tilla, mund të kufizoni sasinë e të dhënave mbi sjellësin që do të depozitojë Matomo-ja, kur një vizitor hyn në sajtin tuaj. Sa më tepër informacion që të hiqet prej të dhënave mbi sjellësin, aq më pak të dhëna personale do të regjistrohen. Sa më tepër informacion që hiqni prej sjellësit, aq më pak e qartë do të bëhet njohja se si erdhi një vizitor në sajtin tuaj.",
+ "AnonymizeRowDataFrom": "Anonimizo krejt të dhënat e papërpunuara duke filluar nga:",
+ "AnonymizeRowDataTo": "Anonimizo krejt të dhënat e papërpunuara deri më:",
+ "AnonymizeSites": "Anonimizo të dhënat e këtij sajti(eve)",
+ "AnonymizeUserId": "Zëvendëso ID Përdoruesi me një pseudonim",
+ "AnonymizeUserIdHelp": "Kur aktivizoni këtë mundësi, ID-ja e Përdoruesit do të zëvendësohet me një pseudonim, që të shmanget depozitimi dhe shfaqja e drejtpërdrejtë e të dhënash që lejojnë identifikim personal, bie fjala, një adresë email. Në terma teknikë: me bazë ID-në tuaj të Përdoruesit, Matomo-ja do të përpunojë pseudonimin e ID-së së Përdoruesit duke përdorur një funksion hash <em>salted</em>.<br><br><em>Shënim: zëvendësimi me një pseudonim s’është e njëjta gjë si anonimizimi. Sipas termave të GDPR-së: pseudonimi i ID-së së Përdoruesit ende konsiderohet e dhënë personale. ID-ja origjinale e Përdoruesit ende mund të identifikohet, nëse kihen disa të dhëna shtesë (te të cilat mund të hyjnë vetëm Matomo dhe përpunuesi juaj i të dhënave).</em>",
+ "AskingForConsent": "Kërkim pranimi",
+ "AwarenessDocumentation": "Ndërgjegjësim &amp; dokumentim",
+ "AwarenessDocumentationDesc1": "Informojini vizitorët tuaj përmes një shënimi të qartë mbi privatësinë, kurdo që grumbulloni të dhëna personale.",
+ "AwarenessDocumentationDesc2": "Informojini përdoruesit tuaj, te rregullat tuaja të privatësisë, rreth se ç’të dhëna grumbulloni dhe se si përdoren të dhënat.",
"AwarenessDocumentationDesc3": "Bëjeni ekipin tuaj të ndërgjegjshëm se po përdorni Matomo Analytics dhe se %1$sçfarë të dhënash grumbullohen nga platforma juaj e analizave%2$s.",
"AwarenessDocumentationDesc4": "Dokumentoni përdorimin tuaj të Matomo-s brenda %1$sregjistrit tuaj të aseteve të informacionit%2$s.",
+ "AwarenessDocumentationIntro": "Informoni përdoruesit tuaj qartë dhe me transparencë dhe bëjini kolegët tuaj të ndërgjegjshëm rreth të dhënave që grumbullohen dhe se si përdoren ato:",
+ "BackgroundColor": "Ngjyrë Sfondi",
+ "ClickHereSettings": "Që të shkoni te rregullimet mbi %s, klikoni këtu.",
+ "ConsentExplanation": "Pranim do të thotë t’u ofrohet individëve zgjedhje dhe kontroll rreth se si përpunohen të dhënat e tyre personale.",
"CurrentDBSize": "Madhësia e tanishme e bazës së të dhënave",
+ "DBPurged": "DB-ja u pastrua.",
"DataRetention": "Mbajtje të dhënash",
"DataRetentionInMatomo": "Mbajtje të dhënash për të dhëna të depozituara në Matomo:",
- "DataRetentionOverall": "Vlera e përgjithshme e mbajtjes së të dhënave për rregullat tuaja të privatësisë është vlera e mbajtjes së të dhënave të papërpunuara. Ju lutemi, mbani parasysh se edhe raportet e përmbledhur mund të përmbajnë të dhëna personale. Nëse përdorni veçori të tilla si ID Përdoruesi, Ndryshore Vetjake, Përmasa Vetjake, ose ndiqni të dhëna personale në mënyra të tjera, të tilla si akte, URL-ra faqesh apo tituj faqesh, etj, atëherë vlera e përgjithshme e mbajtjes së të dhënave për rregullat tuaja të privatësisë është më e lartë se e të dyjave.",
- "RawDataRemovedAfter": "krejt të dhënat e papërpunuara mbi vizita dhe veprime fshihen pas %1$s.",
- "RawDataNeverRemoved": "të dhënat e papërpunuara të vizitave dhe veprimeve s’fshihen <strong>kurrë<\/strong>.",
- "ReportsRemovedAfter": "krejt raportet përmbledhës fshihen pas %1$s.",
- "ReportsNeverRemoved": "raportet e përbërë s’fshihen <strong>kurrë<\/strong>.",
- "DBPurged": "DB-ja u pastrua.",
+ "DataRetentionOverall": "Niveli i përgjithshëm i mbajtjes së të dhënave për rregullat tuaja të privatësisë është niveli i mbajtjes së të dhënave të papërpunuara. Ju lutemi, mbani parasysh se edhe raportet e përmbledhur mund të përmbajnë të dhëna personale. Nëse përdorni veçori të tilla si ID Përdoruesi, Ndryshore Vetjake, Përmasa Vetjake, ose ndiqni të dhëna personale në mënyra të tjera, të tilla si akte, URL-ra faqesh apo tituj faqesh, etj, atëherë niveli i përgjithshëm i mbajtjes së të dhënave për rregullat tuaja të privatësisë është më e lartë se i të dyjave.",
+ "DeleteAggregateReportsDetailedInfo": "Kur e aktivizoni këtë rregullim, do të fshihen krejt raportet e krijuar. Raportet e krijuar prodhohen nga të dhëna të papërpunuara prej shumë vizitash individuale. Për shembull, raporti “Vend” radhit numra përmbledhës për të parë se sa vizita keni pasur prej secilit vend.",
"DeleteBothConfirm": "Ju ndan një hap nga aktivizimi i fshirjes si për të dhënat e papërpunuara, ashtu edhe për të dhëna raportesh. Kjo do t’ju heqë përgjithmonë aftësinë të shihni të dhëna analitike të vjetra. Jeni i sigurt se doni të bëhet kjo?",
- "DeleteDataDescription": "Mund ta formësoni Matomo-n të fshjë rregullisht të dhëna të vjetra të papërpunuara dhe\/ose raporte të krijuar, për ta mbajtur bazën tuaj të të dhënave të vogël ose për të qenë në përputhje me rregulla privatësie të tilla si GDPR-ja.",
+ "DeleteDataDescription": "Mund ta formësoni Matomo-n të fshijë rregullisht të dhëna të vjetra të papërpunuara dhe/ose raporte të krijuar, për ta mbajtur bazën tuaj të të dhënave të vogël, ose për të qenë në përputhje me rregulla privatësie të tilla si GDPR-ja.",
"DeleteDataInterval": "Fshiji të dhënat e vjetra çdo",
- "DeleteOldVisitorLogs": "Fshi regjistra të vjetër vizitorësh",
- "DeleteOldRawData": "Fshi rregullisht të dhëna të vjetra të papërpunuara",
- "DeleteOldAggregatedReports": "Fshi raporte të vjetër të krijuar",
+ "DeleteDataSettings": "Fshi regjistra dhe raporte të vjetër përdoruesish",
"DeleteLogDescription2": "Kur aktivizoni fshirjen e vetvetishme të regjistrimeve, duhet të siguroheni që janë përpunuar krejt raportet e ditës së mëparshme, që të mos humbni të dhëna.",
- "DeleteRawDataInfo": "Të dhënat e papërpunuara përfshijnë krejt hollësitë mbi secilën vizitë individuale dhe mbi çdo veprim që bënë vizitorët tuaj. Kur fshini të dhëna të papërpunuara, informacioni i fshirë s’do të mund të gjendet apo përdoret më te regjistri mbi atë vizitorë. Gjithashtu, nëse vendosni më vonë të krijoni një segment, s’do të prodhohen dot raporte segmentesh për atë interval kohor që është fshirë, ngaqë krejt raportet e krijuar prodhohen nga këto të dhëna të papërpunuara.",
"DeleteLogsConfirm": "Ju ndan një hap nga fshirja e të dhënave të papërpunuara. Nëse hiqen të dhënat e vjetra të papërpunuara, dhe raportet s’janë krijuar ende, s’do të jeni në gjendje të shihni të dhëna analitike të dikurshme historike. Jeni i sigurt se doni të bëhet kjo?",
"DeleteLogsOlderThan": "Fshi regjistrime më të vjetër se",
"DeleteMaxRows": "Numër maksimum rreshtash për t’u fshirë njëherazi:",
"DeleteMaxRowsNoLimit": "pa kufi",
+ "DeleteOldAggregatedReports": "Fshi raporte të vjetër të krijuar",
+ "DeleteOldRawData": "Fshi rregullisht të dhëna të vjetra të papërpunuara",
+ "DeleteOldVisitorLogs": "Fshi regjistra të vjetër vizitorësh",
+ "DeleteRawDataInfo": "Të dhënat e papërpunuara përfshijnë krejt hollësitë mbi secilën vizitë individuale dhe mbi çdo veprim që bënë vizitorët tuaj. Kur fshini të dhëna të papërpunuara, informacioni i fshirë s’do të mund të gjendet apo përdoret më te regjistri mbi atë vizitor. Gjithashtu, nëse vendosni më vonë të krijoni një segment, s’do të prodhohen dot raporte segmentesh për atë interval kohor që është fshirë, ngaqë krejt raportet e krijuar prodhohen nga këto të dhëna të papërpunuara.",
"DeleteReportsConfirm": "Ju ndan një hap nga aktivizimi i fshirjes së të dhënave të raporteve. Nëse hiqen raportet e vjetër, do t’ju duhet t’i ripërpunoni ata, pa të mund t’i shihni. Jeni i sigurt se doni të bëhet kjo?",
- "DeleteAggregateReportsDetailedInfo": "Kur e aktivizoni këtë rregullim, do të fshihen krejt raportet e krijuar. Raportet e krijuar prodhohen nga të dhëna të papërpunuara prej shumë vizitash individuale. Për shembull, raporti \"Vend\" radhit numra përmbledhës për të parë se sa vizita keni pasur prej secilit vend.",
- "KeepBasicMetricsReportsDetailedInfo": "Kur e aktivizoni këtë rregullim, disa tregues kyç numerikë mbi funksionimin e sajtit nuk do të fshihen.",
- "InfoSomeReferrerInfoMayBeAnonymized": "Disa të dhëna mbi referuesin mund të mungojnë, ngaqë anonizimi i referuesve është i aktivizuar si vijon: %s",
"DeleteReportsInfo2": "Nëse fshini raporte të vjetër, ata mund të rikrijohen përmes të dhënave të PAPËRPUNUARA, kur ta kërkoni këtë.",
- "DeleteReportsInfo3": "Nëse keni aktivizuar edhe \"%s\", atëherë të dhënat e raporteve që po fshini, do të humbin përgjithnjë.",
+ "DeleteReportsInfo3": "Nëse keni aktivizuar edhe “%s”, atëherë të dhënat e raporteve që po fshini, do të humbin përgjithnjë.",
"DeleteReportsOlderThan": "Fshi raporte më të vjetër se",
"DeleteSchedulingSettings": "Planifikoni fshirje të dhënash të vjetra",
- "DeleteDataSettings": "Fshi regjistra dhe raporte të vjetër përdoruesish",
+ "DeleteSelectedVisits": "Fshi vizitat e përzgjedhura",
+ "DeleteVisitsConfirm": "Jeni i sigurt se doni të fshihen vizitat e përzgjedhura? Veprimi s’mund të zhbëhet.",
+ "DeletionFromMatomoOnly": "Ju lutemi, mbani parasysh gjithashtu se çfarëdo të dhënash do të fshihen vetëm prej bazës së të dhënave të Matomo-s, jo prej regjistrave të shërbyesit tuaj. Mbani parasysh edhe se nëse riimportoni çfarëdo të dhënash historike, për shembull, prej regjistrash, çfarëdo të dhënash të fshira më parë mund të riimportohen.",
"DoNotTrack_Description": "Mos Më Gjurmo është një propozim teknik dhe rregulli që u lejon përdoruesve të zgjedhin lënien jashtë ndjekjes nga sajtet që vizitojnë, përfshi shërbime analizash, rrjete reklamash, dhe platforma shoqërore.",
"DoNotTrack_Disable": "Çaktivizoni mbulimin e Mos Më Gjurmo-së",
- "DoNotTrack_Disabled": "Matomo i ndjek krejt vizitorët, edhe kur ata kanë zgjedhur \"Nuk dua të gjurmohem\" në shfletuesin e tyre.",
- "DoNotTrack_DisabledMoreInfo": "Këshillojmë të aktivizoni mbulim për MosMëGjurmo për të respektuar privatësinë e vizitorëve tuaj",
+ "DoNotTrack_Disabled": "Matomo i ndjek krejt vizitorët, edhe kur ata kanë zgjedhur “Nuk dua të gjurmohem” në shfletuesin e tyre.",
+ "DoNotTrack_DisabledMoreInfo": "Këshillojmë të aktivizoni mbulim për MosMëGjurmo-në, për të respektuar privatësinë e vizitorëve tuaj",
"DoNotTrack_Enable": "Aktivizoni mbulimin e Mos Më Gjurmo-së",
"DoNotTrack_Enabled": "Po e respektoni Privatësinë e përdoruesve tuaj. Bravo!",
- "DoNotTrack_EnabledMoreInfo": "Kur përdoruesit kanë zgjedhur në shfletuesin e tyre \"Nuk dua të gjurmohem\" (DoNotTrack është i aktivizuar) atëherë Matomo nuk do t’i ndjekë këto vizita.",
- "DoNotTrack_SupportDNTPreference": "Përkrahni parapëlqimin Mos Më Gjurmo",
+ "DoNotTrack_EnabledMoreInfo": "Kur përdoruesit kanë zgjedhur në shfletuesin e tyre “Nuk dua të gjurmohem” (DoNotTrack është i aktivizuar), atëherë Matomo s’do t’i ndjekë këto vizita.",
+ "DoNotTrack_SupportDNTPreference": "Përkrahni parapëlqimin “Mos Më Gjurmo”",
"EstimatedDBSizeAfterPurge": "Madhësi e pritshme për bazën e të dhënave pas pastrimit",
"EstimatedSpaceSaved": "Hapësirë që pritet të kursehet",
- "ForceCookielessTracking": "Detyro gjurmim pa “cookies”",
- "ForceCookielessTrackingDescription": "Aktivizimi i kësaj mundësie do të përditësojë automatikisht %1$s, pra përmban ca kod shtesë për të siguruar që krejt gjurmuesit s’do të përdorin “cookies”. Përveç kësaj, Matomo-ja do të shpërfillë krejt cookie-t e gjurmimit më anë të shërbyesit.",
+ "ExportSelectedVisits": "Eksporto vizitat e përzgjedhura",
+ "ExportingNote": "Në rast se eksportoni të dhëna për të ushtruar të drejtën e përdorimit, ju lutemi, sigurohuni se vizitat e përzgjedhura janë kryer faktikisht nga subjekti i të dhënave për të cilin doni të eksportoni të dhëna.",
+ "FindDataSubjectsBy": "Gjeni subjekt të dhënash sipas",
+ "FontColor": "Ngjyrë Shkronjash",
+ "FontFamily": "Familje Shkronjash",
+ "FontSize": "Madhësi Shkronjash",
+ "ForceCookielessTracking": "Detyro ndjekje pa “cookies”",
+ "ForceCookielessTrackingDescription": "Aktivizimi i kësaj mundësie do të përditësojë automatikisht %1$s, pra përmban ca kod shtesë për të siguruar që krejt gjurmuesit s’do të përdorin “cookies”. Përveç kësaj, Matomo-ja do të shpërfillë krejt cookie-t e ndjekjes më anë të shërbyesit.",
"ForceCookielessTrackingDescription2": "Cookie-t do të çaktivizohen edhe kur përdoren metoda pranimi në gjurmuesin Matomo dhe thirrja, për shembull, e metodave për pranim cookie-sh s’do të aktivizojë cookie-t.",
- "ForceCookielessTrackingDescriptionNotWritable": "Kartela e gjurmuesit JS \"%1$s\" s’është e shkrueshme, çka është e domosdoshme për funksionimin e plotë të kësaj veçorie. Kur kartela e gjurmuesit JS s’është e shkrueshme, atëherë cookie-t do të shpërfillen vetëm më anë të shërbyesit, por prapë mundet që të depozitohen te shfletuesi. Për ta zgjidhur këtë problem, ju ose një përgjegjës sistemi lypset të ndryshoni lejet e kartelës, që kështu shërbyesi të mundet ta ndryshojë këtë kartelë.",
- "GeolocationAnonymizeIpNote": "Shënim: Gjeovendëzimi do të ketë përafërsisht të njëjtat përfundime me 1 bajt të anonimizuar. Me 2 ose më shumë bajte, Gjeovendëzimi do të jetë i pasaktë.",
+ "ForceCookielessTrackingDescriptionNotWritable": "Kartela e gjurmuesit JS “%1$s” s’është e shkrueshme, çka është e domosdoshme për funksionimin e plotë të kësaj veçorie. Kur kartela e gjurmuesit JS s’është e shkrueshme, atëherë cookie-t do të shpërfillen vetëm më anë të shërbyesit, por prapë mundet që të depozitohen te shfletuesi. Për ta zgjidhur këtë problem, ju ose një përgjegjës sistemi lypset të ndryshoni lejet e kartelës, që kështu shërbyesi të mundet ta ndryshojë këtë kartelë.",
"GDPR": "GDPR",
- "GdprManager": "Përgjegjës GDPR",
- "GdprChecklists": "Lista hapash për GDPR-në",
"GdprChecklistDesc1": "Nëse përmes Matomo-s përpunoni të dhëna personale shtetasish të BE-së, edhe nëse shoqëria juaj gjendet jashtë Europës, lypset të plotësoni detyrime sipas GDPR-së dhe ky udhërrëfyes do t’ju vijë në ndihmë.",
- "GdprChecklistDesc2": "Më poshtë keni mjetet tona që ju lejojnë të ushtroni kollaj të drejtat e përdoruesve tuaj, dhe listën e veprimeve për t’u kryer me qëllim për ta bërë përdorimin tuaj të Matomo-s në pajtim me GDPR-në dhe të mbroni të dhënat tuaja. Për të mësuar edhe më tepër, vizitoni %1$sudhërrëfyesin tonë të Përdoruesit për GDPR-në%2$s.",
+ "GdprChecklistDesc2": "Më poshtë keni mjetet tona që ju lejojnë të ushtroni kollaj të drejtat e përdoruesve tuaj dhe listën e veprimeve për t’u kryer me qëllim për ta bërë përdorimin tuaj të Matomo-s në pajtim me GDPR-në dhe të mbroni të dhënat tuaja. Për të mësuar edhe më tepër, vizitoni %1$sudhërrëfyesin tonë të Përdoruesit për GDPR-në%2$s.",
+ "GdprChecklists": "Lista hapash për GDPR-në",
+ "GdprManager": "Përgjegjës GDPR",
"GdprOverview": "Përmbledhje e GDPR-së",
"GdprOverviewIntro1": "Rregullorja e Përgjithshme e Mbrojtjes së të Dhënave (GDPR) është një rregullore e cila forcon dhe njëson mbrojtje të dhënash për krejt individët brenda Bashkimit Europian (BE).",
- "GdprOverviewIntro2": "Nëse ndërmerrni hapa për të garantuar se në Matomo s’mblidhen të dhëna personale, atëherë s’keni pse shqetësoheni rreth GDPR-së në Matomo (nëse nuk ndiqni adresa IP, as ID-ra përdoruesish, as të dhëna gjeovendëzimi, etj.).",
+ "GdprOverviewIntro2": "Nëse ndërmerrni hapa për të garantuar se në Matomo s’mblidhen të dhëna personale, atëherë s’keni pse shqetësoheni rreth GDPR-së në Matomo (nëse s’ndiqni adresa IP, as ID-ra përdoruesish, as të dhëna gjeolokalizimi, etj.).",
"GdprTools": "Mjete GDPR",
+ "GdprToolsOverviewHint": "Në rast se nuk e dini se ç’është GDPR-ja, ju lutemi, referojuni %1$spërmbledhjes mbi GDPR-në%2$s.",
+ "GdprToolsPageIntro1": "Kjo faqe është hartuar me qëllim që të ushtroni të drejtat tuaja si subjekt të dhënash.",
+ "GdprToolsPageIntro2": "Këtu mund të ushtroni të drejtat e vizitorëve tuaj me procedurat tona dashamirëse ndaj GDPR-së:",
+ "GdprToolsPageIntroAccessRight": "e drejta e hyrjes në krejt të dhënat e tij (dhe e drejta e bartjes së të dhënave),",
+ "GdprToolsPageIntroEraseRight": "e drejta për të fshirë disa ose krejt të dhënat e tij (dhe e drejta për të saktësuar).",
+ "GeolocationAnonymizeIpNote": "Shënim: Gjeolokalizimi do të ketë përafërsisht të njëjtat përfundime me 1 bajt të anonimizuar. Me 2 ose më shumë bajte, Gjeolokalizimi do të jetë i pasaktë.",
"GetPurgeEstimate": "Merrni parashikim pastrimi",
+ "HowDoIAskForConsent": "Si ta kërkoj pranimin nga përdoruesit?",
+ "HowDoIAskForConsentIntroduction": "Mësoni gjithçka rreth %1$skërkimit të pranimit për “cookie” ose ndjekje, te udhërrëfyesi ynë i integrimeve.%2$s",
"IndividualsRights": "Të drejta individuale",
- "IndividualsRightsIntro": "Ushtroni të drejtat e përdoruesve tuaj me procedurat tona dashamirëse ndaj GDPR-së:",
- "IndividualsRightsInform": "E drejta për t’u informuar: informoni përdoruesit tuaj me një shënim të qartë mbi privatësinë.",
"IndividualsRightsAccess": "E drejta e përdorimit: %1$skërkoni për një subjekt të dhënash%2$s dhe eksportoni krejt të dhënat e tij.",
+ "IndividualsRightsChildren": "Nëse ofroni shërbime internetore për fëmijë dhe bazoheni në pranim nga dikush të grumbullimit të informacioneve rreth tij, atëherë mund t’ju duhet pranimi i një prindi ose tutori, që të mund të përpunoni të dhëna personale të fëmijëve në përputhje me ligjin.",
"IndividualsRightsErasure": "E drejta për fshirje: %1$skërkoni për një subjekt të dhënash%2$s dhe fshini një pjesë ose krejt të dhënat për të.",
- "IndividualsRightsRectification": "E drejta e saktësimit: mundeni të %1$skërkoni për një subjekt të dhënash%2$s dhe të fshini disa ose krejt të dhënat e tij.",
- "IndividualsRightsPortability": "E drejta e bartjes së të dhënave: %1$skërkoni për një subjekt të dhënash%2$s dhe eksportoni krejt të dhënat e tij.",
+ "IndividualsRightsInform": "E drejta për t’u informuar: informoni përdoruesit tuaj me një shënim të qartë mbi privatësinë.",
+ "IndividualsRightsIntro": "Ushtroni të drejtat e përdoruesve tuaj me procedurat tona dashamirëse ndaj GDPR-së:",
"IndividualsRightsObject": "E drejta e objeksionit: %1$slejojuni përdoruesve tuaj të zgjedhin lehtësisht lënien jashtë%2$s te faqja e rregullave tuaja të privatësisë.",
- "IndividualsRightsChildren": "Nëse ofroni shërbime internetore për fëmijë dhe bazoheni në pranim nga dikush të grumbullimit të informacioneve rreth tyre, atëherë mund t’ju duhet pranimi i një prindi ose tutori, që të mund të përpunoni në përputhje me ligjin të dhëna personale të fëmijëve.",
+ "IndividualsRightsPortability": "E drejta e bartjes së të dhënave: %1$skërkoni për një subjekt të dhënash%2$s dhe eksportoni krejt të dhënat e tij.",
+ "IndividualsRightsRectification": "E drejta e saktësimit: mundeni të %1$skërkoni për një subjekt të dhënash%2$s dhe të fshini disa ose krejt të dhënat e tij.",
+ "InfoSomeReferrerInfoMayBeAnonymized": "Disa të dhëna mbi sjellësin të mungojnë, ngaqë anonimizimi i sjellësve është i aktivizuar si vijon: %s",
"KeepBasicMetrics": "Mba vlerat bazë (vizita, parje faqesh, mesatare kthimesh, shndërrime objektivash, shndërrime e-tregti, etj.)",
+ "KeepBasicMetricsReportsDetailedInfo": "Kur e aktivizoni këtë rregullim, disa tregues numerikë, kyç mbi funksionimin e sajtit, nuk do të fshihen.",
"KeepDataFor": "Mba krejt të dhënat për",
"KeepReportSegments": "Për të dhëna të mbajtura më sipër, mbaj edhe raporte të segmentuar",
"LastDelete": "Fshirja e fundit u krye më",
"LeastDaysInput": "Ju lutemi, jepni një numër ditësh më të madh se %s.",
"LeastMonthsInput": "Ju lutemi, tregoni një numër muajsh më të madh se %s.",
+ "MatchingDataSubjects": "Subjekte të dhënash me përputhje",
"MenuPrivacySettings": "Privatësi",
"NextDelete": "Fshirja pasuese është planifikuar më",
+ "NoDataSubjectsFound": "S’u gjetën subjekte të dhënash",
+ "OptOutCustomize": "Përshtatni skedën e Zgjedhjes së Lënies Jashtë",
+ "OptOutHtmlCode": "Kod HTML për t’u trupëzuar në sajtin tuaj",
+ "OptOutPreview": "Bëni një paraparje të Zgjedhjes Për Lënie jashtë, ashtu si do të dukej në sajtin tuaj",
"PluginDescription": "Shtoni Privatësinë për përdoruesit tuaj dhe bëjeni instalimin tuaj të Matomo-s të përputhshëm me ligjshmërinë vendore mbi privatësinë.",
+ "PrivacyPolicy": "Rregulla Privatësie",
+ "PrivacyPolicyUrl": "URL Rregullash Privatësie",
+ "PrivacyPolicyUrlDescription": "Një lidhje për te faqja juaj e Rregullave të Privatësisë.",
+ "PrivacyPolicyUrlDescriptionSuffix": "Nëse e caktoni këtë, do të shfaqet në fund të faqes së hyrjeve dhe te faqe te të cilat mund të hyjë përdoruesi '%1$s'.",
+ "PseudonymizeUserId": "Zëvendëso ID Përdoruesi me një pseudonim",
+ "PseudonymizeUserIdNote": "Kur aktivizoni këtë mundësi, ID-ja e Përdoruesit do të zëvendësohet me një pseudonim, për të shmangur depozitim dhe shfaqje të drejtpërdrejtë në ekran të dhënash personale të identifikueshme, f.v. një adresë email. Me terma teknike: kur i jepet ID-ja juaj e Përdoruesit, Matomo do të përgatisë pseudonimin e ID-së së Përdoruesit duke përdorur një funksion &lt;em&gt;salted hash&lt;/em&gt;.",
+ "PseudonymizeUserIdNote2": "Shënim: zëvendësimi me një pseudonim s’është e njëjta gjë me anonimizimin. Me termat e GDPR-së: Pseudonimi i ID-së së Përdoruesit merret si e dhënë personale. ID-ja origjinale e Përdoruesit prapë mund të identifikohet, nëse kihen disa të dhëna të caktuara (te të cilat mund të hyjë vetëm Matomo dhe përpunuesi i të dhënave tuaja).",
"PurgeNow": "Pastroje DB-në Tani",
"PurgeNowConfirm": "Ju ndan një hap nga fshirja përgjithmonë e të dhënave nga baza juaj e të dhënave. Jeni i sigurt se doni të vazhdohet?",
- "PurgingData": "Po pastrohen të dhënat…",
+ "PurgingData": "Po spastrohen të dhënat…",
+ "RawDataNeverRemoved": "të dhënat e papërpunuara të vizitave dhe veprimeve s’fshihen <strong>kurrë</strong>.",
+ "RawDataRemovedAfter": "krejt të dhënat e papërpunuara mbi vizita dhe veprime fshihen pas %1$s.",
"RecommendedForPrivacy": "E këshilluar për privatësi",
"ReportsDataSavedEstimate": "Madhësi baze të dhënash",
- "SearchForDataSubject": "Kërkoni për një subjekt të dhënash",
- "FindDataSubjectsBy": "Gjeni subjekt të dhënash sipas",
- "NoDataSubjectsFound": "S’u gjetën subjekte të dhënash",
- "DeleteVisitsConfirm": "Jeni i sigurt se doni të fshihen vizitat e përzgjedhura? Veprimi s’mund të zhbëhet.",
- "ResultTruncated": "U gjetën më shumë se %1$s përfundime dhe përfundimi u shkurtua deri te %1$s vizitat e para.",
- "AddVisitorIdToSearch": "Klikoni që të shtohet te kërkimi ky visitorID",
- "AddVisitorIPToSearch": "Klikoni që të shtohet te kërkimi ky visitorIP",
- "AddUserIdToSearch": "Klikoni që të shtohet te kërkimi ky userID",
- "ExportSelectedVisits": "Eksporto vizitat e përzgjedhura",
- "DeleteSelectedVisits": "Fshi vizitat e përzgjedhura",
- "SelectWebsite": "Përzgjidhni një sajt",
- "MatchingDataSubjects": "Subjekte të dhënash me përputhje",
- "VisitsMatchedCriteria": "Këto vizita plotësojnë kriterin e përzgjedhur.",
- "ExportingNote": "Në rast se eksportoni të dhëna për të ushtruar të drejtën e përdorimit, ju lutemi, sigurohuni se vizitat e përzgjedhura janë kryer faktikisht nga subjekti i të dhënave për të cilin doni të eksportoni të dhëna.",
- "DeletionFromMatomoOnly": "Ju lutemi, mbani parasysh gjithashtu se çfarëdo të dhënash do të fshihen vetëm prej bazës së të dhënave të Matomo-s, jo prej regjistrave të shërbyesit tuaj. Mbani paraysh gjithashtu se nëse riimportoni çfarëdo të dhënash historike, për shembull, prej regjistrash, çfarëdo të dhënash të fshira më parë mund të riimportohen.",
+ "ReportsNeverRemoved": "raportet e përbërë s’fshihen <strong>kurrë</strong>.",
+ "ReportsRemovedAfter": "krejt raportet përmbledhës fshihen pas %1$s.",
"ResultIncludesAllVisits": "Përfundimet e gjetura përfshijnë krejt vizitat pa ndonjë kufizim kohe dhe përfshijnë ditën e sotme.",
- "GdprToolsPageIntro1": "Kjo faqe është hartuar me qëllim që të ushtroni të drejtat tuaja si subjekt të dhënash.",
- "GdprToolsPageIntro2": "Këtu mund të ushtroni të drejtat vizitorëve tuaj me procedurat tona dashamirëse ndaj GDPR-së:",
- "GdprToolsPageIntroAccessRight": "e drejta e hyrjes në krejt të dhënat e tij (dhe e drejta e bartjes së të dhënave),",
- "GdprToolsPageIntroEraseRight": "e drejta për të fshirë disa ose krejt të dhënat e tij (dhe e drejta për të saktësuar).",
- "GdprToolsOverviewHint": "Në rast se nuk e dini se ç’është GDPR-ja, ju lutemi, referojuni %1$spërmbledhjes mbi GDPR-në%2$s.",
- "SaveSettingsBeforePurge": "Keni ndryshuar rregullimet për fshirje të dhënash. Ju lutemi, ruajini ato përpara se të nisni një pastrim.",
- "SeeAlsoOurOfficialGuidePrivacy": "Shihni edhe udhërrëfyesin tonë zyrtar: %1$sPrivatësi Analizash Web%2$s",
+ "ResultTruncated": "U gjetën më shumë se %1$s përfundime dhe përfundimi u shkurtua deri te %1$s vizitat e para.",
+ "SaveSettingsBeforePurge": "Keni ndryshuar rregullimet për fshirje të dhënash. Ju lutemi, ruajini ato përpara se të nisni një spastrim.",
+ "SearchForDataSubject": "Kërkoni për një subjekt të dhënash",
"SecurityProcedures": "Procedura sigurie",
- "SecurityProceduresIntro": "Informoni përdoruesit tuaj qartë dhe me transparencë dhe bëjini kolegët tuaj të ndërgjegjshëm rreth të dhënave që grumbullohen dhe se si përdoren ato:",
"SecurityProceduresDesc1": "Aplikoni %1$srekomandimet tona mbi sigurinë%2$s që t’i mbani të siguruara të dhënat tuaja në Matomo.",
- "SecurityProceduresDesc2": "Kontrolloni të keni një kontratë të shkruar me shoqërinë që ju furnizon shërbyesin ose strehimin e Matomo-s, çka garanton të %1$sjenë dhënë mbrojtjet e duhura%2$s.",
+ "SecurityProceduresDesc2": "Shihni të keni një kontratë të shkruar me shoqërinë që ju furnizon shërbyesin ose strehimin e Matomo-s, çka garanton të %1$sjenë dhënë mbrojtjet e duhura%2$s.",
"SecurityProceduresDesc3": "Përfshini Matomo-n te %1$sprocedura juaj e cenimit të të dhënave%2$s.",
"SecurityProceduresDesc4": "Përfshijeni Matomo-n te %1$speshimi juaj i ndikimit mbi privatësinë e të dhënave (DPIA)%2$s, nëse duhet.",
+ "SecurityProceduresIntro": "Informoni përdoruesit tuaj qartë dhe me transparencë dhe bëjini kolegët tuaj të ndërgjegjshëm rreth të dhënave që grumbullohen dhe se si përdoren ato:",
+ "SeeAlsoOurOfficialGuidePrivacy": "Shihni edhe udhërrëfyesin tonë zyrtar: %1$sPrivatësi Analizash Web%2$s",
+ "SelectWebsite": "Përzgjidhni një sajt",
+ "ShowInEmbeddedWidgets": "Shfaqe në widget-e të trupëzuar",
+ "ShowInEmbeddedWidgetsDescription": "Nëse i vihet shenjë, në fund të widget-eve të trupëzuar do të shfaqet një lidhje për te Rregullat tuaja të Privatësisë dhe Termat &amp; Kushtet tuaja.",
"TeaserHeader": "Në këtë faqe, mund ta përshtatni Matomo-n për ta bërë të përputhshëm me rregulla privatësie legjislacionesh ekzistuese, duke: %1$s anonimizuar IP-në e vizitorit%2$s, %3$s duke hequr vetvetiu nga baza e të dhënave regjistra të vjetër vizitorësh%4$s, dhe %5$s anonimizuar të dhëna të papërpunuara vizitorësh të ndjekur më parë%6$s.",
"TeaserHeadline": "Rregullime Privatësie",
- "UseAnonymizedIpForVisitEnrichment": "Përdor edhe adresa IP të Anonimizuara kur pasurohen vizita.",
- "UseAnonymizedIpForVisitEnrichmentNote": "Shtojca të tilla si Gjeovendëzim përmes IP-sh dhe Furnizuesish përmirësojnë tejtëdhënat e përdoruesve. Si parazgjedhje, këto shtojca përdorin adresa IP të anonimizuara. Nëse përzgjidhni 'Jo', atëherë do të përdoren adresa IP të plota, të paanonimizuara, që do të thotë më pak privatësi, por më tepër saktësi të dhënash.",
- "PseudonymizeUserIdNote": "Kur aktivizoni këtë mundësi, ID-ja e Përdoruesit do të zëvendësohet me një pseudonim, për të shmangur depozitim dhe shfaqje të drejtpërdrejtë në ekran të dhënash personale të identifikueshme, f.v. një adresë email. Me terma teknike: kur i jepet ID-ja juaj e Përdoruesit, Matomo do të përgatisë pseudonimin e ID-së së Përdoruesit duke përdorur një funksion <em>salted hash<\/em>.",
- "PseudonymizeUserIdNote2": "Shënim: zëvendësimi me një pseudonim s’është e njëjta gjë me anonimizimin. Me termat e GDPR-së: Pseudonimi i ID-së së Përdoruesit merret si e dhënë personale. ID-ja origjinale e Përdoruesit prapë mund të identifikohet, nëse kihen disa të dhëna të caktuara (te të cilat mund të hyjë vetëm Matomo dhe përpunuesi i të dhënave tuaja).",
- "AnonymizeOrderIdNote": "Ngaqë një ID Porosie mund të mund të përshoqërohet me një sistem tjetër, zakonisht një dyqan etregtie, ID-ja e Porosisë mund të shihet si e dhënë personale, nën GDPR-në. Kur e aktivizoni këtë mundësi, një ID Porosie do të anonimizohet vetvetiu, dhe kështu s’do të ketë ndjekje të dhënash personale.",
- "UseAnonymizeIp": "Anonimizoni adresat IP të Vizitorëve",
+ "TermsAndConditionUrl": "URL Termash &amp; Kushtesh",
+ "TermsAndConditionUrlDescription": "Një lidhje për te faqja e Termave &amp; Kushteve tuaja.",
+ "TermsAndConditions": "Terma &amp; Kushte",
+ "TrackingOptOut": "Lejojini përdoruesit të zgjedhin lënien jashtë ndjekjes",
+ "UnsetActionColumns": "Rikthe te parazgjedhjet shtylla veprimi",
+ "UnsetActionColumnsHelp": "Ky veprim s’mund të zhbëhet. Një listë shtyllash te baza e të dhënave brenda fushëveprimit, të cilat doni të ndryshohen. Çdo vlerë për atë shtyllë do të vendoset sa vlera parazgjedhje.",
+ "UnsetVisitColumns": "Rikthe shtylla vizitash te parazgjedhjet",
+ "UnsetVisitColumnsHelp": "Ky veprim s’mund të zhbëhet. Një listë shtyllash te baza e të dhënave brenda fushëveprimit të vizitës, të cilat doni të ndryshohen. Çdo vlerë për atë shtyllë do të vendoset sa vlera parazgjedhje. Ju lutemi, mbani parasysh se, nëse e njëjta shtyllë ekziston te fushëveprimi 'shndërrim', atëherë do të fshihet edhe kjo shtyllë",
+ "UseAnonymizeIp": "Anonimizo adresa IP të Vizitorëve",
+ "UseAnonymizeOrderId": "Anonimizo ID Porosie",
"UseAnonymizeTrackingData": "Anonimizo Të dhëna Ndjekjeje",
"UseAnonymizeUserId": "Anonimizo ID Përdoruesi",
- "PseudonymizeUserId": "Zëvendëso ID Përdoruesi me një pseudonim",
- "OptOutCustomize": "Përshtatni skedën e Zgjedhjes së Lënies Jashtë",
- "OptOutHtmlCode": "Kod HTML për t’u trupëzuar në sajtin tuaj",
- "OptOutPreview": "Bëni një paraparje të Zgjedhjes Për Lënie jashtë, ashtu si do të dukej në sajtin tuaj",
- "FontColor": "Ngjyrë Shkronjash",
- "FontSize": "Madhësi Shkronjash",
- "FontFamily": "Familje Shkronjash",
- "BackgroundColor": "Ngjyrë Sfondi",
- "TrackingOptOut": "Lejojini përdoruesit të zgjedhin lënien jashtë gjurmimit",
- "UseAnonymizeOrderId": "Anonimizo ID Porosie",
- "UseDeleteLog": "Fshi rregullisht të dhëna të vjetra të papërpunuara prej bazës së të dhënave",
- "UseDeleteReports": "Fshi rregullisht raporte të vjetër prej bazës së të dhënave",
+ "UseAnonymizedIpForVisitEnrichment": "Kur pasurohen vizita, përdor edhe adresa IP të Anonimizuara.",
+ "UseAnonymizedIpForVisitEnrichmentNote": "Shtojca të tilla si Gjeovendëzim përmes IP-sh dhe Furnizuesish përmirësojnë tejtëdhënat e përdoruesve. Si parazgjedhje, këto shtojca përdorin adresa IP të anonimizuara. Nëse përzgjidhni 'Jo', atëherë do të përdoren adresa IP të plota, të paanonimizuara, që do të thotë më pak privatësi, por më tepër saktësi të dhënash.",
+ "UseDeleteLog": "Fshi rregullisht prej bazës së të dhënave të dhëna të vjetra të papërpunuara",
+ "UseDeleteReports": "Fshi rregullisht prej bazës së të dhënave raporte të vjetër",
"UsersOptOut": "Zgjedhje lënieje jashtë nga përdoruesit",
- "PrivacyPolicyUrl": "URL Rregullash Privatësie",
- "PrivacyPolicyUrlDescription": "Një lidhje për te faqja juaj e Rregullave të Privatësisë",
- "TermsAndConditionUrl": "URL Termash & Kushtesh",
- "TermsAndConditionUrlDescription": "Një lidhje për te faqja e Termave & Kushteve tuaja.",
- "PrivacyPolicyUrlDescriptionSuffix": "Nëse e caktoni këtë, do të shfaqet në fund të faqes së hyrjeve dhe te faqe te të cilat mund të hyjë përdoruesi '%1$s'.",
- "ShowInEmbeddedWidgets": "Shfaqe në widget-e të trupëzuar",
- "ShowInEmbeddedWidgetsDescription": "Nëse i vihet shenjë, në fund të widget-eve të trupëzuar do të shfaqet një lidhje për te Rregullat tuaja të Privatësisë dhe Termat & Kushtet tuaja.",
- "PrivacyPolicy": "Rregulla Privatësie",
- "TermsAndConditions": "Terma & Kushte"
+ "VisitsMatchedCriteria": "Këto vizita plotësojnë kriterin e përzgjedhur.",
+ "WhenConsentIsNeeded1": "Në kontekstin e %1$srregullave GDPR mbi privatësinë%2$s, kur përpunoni të dhëna personale, në disa raste do t’ju duhet të kërkoni për pranim nga përdoruesit tuaj. Që të përcaktoni nëse ju duhet apo jo të kërkoni pranim, duhet të përcaktoni nëse baza juaj ligjore për përpunim të dhënash personale është “Pranim” ose “Interes i ligjshëm”, ose nëse mund të shmangni fare grumbullim të dhënash personale. Këshillojmë të mësoni më tepër mbi %3$sbazën ligjore sipas GDPR-së për Matomo-n%4$s.",
+ "WhenConsentIsNeeded2": "Mbani parasysh se kur e keni detyrim të merrni pranimin e përdoruesve dhe nuk provoni dot se patët “Pranimin” e përdoruesve tuaj në të kaluarën, atëherë këshillojmë të %1$sanonimizoni të dhënat e papërpunuara të përdoruesve të ndjekur dikur%2$s.",
+ "WhenDoINeedConsent": "Kur më duhet të kërkoj për pranim nga përdoruesi?"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PrivacyManager/lang/tl.json b/plugins/PrivacyManager/lang/tl.json
index f0d17f92d7..018c18d00c 100644
--- a/plugins/PrivacyManager/lang/tl.json
+++ b/plugins/PrivacyManager/lang/tl.json
@@ -1,5 +1,6 @@
{
"PrivacyManager": {
+ "AnonymizeData": "I-anonimize ang data",
"AnonymizeIpInlineHelp": "E-Anonymize ang huling byte ng IP address ng iyong mga bisita upang sumunod sa iyong mga alituntuning local at privacy.",
"AnonymizeIpMaskLengtDescription": "Piliin kung gaano karaming byte ng IP ng bisita ang dapat na ikubli.",
"AnonymizeIpMaskLength": "%1$s (na) byte - hal %2$s",
@@ -7,13 +8,13 @@
"CurrentDBSize": "Kasalukuyang laki ng database",
"DBPurged": "DB purged",
"DeleteDataInterval": "Tanggalin ang mga lumang data sa bawat",
+ "DeleteDataSettings": "Tanggaling lumang log ng mga bisita at mga ulat.",
"DeleteLogDescription2": "Kapag iyong pinagana ang automatic log deletion dapat mong tiyakin na ang lahat ng karaang mga ulat ay na proseso na upang sa ganun ay wala ng data na mawawala.",
"DeleteLogsOlderThan": "Tanggalin ang mga log na mas luma sa",
"DeleteMaxRows": "Pinakamataas na bilang ng mga hilera na tatanggalin sa isang pagtakbo:",
"DeleteMaxRowsNoLimit": "walang limitasyon",
"DeleteReportsConfirm": "Iyong papaganahin ang pag tanggal sa datus ng ulat. Kung ang matatagal ng ulat ay natanggal Kailangan mong ulitin ang mga ito upang makita. Gustomo mo bang gawin ito?",
"DeleteReportsOlderThan": "Tanggalin ang mga lumang ulat na hihigit sa",
- "DeleteDataSettings": "Tanggaling lumang log ng mga bisita at mga ulat.",
"DoNotTrack_Description": "Do Not Track ay isang teknolohiya at patakaran na nagbibigay daan sa mga gumagamit upang makapili kung nais nitong hindi masubay-bayan ang bawat website na kanilang binibista kabilang na dito ang analytics services mga network sa advertising at social platform.",
"DoNotTrack_Disable": "Huwag paganahin ang Do Not Track support",
"DoNotTrack_Enable": "Paganahin ang Do Not Track support",
@@ -37,8 +38,8 @@
"SaveSettingsBeforePurge": "Iyong binago ang mga setting ng pagtanggal ng data. Mangyaring i-save ang mga ito bago simulan ang isang pag purge.",
"SeeAlsoOurOfficialGuidePrivacy": "Tingnan din ang aming opisyal na gabay: %1$s Privacy Web Analytics %2$s",
"TeaserHeadline": "Mga setting ng privacy",
- "UseAnonymizedIpForVisitEnrichment": "Gamitin rin ang hindi kilalang IP address kapag bumibisita.",
"UseAnonymizeIp": "I-anonymize ang IP addresses ng mga bisita.",
+ "UseAnonymizedIpForVisitEnrichment": "Gamitin rin ang hindi kilalang IP address kapag bumibisita.",
"UseDeleteReports": "Palaging tanggalin ang mga lumang report sa database"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
index 6c29f6de17..799eb8e797 100644
--- a/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
+++ b/plugins/PrivacyManager/tests/Integration/DataPurgingTest.php
@@ -11,7 +11,6 @@ use Piwik\Archive;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataAccess\RawLogDao;
use Piwik\Date;
use Piwik\Db;
diff --git a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
index eadc9263ac..b81364cdb5 100644
--- a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
+++ b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\PrivacyManager\tests\Integration\Model;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
use Piwik\Db;
use Piwik\Option;
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 f934dbea6c..f6a39dbcc5 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:dec0e46ff2fd227cc5047222f23e38e7331d3ea443a014e30803690e358913d4
-size 567782
+oid sha256:07a76fb9866d651f60e31d63ea895998b979aaaf056f5e0ede7c514b25047d36
+size 567690
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 3d05e2e7fc..14a5a586a4 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:269b29db1cd3028c2e9099d35ba5719ce3413da213f30e02b6d88ebed9f21cd3
-size 561892
+oid sha256:cfe8b1b683e3224ac35605f8a361739fcfbd5cb26f421d9b0379dcf5574917aa
+size 561799
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 7823c65a8e..76f216c834 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:b85ed1a07140fb9fbc6212d2f88c5d620e57cc55d27c1cc953246100661a043f
-size 129069
+oid sha256:3e6feadc906e37a898a3c34cdc52044ead63b8f764936c97608910a39791c652
+size 129067
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 3b270e15e1..544d34a2f7 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:f8c858664a3e7ab9ed4cb8931c53f2d4a0857d98bc94c11d4a283391fefb477d
-size 568190
+oid sha256:35e77c2e181a2ee9ac15c831bc9a0056349eec979bf28241b47536ff8f4efdbc
+size 568102
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 f934dbea6c..f6a39dbcc5 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:dec0e46ff2fd227cc5047222f23e38e7331d3ea443a014e30803690e358913d4
-size 567782
+oid sha256:07a76fb9866d651f60e31d63ea895998b979aaaf056f5e0ede7c514b25047d36
+size 567690
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 3732c11cc7..303ed6b760 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:156416af8febd6d4218a41fb29c86c9c32b287977896dbff56ecdcede547a91e
-size 562240
+oid sha256:64cf3ce7e91cd89e76433ebdc326bc0dbed47656b60da00a27e1a5a6a4d8ad42
+size 562142
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_showprofile.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_showprofile.png
index dfebaae97b..9c2d280591 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_showprofile.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_showprofile.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5c8691e12f13d8b87531e6ef09cdf0d82a47e2ac29de5e68cd76cf22bcbe67df
-size 324648
+oid sha256:5fba8cd4d49466b4bf0f30942a24b1e61bdb62d0e681f8013d891e2a7e03a470
+size 324647
diff --git a/plugins/ProfessionalServices/Promo.php b/plugins/ProfessionalServices/Promo.php
index f2ac24a481..3f5bc44769 100644
--- a/plugins/ProfessionalServices/Promo.php
+++ b/plugins/ProfessionalServices/Promo.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ProfessionalServices;
-use Piwik\ProfessionalServices\Advertising;
class Promo
{
diff --git a/plugins/ProfessionalServices/lang/ca.json b/plugins/ProfessionalServices/lang/ca.json
index 0967ef424b..031df04a92 100644
--- a/plugins/ProfessionalServices/lang/ca.json
+++ b/plugins/ProfessionalServices/lang/ca.json
@@ -1 +1,5 @@
-{}
+{
+ "ProfessionalServices": {
+ "WidgetPremiumServicesForPiwik": "Funcions i serveis premium per a Matomo"
+ }
+}
diff --git a/plugins/ProfessionalServices/lang/id.json b/plugins/ProfessionalServices/lang/id.json
index 0967ef424b..76a0ffda87 100644
--- a/plugins/ProfessionalServices/lang/id.json
+++ b/plugins/ProfessionalServices/lang/id.json
@@ -1 +1,5 @@
-{}
+{
+ "ProfessionalServices": {
+ "WidgetPremiumServicesForPiwik": "Fitur &amp; Layanan Premium untuk Matomo"
+ }
+}
diff --git a/plugins/ProfessionalServices/lang/ru.json b/plugins/ProfessionalServices/lang/ru.json
index 0967ef424b..fefbdaa04c 100644
--- a/plugins/ProfessionalServices/lang/ru.json
+++ b/plugins/ProfessionalServices/lang/ru.json
@@ -1 +1,5 @@
-{}
+{
+ "ProfessionalServices": {
+ "WidgetPremiumServicesForPiwik": "Премиальные функции и услуги для Matomo"
+ }
+}
diff --git a/plugins/ProfessionalServices/lang/sq.json b/plugins/ProfessionalServices/lang/sq.json
index 0967ef424b..f2cdd37836 100644
--- a/plugins/ProfessionalServices/lang/sq.json
+++ b/plugins/ProfessionalServices/lang/sq.json
@@ -1 +1,5 @@
-{}
+{
+ "ProfessionalServices": {
+ "WidgetPremiumServicesForPiwik": "Veçori &amp; Shërbime me Pagesë për Matomo-n"
+ }
+}
diff --git a/plugins/Provider b/plugins/Provider
-Subproject dfb3384e38c394a834d10ca75790086e1fdc184
+Subproject ee32a5b5b7da82b1c5449b94f87809fd419f6b4
diff --git a/plugins/Proxy/Controller.php b/plugins/Proxy/Controller.php
index b343b9e83f..fe3c529196 100644
--- a/plugins/Proxy/Controller.php
+++ b/plugins/Proxy/Controller.php
@@ -12,10 +12,7 @@ use Piwik\AssetManager;
use Piwik\AssetManager\UIAsset;
use Piwik\Common;
use Piwik\Exception\StylesheetLessCompileException;
-use Piwik\Piwik;
use Piwik\ProxyHttp;
-use Piwik\Url;
-use Piwik\UrlHelper;
/**
* Controller for proxy services
@@ -67,6 +64,19 @@ class Controller extends \Piwik\Plugin\Controller
}
/**
+ * Output a UMD merged chunk JavaScript file.
+ * This method is called when the asset manager is enabled.
+ *
+ * @see core/AssetManager.php
+ */
+ public function getUmdJs()
+ {
+ $chunk = Common::getRequestVar('chunk');
+ $chunkFile = AssetManager::getInstance()->getMergedJavaScriptChunk($chunk);
+ $this->serveJsFile($chunkFile);
+ }
+
+ /**
* @param UIAsset $uiAsset
*/
private function serveJsFile($uiAsset)
diff --git a/plugins/QueuedTracking b/plugins/QueuedTracking
-Subproject 1d0bb3a378c1a7be7aefc3017d0ea7321233fd1
+Subproject e4ffe835e76b4b84a30df0d6e858102bee86009
diff --git a/plugins/Referrers/Categories/SearchEnginesSubcategory.php b/plugins/Referrers/Categories/SearchEnginesSubcategory.php
index 241e23ced8..08399a9624 100644
--- a/plugins/Referrers/Categories/SearchEnginesSubcategory.php
+++ b/plugins/Referrers/Categories/SearchEnginesSubcategory.php
@@ -20,6 +20,6 @@ class SearchEnginesSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Referrers_SearchEnginesSubcategoryHelp1') . '</p>'
- . '<p>' . Piwik::translate('Referrers_SearchEnginesSubcategoryHelp2', ['<a href="https://matomo.org/matomo-cloud/" rel="noreferrer noopener" target="_blank">', '</a>', '<a href="https://plugins.matomo.org/SearchEngineKeywordsPerformance" rel="noreferrer noopener" target="_blank">', '</a>']) . '</p>';
+ . '<p>' . Piwik::translate('Referrers_SearchEnginesSubcategoryHelp2', ['<a href="https://matomo.org/matomo-cloud/?mtm_campaign=App_Help&mtm_source=Matomo_App" rel="noreferrer noopener" target="_blank">', '</a>', '<a href="https://plugins.matomo.org/SearchEngineKeywordsPerformance" rel="noreferrer noopener" target="_blank">', '</a>']) . '</p>';
}
}
diff --git a/plugins/Referrers/Columns/Campaign.php b/plugins/Referrers/Columns/Campaign.php
index c5fd824a33..1bc00d8c0a 100644
--- a/plugins/Referrers/Columns/Campaign.php
+++ b/plugins/Referrers/Columns/Campaign.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\TrackerConfig;
diff --git a/plugins/Referrers/Columns/Referrer.php b/plugins/Referrers/Columns/Referrer.php
index 5159985842..d4cf921f99 100644
--- a/plugins/Referrers/Columns/Referrer.php
+++ b/plugins/Referrers/Columns/Referrer.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Referrer extends Dimension
{
diff --git a/plugins/Referrers/Columns/SearchEngine.php b/plugins/Referrers/Columns/SearchEngine.php
index 76840d6fbb..e19ee64ad2 100644
--- a/plugins/Referrers/Columns/SearchEngine.php
+++ b/plugins/Referrers/Columns/SearchEngine.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SearchEngine extends Dimension
{
diff --git a/plugins/Referrers/Columns/SocialNetwork.php b/plugins/Referrers/Columns/SocialNetwork.php
index a35c61b539..c9865c5438 100644
--- a/plugins/Referrers/Columns/SocialNetwork.php
+++ b/plugins/Referrers/Columns/SocialNetwork.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class SocialNetwork extends Dimension
{
diff --git a/plugins/Referrers/Columns/Website.php b/plugins/Referrers/Columns/Website.php
index 73aa5bcbed..01af5f6e4b 100644
--- a/plugins/Referrers/Columns/Website.php
+++ b/plugins/Referrers/Columns/Website.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
-use Piwik\Piwik;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\TrackerConfig;
diff --git a/plugins/Referrers/Columns/WebsitePage.php b/plugins/Referrers/Columns/WebsitePage.php
index 18b765b105..777d31e581 100644
--- a/plugins/Referrers/Columns/WebsitePage.php
+++ b/plugins/Referrers/Columns/WebsitePage.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class WebsitePage extends Dimension
{
diff --git a/plugins/Referrers/Controller.php b/plugins/Referrers/Controller.php
index 6969063271..78745f43f3 100644
--- a/plugins/Referrers/Controller.php
+++ b/plugins/Referrers/Controller.php
@@ -8,20 +8,12 @@
*/
namespace Piwik\Plugins\Referrers;
-use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable\Filter\CalculateEvolutionFilter;
-use Piwik\DataTable\Map;
use Piwik\FrontController;
-use Piwik\Metrics;
-use Piwik\NumberFormatter;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
-use Piwik\ViewDataTable;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\View;
/**
*
diff --git a/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php b/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
index 55d17eb43e..e68c903872 100644
--- a/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
+++ b/plugins/Referrers/DataTable/Filter/KeywordNotDefined.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Referrers\DataTable\Filter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
class KeywordNotDefined extends DataTable\Filter\ColumnCallbackReplace
diff --git a/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php b/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
index d25d733ae1..bbdcb09118 100644
--- a/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
+++ b/plugins/Referrers/DataTable/Filter/KeywordsFromSearchEngineId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Referrers\SearchEngine;
diff --git a/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php b/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
index 818358b2ad..9f91326e2d 100644
--- a/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
+++ b/plugins/Referrers/DataTable/Filter/SearchEnginesFromKeywordId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Plugins\Referrers\SearchEngine;
diff --git a/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php b/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
index 839356b7ff..b4263a76a8 100644
--- a/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
+++ b/plugins/Referrers/DataTable/Filter/SetGetReferrerTypeSubtables.php
@@ -10,10 +10,8 @@ namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Period\Range;
-use Piwik\Plugins\Referrers\API;
/**
* Utility function that sets the subtables for the getReferrerType report.
diff --git a/plugins/Referrers/DataTable/Filter/UrlsForSocial.php b/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
index 3137c345f2..d159763537 100644
--- a/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
+++ b/plugins/Referrers/DataTable/Filter/UrlsForSocial.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
-use Piwik\Metrics;
class UrlsForSocial extends BaseFilter
{
diff --git a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
index ba0c228b3b..739f666e32 100644
--- a/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
+++ b/plugins/Referrers/DataTable/Filter/UrlsFromWebsiteId.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\DataTable\Filter;
use Piwik\DataTable\BaseFilter;
-use Piwik\DataTable\Row;
use Piwik\DataTable;
class UrlsFromWebsiteId extends BaseFilter
diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php
index 7a490bceac..68880c5266 100644
--- a/plugins/Referrers/Referrers.php
+++ b/plugins/Referrers/Referrers.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Referrers;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Referrers\Reports\Get;
use Piwik\Plugins\SitesManager\SiteUrls;
/**
diff --git a/plugins/Referrers/Reports/Get.php b/plugins/Referrers/Reports/Get.php
index 987f213a3f..0078102a21 100644
--- a/plugins/Referrers/Reports/Get.php
+++ b/plugins/Referrers/Reports/Get.php
@@ -14,7 +14,6 @@ use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
use Piwik\DataTable\Filter\CalculateEvolutionFilter;
-use Piwik\DataTable\Filter\ColumnCallbackAddColumnPercentage;
use Piwik\Date;
use Piwik\NumberFormatter;
use Piwik\Period;
diff --git a/plugins/Referrers/Reports/GetKeywords.php b/plugins/Referrers/Reports/GetKeywords.php
index 0abb9e5008..2c2d4927e1 100644
--- a/plugins/Referrers/Reports/GetKeywords.php
+++ b/plugins/Referrers/Reports/GetKeywords.php
@@ -12,9 +12,7 @@ use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
use Piwik\Plugins\Referrers\Columns\Keyword;
-use Piwik\Tracker\Visit;
class GetKeywords extends Base
{
diff --git a/plugins/Referrers/Reports/GetReferrerType.php b/plugins/Referrers/Reports/GetReferrerType.php
index 19dc05eb3b..6c61c10047 100644
--- a/plugins/Referrers/Reports/GetReferrerType.php
+++ b/plugins/Referrers/Reports/GetReferrerType.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\Reports;
use Piwik\Common;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
diff --git a/plugins/Referrers/Reports/GetSocials.php b/plugins/Referrers/Reports/GetSocials.php
index adbc1ab2cb..5a3bd0a125 100644
--- a/plugins/Referrers/Reports/GetSocials.php
+++ b/plugins/Referrers/Reports/GetSocials.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Referrers\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
diff --git a/plugins/Referrers/Reports/GetWebsites.php b/plugins/Referrers/Reports/GetWebsites.php
index 50939b7d57..331be38199 100644
--- a/plugins/Referrers/Reports/GetWebsites.php
+++ b/plugins/Referrers/Reports/GetWebsites.php
@@ -13,8 +13,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\Referrers\Columns\Website;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
class GetWebsites extends Base
{
diff --git a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
index bfc3308f1b..434f130c3d 100644
--- a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
+++ b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Widget\WidgetConfig;
-use Piwik\SettingsPiwik;
class GetCampaignUrlBuilder extends \Piwik\Widget\Widget
{
diff --git a/plugins/Referrers/lang/ca.json b/plugins/Referrers/lang/ca.json
index ac7d3f8c8f..ddb39389d2 100644
--- a/plugins/Referrers/lang/ca.json
+++ b/plugins/Referrers/lang/ca.json
@@ -1,42 +1,100 @@
{
"Referrers": {
+ "Acquisition": "Adquisició",
+ "AllReferrersReportDocumentation": "Aquest informe mostra tots els vostres referents en un informe unificat, que enumera tots els llocs web, les paraules clau de cerca i les campanyes que fan servir els vostres visitants per trobar el vostre lloc web.",
+ "AllReferrersSubcategory1": "Aquesta secció mostra el nombre de visites que arriben de diferents tipus de canals i referents. Feu clic als botons més o menys per veure els referents de cada tipus.",
+ "AllReferrersSubcategory2": "També podeu analitzar el nombre d'accions realitzades per cadascuna de les vostres fonts de trànsit activant la taula amb la visualització de mètriques d'interacció dels visitants.",
+ "CampaignContent": "Contingut de la campanya",
+ "CampaignContentHelp": "Aquest paràmetre s'utilitza sovint quan esteu provant diversos anuncis i inclouria el nom de cada anunci per veure quin era el més eficaç per generar trànsit.",
+ "CampaignGroup": "Grup de campanya",
+ "CampaignGroupHelp": "Aquest paràmetre s'utilitza per fer un seguiment d'un grup de campanya per identificar un grup o un públic. Els grups de campanyes són útils per fer un seguiment del rendiment general de diverses campanyes amb objectius similars.",
+ "CampaignId": "Identificador de campanya",
+ "CampaignIdHelp": "Aquest paràmetre s'utilitza per fer el seguiment d'un identificador de campanya: un identificador únic per a la campanya que consta com a màxim de 100 números, lletres o símbols.",
+ "CampaignKeywordHelp": "Si teniu diverses campanyes amb el mateix nom, podeu distingir aquestes campanyes especificant una paraula clau o una subcategoria.",
+ "CampaignMedium": "Mitjà de campanya",
+ "CampaignMediumHelp": "S'utilitza per descriure l'activitat de màrqueting, per exemple, \"PPC\" per a una campanya de pagament per clic, o \"SEM\" per a anuncis de cerca de pagament, o \"revisió\" per fer un seguiment d'una revisió de producte en un lloc afiliat.",
+ "CampaignNameHelp": "Trieu un nom que descrigui per a què s'ha creat la campanya i que distingeixi la vostra campanya de la resta de campanyes. Per exemple, \"Email-SummerDeals\" o \"PaidAds-SummerDeals\".",
+ "CampaignPageUrlHelp": "L'URL de la pàgina a la qual va aquesta campanya, per exemple, \"http://example.org/oferta.html\".",
+ "CampaignPlacement": "Col·locació de la campanya",
+ "CampaignPlacementHelp": "S'utilitza per descriure la ubicació o la posició de la publicitat, per exemple, un lloc web sencer, pàgines específiques d'un lloc web, un bloc d'anuncis individual situat en una sola pàgina, un vídeo, una aplicació de telèfon mòbil i molt més.",
+ "CampaignSource": "Font de la campanya",
+ "CampaignSourceHelp": "S'utilitza per fer un seguiment de l'origen de la campanya, com ara \"butlletí\" per al vostre màrqueting per correu electrònic, \"afiliat\" o el nom del lloc web que mostra els vostres anuncis.",
"Campaigns": "Campanyes",
- "CampaignsDocumentation": "Visitants que visiten el vostre lloc web com a resultat d'una campanya. %1$s Visualitzeu l'inforrme %2$s per més detalls.",
+ "CampaignsDocumentation": "Visitants que han arribat al vostre lloc web com a resultat d'una campanya. %1$s Consulteu l'informe %2$s per obtenir més detalls.",
+ "CampaignsReportDocumentation": "Aquest informe mostra quines campanyes van conduir els visitants al vostre lloc web.",
+ "CampaignsSubcategoryHelp": "La secció Seguiment de campanyes us permet analitzar les visites associades als diferents valors de seguiment que s'han vinculat a les vostres campanyes digitals. Pot revelar coses com ara la quantitat de trànsit que aporten les vostres campanyes, quines creativitats tenen un millor rendiment, la implicació dels visitants de la campanya i si la campanya genera vendes o no.",
"ColumnCampaign": "Campanya",
"ColumnSearchEngine": "Cercador",
"ColumnSocial": "Xarxa social",
"ColumnWebsite": "Lloc web",
"ColumnWebsitePage": "Pàgina web",
- "DirectEntry": "Registre directe",
+ "DirectEntry": "Entrada directa",
+ "DirectEntryDocumentation": "Un visitant ha introduït l'URL al seu navegador i ha començat a navegar pel vostre lloc web: ha entrat directament al lloc web.",
+ "Distinct": "Referents diferents per tipus de canal",
"DistinctCampaigns": "campanyes diferents",
"DistinctKeywords": "paraules clau diferents",
"DistinctSearchEngines": "cercadors diferents",
+ "DistinctSocialNetworks": "diferents xarxes socials",
+ "DistinctWebsiteUrls": "URL diferents de llocs web",
"DistinctWebsites": "llocs web diferents",
- "EvolutionDocumentation": "Això es una vista global dels referents que us han portat visitants al vostre lloc web.",
+ "EcommerceLogSubcategoryHelp1": "El registre de comerç electrònic proporciona dades granulars a nivell de sessió perquè pugueu consultar la sessió completa de cada usuari que ha fet una compra o ha abandonat el seu carretó. Això us pot ajudar a entendre què fan els usuaris abans i després de comprar per revelar oportunitats d'optimització.",
+ "EcommerceLogSubcategoryHelp2": "Les dades d'aquesta pàgina s'actualitzen en temps real.",
+ "EvolutionDocumentation": "Aquesta és una visió general dels referents que han portat els visitants al vostre lloc web.",
+ "EvolutionDocumentationMoreInfo": "Per obtenir més informació sobre els diferents tipus de canal, consulteu la documentació de la taula %s.",
+ "GenerateUrl": "Generar URL",
"Keywords": "Paraules clau",
- "KeywordsReportDocumentation": "Aquest informe mostra quines paraules clau han utilitzat els vostres visitants abans de ser dirigits al vostre lloc web. %s Clicant en una fila de la taula podeu veure la distribució de cercadors en que s'ha cercat la paraula clau.",
+ "KeywordsReportDocumentation": "Aquest informe mostra quines paraules clau estaven cercant els usuaris abans de remetre'ls al vostre lloc web. %s Si feu clic a una fila de la taula, podeu veure la distribució dels motors de cerca que s'han consultat per a la paraula clau.",
+ "KeywordsReportDocumentationNote": "Nota: aquest informe enumera la majoria de les paraules clau com a no definides, perquè la majoria dels motors de cerca no envien la paraula clau exacta utilitzada al motor de cerca.",
+ "PercentOfX": "Percentatge de %s",
+ "PluginDescription": "Informa de les dades dels referents: motors de cerca, paraules clau, llocs web, campanyes, xarxes socials, entrada directa.",
+ "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.",
"Referrer": "Referent",
"ReferrerName": "Nom del referent",
+ "ReferrerNames": "Noms dels referents",
+ "ReferrerTypes": "Tipus de canals",
+ "ReferrerURLs": "URLs dels referents",
"Referrers": "Referents",
- "ReferrersOverview": "Resum dels referents",
+ "ReferrersOverview": "Visió general dels referents",
+ "ReferrersOverviewDocumentation": "Aquest informe mostra els canals d'adquisició utilitzats pels vostres visitants per accedir al vostre lloc web i el nombre de visites de les quals és responsable cada tipus de canal.",
+ "ReferrersOverviewSubcategoryHelp1": "La visió general de l'adquisició us mostra el percentatge del vostre trànsit de totes les fonts durant un interval de dates seleccionat.",
+ "ReferrersOverviewSubcategoryHelp2": "També podeu fer clic en un tipus de canal específic per mostrar-lo dins del gràfic d'evolució. Això us pot ajudar a descobrir quins canals aporten més trànsit al vostre lloc, així com qualsevol patró potencial al llarg del temps. Per exemple, un determinat canal pot tenir un millor rendiment els caps de setmana.",
"SearchEngines": "Cercadors",
- "SearchEnginesDocumentation": "Un visitant ha vingut al vostre lloc web a través d'un navegador web. %1$s Visualitzeu l'informe %2$s per a més informació.",
- "SearchEnginesReportDocumentation": "Aquest informa mostra quins motors de cerca han portat usuaris al vostre lloc web. %s Clicant en una fila de la tabla, pedeu veureu que han estat cercant els vostres usuris en aquest lloc web.",
+ "SearchEnginesDocumentation": "Un motor de cerca va remetre un visitant al vostre lloc web. %1$s Consulteu l'informe %2$s per obtenir més detalls.",
+ "SearchEnginesReportDocumentation": "Aquest informe mostra quins motors de cerca van remetre els usuaris al vostre lloc web. %s Si feu clic a una fila de la taula, podeu veure què cercaven els usuaris amb un motor de cerca específic.",
+ "SearchEnginesSubcategoryHelp1": "Aquesta secció us ajuda a analitzar l'optimització i el rendiment del vostre motor de cerca. Podeu analitzar les vostres paraules clau més populars amb els informes de paraules clau combinats o veure quines paraules clau funcionen bé en motors de cerca específics per a una anàlisi i optimització més específica.",
+ "SearchEnginesSubcategoryHelp2": "Els usuaris del connector %1$sMatomo Cloud%2$s i %3$sSearch Engine Performance%4$s rebran els millors resultats d'aquest informe.",
"Socials": "Xarxes socials",
- "SocialsReportDocumentation": "Aquest informe mostra quines xarxes socials han portat visitants al vostre lloc web. <br\/> Cliqueu una fila de la taule per mostrar de quines pàgines de les xarxes socials venen els vostres visitants.",
+ "SocialsReportDocumentation": "Aquest informe mostra quines xarxes socials han conduït els visitants al vostre lloc web.<br>Si feu clic a una fila de la taula, podeu veure des de quines pàgines de xarxes socials han arribat els visitants al vostre lloc web.",
+ "SocialsSubcategoryHelp": "En aquesta taula podeu veure quins llocs web van remetre els visitants al vostre lloc.",
"SubmenuSearchEngines": "Cercadors i paraules clau",
- "SubmenuWebsitesOnly": "Llocs",
- "TypeCampaigns": "Hi ha %s visites provinents de campanyes",
- "TypeDirectEntries": "Hi ha %s entrades directes",
- "TypeSearchEngines": "Hi ha %s visites provinents dels motors de cerca",
- "TypeWebsites": "Hi ha %s visites provinents d'altres llocs",
- "UsingNDistinctUrls": "(utiltizant %s urls diferents)",
+ "SubmenuWebsitesOnly": "Llocs web",
+ "Type": "Tipus de canal",
+ "TypeCampaigns": "%s de campanyes",
+ "TypeDirectEntries": "%s entrades directes",
+ "TypeReportDocumentation": "Aquesta taula conté informació sobre la distribució dels tipus de canal.",
+ "TypeSearchEngines": "%s dels motors de cerca",
+ "TypeSocialNetworks": "%s de les xarxes socials",
+ "TypeWebsites": "%s de llocs web",
+ "URLCampaignBuilder": "Generador d'URL de campanya",
+ "URLCampaignBuilderIntro": "L'eina %1$sURL Builder%2$s us permet generar URL preparades per utilitzar-les per fer el seguiment de campanyes a Matomo. Consulteu la documentació sobre %3$sSeguiment de campanyes%4$s per obtenir més informació.",
+ "URLCampaignBuilderResult": "URL generat que podeu copiar i enganxar a les vostres campanyes, butlletí de correu electrònic, anuncis de Facebook o tuits:",
+ "UsingNDistinctUrls": "(utilitzant %s URL diferents)",
"ViewAllReferrers": "Veure tots els referents",
- "ViewReferrersBy": "Veure els referents agrupats per %s",
- "Websites": "Llocs",
- "WebsitesDocumentation": "Els visitant ha seguit un enllaç en un altre lloc web que ha portat al vostre lloc web. %1$s Visualitzeu l'informe %2$s per a més detalls.",
- "WebsitesReportDocumentation": "En aquesta taula podeu observar quins llocs web han portat visitants al vostre lloc web. %s Cliqueu en una fila de la taule per veure les URL dels enllaços a les vostres pàgines.",
- "WidgetExternalWebsites": "Llistat de llocs web externs",
- "WidgetSocials": "Llista de xarxes socials"
+ "ViewReferrersBy": "Veure referents per %s",
+ "VisitorsFromCampaigns": "Visitants de Campanyes",
+ "VisitorsFromDirectEntry": "Visitants d'entrada directa",
+ "VisitorsFromSearchEngines": "Visitants dels motors de cerca",
+ "VisitorsFromSocialNetworks": "Visitants de les xarxes socials",
+ "VisitorsFromWebsites": "Visitants de llocs web",
+ "Websites": "Llocs web",
+ "WebsitesDocumentation": "El visitant va seguir un enllaç a un altre lloc web que portava al vostre lloc. %1$s Consulteu l'informe %2$s per obtenir més detalls.",
+ "WebsitesReportDocumentation": "En aquesta taula podeu veure quins llocs web van remetre els visitants al vostre lloc. %s Si feu clic a una fila de la taula, podeu veure a quines URL estaven els enllaços al vostre lloc web.",
+ "WebsitesSubcategoryHelp1": "En aquesta taula podeu veure quins llocs web van remetre els visitants al vostre lloc.",
+ "WebsitesSubcategoryHelp2": "Si feu clic a una fila de la taula podeu veure a quines URL estaven els enllaços al vostre lloc web.",
+ "WidgetExternalWebsites": "Llocs web referents",
+ "WidgetGetAll": "Tots els canals",
+ "WidgetSocials": "Llista de xarxes socials",
+ "WidgetTopKeywordsForPages": "Paraules clau principals per a l'URL de la pàgina",
+ "XPercentOfVisits": "%s de visites"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Referrers/lang/id.json b/plugins/Referrers/lang/id.json
index 7065664f42..c8e7522e0f 100644
--- a/plugins/Referrers/lang/id.json
+++ b/plugins/Referrers/lang/id.json
@@ -13,6 +13,7 @@
"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.",
"Keywords": "Kata Kunci",
@@ -35,10 +36,16 @@
"UsingNDistinctUrls": "(menggunakan %s url berbeda)",
"ViewAllReferrers": "Lihat seluruh pengarah",
"ViewReferrersBy": "Lihat Pengarah berdasar %s",
+ "VisitorsFromCampaigns": "Pengunjung dari Kampanye",
+ "VisitorsFromDirectEntry": "Pengunjung dari Masukan 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",
+ "WidgetGetAll": "Semua Saluran",
"WidgetSocials": "Daftar jejaring sosial",
"WidgetTopKeywordsForPages": "Kata kunci atas untulk URL halaman"
}
diff --git a/plugins/Referrers/lang/lv.json b/plugins/Referrers/lang/lv.json
index ae351bff47..bcf0860d59 100644
--- a/plugins/Referrers/lang/lv.json
+++ b/plugins/Referrers/lang/lv.json
@@ -1,5 +1,6 @@
{
"Referrers": {
+ "Acquisition": "Iegūšana",
"Campaigns": "Kampaņas",
"ColumnCampaign": "Kampaņa",
"ColumnSearchEngine": "Meklēšanas dzinējs",
@@ -19,4 +20,4 @@
"Websites": "Vietnes",
"WidgetExternalWebsites": "Ārējo vietņu saraksts"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Referrers/lang/nb.json b/plugins/Referrers/lang/nb.json
index 7909f8a0cf..1ff954e2c2 100644
--- a/plugins/Referrers/lang/nb.json
+++ b/plugins/Referrers/lang/nb.json
@@ -9,12 +9,14 @@
"CampaignGroup": "Kampanjegruppe",
"CampaignGroupHelp": "Dette parameteret brukes til å spore en kampanjegruppe for å identifisere en gruppe eller eller publikum. Kampanjegrupper er nyttige for å spore totalt resultat for flere kampanjer med lignende mål.",
"CampaignId": "Kampanje-ID",
+ "CampaignIdHelp": "Dette parameteret brukes til å spore en kampanje-ID: en unik identifikator for kampanjen som består av maksimalt 100 tall, bokstaver og symboler.",
"CampaignKeywordHelp": "Hvis du har flere kampanjer med samme navn, kan du skille disse ved å angi et nøkkelord eller underkategori.",
"CampaignMedium": "Kampanjemedium",
"CampaignPageUrlHelp": "Nettadressen tilhørende siden denne kampanjen går til, for eksempel «https://example.org/offer.html».",
"CampaignPlacement": "Kampanjeplassering",
"CampaignSource": "Kampanjekilde",
"Campaigns": "Kampanjer",
+ "CampaignsDocumentation": "Besøkende som kom til nettsiden din som følge av en kampanje. %1$sSjekk%2$s rapporten for flere detaljer.",
"CampaignsReportDocumentation": "Denne rapporten viser hvilke kampanjer som ledet dine besøkende til nettsiden din.",
"ColumnCampaign": "Kampanje",
"ColumnSearchEngine": "Søkemotor",
@@ -28,9 +30,11 @@
"DistinctSocialNetworks": "forskjellige sosiale nettverk",
"DistinctWebsiteUrls": "forskjellige nettside-nettadresser",
"DistinctWebsites": "ulike nettsteder",
+ "EcommerceLogSubcategoryHelp1": "E-handelsloggen gir finsortert øktnivådata så du kan sjekke hele øktloggen for hver bruker som enten utførte et kjøp eller forlot handlekurven sin. Dette kan hjelpe deg å forstå hva brukere gjør for og etter kjøp for å avsløre muligheter for optimalisering.",
"GenerateUrl": "Generer nettadresse",
"Keywords": "Nøkkelord",
"PercentOfX": "Prosent av %s",
+ "PluginDescription": "Rapporterer referentdata: Søkemotorer, nøkkelord, nettsider, kampanjer, sosiale media, direkte oppføring.",
"Referrer": "Henviser",
"ReferrerName": "Referentnavn",
"ReferrerNames": "Henvisernavn",
@@ -39,16 +43,21 @@
"Referrers": "Henvisere",
"ReferrersOverview": "Henviseroversikt",
"SearchEngines": "Søkemotorer",
+ "SearchEnginesSubcategoryHelp2": "%1$sMatomo-sky%2$s og %3$sSøkemotornøkkelordytelse%4$s-programtilleggsbrukere vil få de beste resultatene fra denne rapporten.",
"Socials": "Sosiale nettverk",
+ "SocialsReportDocumentation": "Rapporten viser hvilke sosiale nettverk som ledet besøkende til nettsiden din.<br>Ved å klikke på en rad i tabellen kan du se hvilke sosiale nettverkssider besøkende nådde nettsiden din fra.",
"SubmenuSearchEngines": "Søkemotorer og nøkkelord",
"SubmenuWebsitesOnly": "Nettsteder",
"Type": "Kanaltype",
"TypeCampaigns": "%s fra kampanjer",
"TypeDirectEntries": "%s direkte treff",
+ "TypeReportDocumentation": "Denne tabellen inneholder info om distribusjonen av kanaltyper.",
"TypeSearchEngines": "%s fra søkemotorer",
"TypeSocialNetworks": "%s fra sosiale nettverk",
"TypeWebsites": "%s fra nettsteder",
"URLCampaignBuilder": "Nettadressebygger for kampanje",
+ "URLCampaignBuilderIntro": "%1$sNettadressebyggerverktøyet%2$s lar deg generere nettadresse klare for bruk i sporingskampanjer i Matomo. Sjekk dokumentasjonen om %3$skampanjesporing%4$s for mer info.",
+ "URLCampaignBuilderResult": "Generert nettadresse du kan kopiere og lime inn i kampanjer, e-postnyhetsbrev, Facebook-reklame, eller tvitringer:",
"UsingNDistinctUrls": "(bruker %s forskjellige URL-er)",
"ViewAllReferrers": "Vis alle henvisere",
"ViewReferrersBy": "Vis henvisere etter %s",
diff --git a/plugins/Referrers/lang/pt-br.json b/plugins/Referrers/lang/pt-br.json
index 8b3846e029..b49aebfc48 100644
--- a/plugins/Referrers/lang/pt-br.json
+++ b/plugins/Referrers/lang/pt-br.json
@@ -1,19 +1,21 @@
{
"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.",
- "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.",
- "ColumnCampaign": "Campanha",
- "CampaignPageUrlHelp": "A URL da página para a qual essa campanha direciona, por exemplo 'http:\/\/exemplo.org.br\/oferta.html'.",
- "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'.",
- "CampaignKeywordHelp": "Se você tem diversas campanhas com o mesmo nome, você pode distinguir essas campanhas especificando uma palavra-chave ou uma subcategoria.",
- "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.",
+ "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.",
"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.",
+ "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'.",
+ "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.",
+ "ColumnCampaign": "Campanha",
"ColumnSearchEngine": "Motor de busca",
"ColumnSocial": "Rede social",
"ColumnWebsite": "Site",
@@ -25,26 +27,28 @@
"DistinctKeywords": "palavras-chave distintas",
"DistinctSearchEngines": "motores de busca distintos",
"DistinctSocialNetworks": "redes sociais distintas",
- "DistinctWebsites": "sites distintos",
"DistinctWebsiteUrls": "URLs distintas de sites",
+ "DistinctWebsites": "sites distintos",
"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",
"Keywords": "Palavras-chave",
"KeywordsReportDocumentation": "Este relatório mostra quais palavras-chave os usuários estavam procurando antes de eles serem encaminhados para o seu site. %s Ao clicar em uma linha na tabela, você pode ver a distribuição dos motores de busca, que foram consultados para a palavra-chave.",
"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.",
"Referrer": "Referenciador",
"ReferrerName": "Nome do referenciador",
"ReferrerNames": "Nomes dos referenciadores",
- "Referrers": "Referenciadores",
- "ReferrersOverview": "Visão geral dos referenciadores",
"ReferrerTypes": "Tipos de canal",
"ReferrerURLs": "URLs de referenciadores",
+ "Referrers": "Referenciadores",
+ "ReferrersOverview": "Visão geral dos referenciadores",
"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.",
"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.",
+ "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",
"SubmenuWebsitesOnly": "Sites",
"Type": "Tipo de canal",
@@ -54,13 +58,17 @@
"TypeSearchEngines": "%s de motores de busca",
"TypeSocialNetworks": "%s de redes sociais",
"TypeWebsites": "%s de sites",
- "UsingNDistinctUrls": "(usando %s urls distintas)",
- "GenerateUrl": "Gerar URL",
"URLCampaignBuilder": "Construtor de URL de campanha",
"URLCampaignBuilderIntro": "A %1$sferramenta Construtor de URL%2$s permite gerar URLs prontas para uso no rastreamento de campanhas no Matomo. Veja a documentação sobre %3$sRastreamento de Campanha%4$s para mais informações.",
"URLCampaignBuilderResult": "URL gerada que você pode copiar e colar em suas Campanhas, Boletim informativo por e-mail, Anúncios no Facebook ou tweets:",
+ "UsingNDistinctUrls": "(usando %s urls distintas)",
"ViewAllReferrers": "Ver todos os Referenciadores",
"ViewReferrersBy": "Ver Referenciadores por %s",
+ "VisitorsFromCampaigns": "Visitantes de campanhas",
+ "VisitorsFromDirectEntry": "Visitantes de entrada direta",
+ "VisitorsFromSearchEngines": "Visitantes de motores de busca",
+ "VisitorsFromSocialNetworks": "Visitantes de redes sociais",
+ "VisitorsFromWebsites": "Visitantes de sites",
"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.",
@@ -68,13 +76,6 @@
"WidgetGetAll": "Todos os canais",
"WidgetSocials": "Lista de redes sociais",
"WidgetTopKeywordsForPages": "Principais Palavras-chave para a URL da página",
- "XPercentOfVisits": "%s de visitas",
- "Acquisition": "Aquisição",
- "VisitorsFromSearchEngines": "Visitantes de motores de busca",
- "PercentOfX": "Percentual de %s",
- "VisitorsFromSocialNetworks": "Visitantes de redes sociais",
- "VisitorsFromDirectEntry": "Visitantes de entrada direta",
- "VisitorsFromWebsites": "Visitantes de sites",
- "VisitorsFromCampaigns": "Visitantes de campanhas"
+ "XPercentOfVisits": "%s de visitas"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Referrers/lang/sq.json b/plugins/Referrers/lang/sq.json
index c996f20a99..2498b49f98 100644
--- a/plugins/Referrers/lang/sq.json
+++ b/plugins/Referrers/lang/sq.json
@@ -1,57 +1,71 @@
{
"Referrers": {
+ "Acquisition": "Arritje",
"AllReferrersReportDocumentation": "Ky raport shfaq krejt Sjellësit, në një raport të unifikuar, duke paraqitur krejt Sajtet, fjalëkyçe Kërkimi dhe Fushata të përdorura nga vizitorët për gjetjen e sajtit tuaj.",
- "Campaigns": "Fushata",
- "CampaignsDocumentation": "Vizitorë që kanë ardhur te sajti juaj si rrjedhojë e një fushate. Për më tepër %1$s shihni %2$s raportin.",
- "CampaignsReportDocumentation": "Ky raport shfaq cilat fushata kanë sjellë vizitorë te sajti juaj.",
- "ColumnCampaign": "Fushatë",
- "CampaignPageUrlHelp": "URL-ja e faqes ku shpie kjo fushatë, për shembull 'http:\/\/example.org\/offer.html'.",
- "CampaignNameHelp": "Zgjidhni një emër që përshkruan se për çfarë është krijuar fushata dhe që e bën të dallueshme fushatën tuaj nga fushata të tjera. Për shembull, 'Email-OkazioneVere' ose 'ReklamaMePagesë-OkazioneVere'.",
- "CampaignKeywordHelp": "Nëse keni shumë fushata me të njëjtin emër, mund t’i diferenconi nga njëra-tjetra duke përcaktuar një fjalëkyç ose një nën-kategori.",
- "CampaignSource": "Burim Fushate",
- "CampaignSourceHelp": "I përdorur për të ndjekur burimin e fushatës, b.f., 'buletin' për marketingun tuaj përmes email-i, 'bashkëpunëtor', ose emrin e sajtit që shfaq reklamat tuaja.",
+ "AllReferrersSubcategory1": "Kjo ndarje shfaq numrin e vizitave që mbërrijnë prej llojesh kanali dhe referuesish të ndryshëm. Që të shihni sjellësit brenda çdo lloji, klikoni mbi butonat plus ose minus.",
+ "AllReferrersSubcategory2": "Mundeni gjithashtu të analizoni numrin e veprimeve të kryera nga secili burim i trafikut tuaj, duke aktivizuar tabelën me pamjen për vlera angazhimi Vizitorësh.",
"CampaignContent": "Lëndë fushate",
- "CampaignContentHelp": "Ky parametër shpesh përdoret kur testoni disa reklama njëherësh, dhe do të donit të përfshinit emrin e secilës për të parë cila qe më me efekt në sjellje trafiku.",
- "CampaignMedium": "Mjet Fushate",
- "CampaignMediumHelp": "E përdorur për të përshkruar veprimtari marketingu, për shembull, 'PPC' për një fushatë pay-per-click, ose 'SEM' për reklama me pagesë në kërkime, ose 'shqyrtim', për të ndjekur shqyrtime të një produkti te një sajt partner.",
+ "CampaignContentHelp": "Ky parametër shpesh përdoret kur testoni disa reklama njëherësh dhe do të donit të përfshinit emrin e secilës për të parë cila qe më me efekt në sjellje trafiku.",
"CampaignGroup": "Grup Fushatash",
- "CampaignGroupHelp": "Ky parametër përdoret për të ndjekur një Grup Fushate për të identifikuar një grup ose publik. Grupet e fushatave janë të dobishëm për ndjekjen ecurinë në përgjithësi të shumë fushatave me synime të ngjashme.",
- "CampaignPlacement": "Vendosje Fushate",
- "CampaignPlacementHelp": "E përdorur për të përshkruar vendosjen ose pozicionin e reklamës, për shembull, një sajt të tërë, faqe specifike prej një sajti, një njësi individuale reklamash të vendosur në një faqe të vetme, një video, një aplikacion telefoni celular, etj.",
+ "CampaignGroupHelp": "Ky parametër përdoret për të ndjekur një Grup Fushate për identifikimin e një grupi ose publiku. Grupet e fushatave janë të dobishëm për ndjekjen e ecurisë në përgjithësi të shumë fushatave me synime të ngjashme.",
"CampaignId": "ID Fushate",
"CampaignIdHelp": "Ky parametër përdoret për të ndjekur një ID Fushate: një identifikues unik për fushatën, që përbëhet nga e shumta 100 numra, shkronja ose simbole.",
+ "CampaignKeywordHelp": "Nëse keni shumë fushata me të njëjtin emër, mund t’i diferenconi nga njëra-tjetra duke përcaktuar një fjalëkyç ose një nën-kategori.",
+ "CampaignMedium": "Mjet Fushate",
+ "CampaignMediumHelp": "E përdorur për të përshkruar veprimtari marketingu, për shembull, 'PPC' për një fushatë “pay-per-click”, ose 'SEM' për reklama me pagesë në kërkime, ose 'shqyrtim', për të ndjekur shqyrtime të një produkti te një sajt partner.",
+ "CampaignNameHelp": "Zgjidhni një emër që përshkruan se për çfarë është krijuar fushata dhe që e bën të dallueshme fushatën tuaj nga fushata të tjera. Për shembull, 'Email-OkazioneVere' ose 'ReklamaMePagesë-OkazioneVere'.",
+ "CampaignPageUrlHelp": "URL-ja e faqes ku shpie kjo fushatë, për shembull 'http://example.org/offer.html'.",
+ "CampaignPlacement": "Vendosje Fushate",
+ "CampaignPlacementHelp": "E përdorur për të përshkruar vendosjen ose pozicionin e reklamës, për shembull, një sajt të tërë, faqe specifike prej një sajti, një njësi individuale reklamash të vendosur në një faqe të vetme, një video, një aplikacion telefoni celular, etj.",
+ "CampaignSource": "Burim Fushate",
+ "CampaignSourceHelp": "I përdorur për të ndjekur burimin e fushatës, b.f., 'buletin' për marketingun tuaj përmes email-i, 'bashkëpunëtor', ose emrin e sajtit që shfaq reklamat tuaja.",
+ "Campaigns": "Fushata",
+ "CampaignsDocumentation": "Vizitorë që kanë ardhur te sajti juaj si rrjedhojë e një fushate. Për më tepër hollësi, %1$s shihni %2$s raportin.",
+ "CampaignsReportDocumentation": "Ky raport shfaq cilat fushata kanë sjellë vizitorë te sajti juaj.",
+ "CampaignsSubcategoryHelp": "Ndarja Ndjekje Fushatash ju lejon të analizoi vizita përshoqëruar me vlera të ndryshme ndjekjeje që janë lidhur me fushatat tuaja dixhitale. Mund të zbulojnë gjëra të tilla si, sa trafik po sjellin fushatat tuaja, cilat anë punojnë më mirë, sa të angazhuat janë vizitorët e fushatave dhe nëse po sjell shitje apo jo fushata.",
+ "ColumnCampaign": "Fushatë",
"ColumnSearchEngine": "Motorë Kërkimesh",
"ColumnSocial": "Rrjet shoqëror",
"ColumnWebsite": "Sajt",
"ColumnWebsitePage": "Faqe Sajti",
"DirectEntry": "Zë i Drejtpërdrejtë",
"DirectEntryDocumentation": "Një vizitor dha URL-në te shfletuesi i tij dhe filloi të shfletojë në sajtin tuaj - hyri drejtpërdrejt në sajtin tuaj.",
- "Distinct": "Bëj Dallimin mes Referuesve sipas Llojesh Kanali",
+ "Distinct": "Bëj Dallimin mes Sjellësve sipas Llojesh Kanali",
"DistinctCampaigns": "fushata të dallueshme",
"DistinctKeywords": "fjalëkyçe të dallueshëm",
"DistinctSearchEngines": "motorë kërkimesh të dallueshëm",
- "DistinctSocialNetworks": "rrjete shoqërorë të dalluar",
- "DistinctWebsites": "sajte të dallueshëm",
+ "DistinctSocialNetworks": "rrjete shoqërorë të dallueshëm",
"DistinctWebsiteUrls": "URL-ra sajtesh të dallueshëm",
+ "DistinctWebsites": "sajte të dallueshëm",
+ "EcommerceLogSubcategoryHelp1": "Regjistri Etregti furnizon të dhëna kapilare në shkallë niveli, që kështu të mund të shihni te sesioni i plotë për çdo përdorues që ose bëri një blerje, ose braktisi shportën e vet. Kjo mund t’ju ndihmojë të kuptoni se ç’bëjnë përdoruesit para dhe pasi blejnë, për të zbuluar mundësi optimizimi.",
+ "EcommerceLogSubcategoryHelp2": "Të dhënat në këtë faqe përditësohen aty për aty.",
"EvolutionDocumentation": "Kjo është një përmbledhje e sjellësve që prunë vizitorë te sajti juaj.",
"EvolutionDocumentationMoreInfo": "Për më tepër të dhëna rreth llojeve të ndryshme të kanaleve, shihni dokumentimin për tabelën %s.",
+ "GenerateUrl": "Prodhoje URL-në",
"Keywords": "Fjalëkyçe",
- "KeywordsReportDocumentation": "Ky raport tregon cilët fjalëkyçe janë përdorur nga përdoruesit përpara se të silleshin te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni shpërndarjen sipas motorëve të kërkimit te të cilët u kërkua rreth fjalëkyçit.",
- "KeywordsReportDocumentationNote": "Shënim: Ky raport ofron shumicën e fjalëkyçeve si të papërcaktuar, ngaqë shumica e motorëve të kërkimeve nuk dërgojnë fjalëkyçin e saktë të përdorur në motorin e kërkimeve.",
+ "KeywordsReportDocumentation": "Ky raport tregon cilat fjalëkyçe janë përdorur nga përdoruesit përpara se të silleshin te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni shpërndarjen sipas motorëve të kërkimit te të cilët u kërkua rreth fjalëkyçit.",
+ "KeywordsReportDocumentationNote": "Shënim: Ky raport ofron shumicën e fjalëkyçeve si të papërcaktuar, ngaqë shumica e motorëve të kërkimeve nuk dërgojnë fjalëkyçen e saktë të përdorur në motorin e kërkimeve.",
+ "PercentOfX": "Përqindje e %s",
"PluginDescription": "Raporton të dhëna Sjellësish: Motorë Kërkimesh, Fjalëkyçe, Sajte, Fushata, Media Shoqërore, Zëra të Drejtpërdrejtë.",
+ "ProductSubcategoryHelp": "Pamja Produkte mund t’ju ndihmojë të identifikoni produkte dhe kategori që po ecin shumë mirë ose shumë keq, për të zbuluar prirje dhe mundësi lidhur me përzgjedhjen tuaj të produkteve dhe faqet e shitores.",
"Referrer": "Sjellës",
"ReferrerName": "Emër Sjellësi",
- "ReferrerNames": "Emra Referuesish",
+ "ReferrerNames": "Emra Sjellësish",
+ "ReferrerTypes": "Lloje Kanalesh",
+ "ReferrerURLs": "URL Sjellësish",
"Referrers": "Sjellës",
"ReferrersOverview": "Përmbledhje Sjellësish",
"ReferrersOverviewDocumentation": "Ky raport shfaq kanale blerjesh që vizitorët përdorën për të ardhur në sajtin tuaj, dhe numrin e vizitave që i përkasin secilit kanal.",
- "ReferrerTypes": "Lloje Kanalesh",
- "ReferrerURLs": "URL Referuesish",
+ "ReferrersOverviewSubcategoryHelp1": "Përmbledhje Arritjesh ju shfaq përqindjen e trafikut prej krejt burimeve përgjatë një intervali të përzgjedhur datash.",
+ "ReferrersOverviewSubcategoryHelp2": "Mund të klikoni edhe në një lloj të caktuar kanali për ta shfaqur brenda grafikut të evolucionit. Kjo mund të ndihmojë të zbulohen se cilët kanale kontribuojnë më shumë trafik në sajtin tuaj, si dhe çfarëdo rregullsie potenciale përgjatë kohës. Për shembull, një kanal i caktuar mund të funksionojë më mirë gjatë fundjavash.",
"SearchEngines": "Motorë Kërkimesh",
"SearchEnginesDocumentation": "Një vizitori i është treguar sajti juaj nga një motor kërkimesh. Për më tepër hollësira, %1$s shihni %2$s raportin.",
"SearchEnginesReportDocumentation": "Ky raport shfaq cilët motorë kërkimi sollën përdorues te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se për çfarë po kërkonin përdoruesit që përdorën një motor të caktuar kërkimesh.",
+ "SearchEnginesSubcategoryHelp1": "Kjo ndarje ju ndihmon të analizoni optimizimet dhe funksionimin e motorit tuaj të kërkimeve. Mund të analizoni fjalëkyçet tuaja më popullore, me raportet për ndërthurje fjalëkyçesh, ose të shihni se cilat fjalëkyçe punojnë mirë për motorë të dhënë kërkimesh, për një analizim dhe optimizim më të fokusuar.",
+ "SearchEnginesSubcategoryHelp2": "Përdoruesit e shtojcave %1$sRe Matomo%2$s dhe %3$sPunim Fjalëkyçesh Motorësh Kërkimi%4$s do të përfitojnë përfundimet më të mira nga ky raport.",
"Socials": "Rrjete Shoqërore",
- "SocialsReportDocumentation": "Ky raport shfaq rrjetet shoqërore që prunë vizitorë te sajti juaj.<br \/>Duke klikuar mbi një rresht të tabelës, mund të shihni se prej cilave faqe të rrjetit shoqëror erdhën vizitorët te sajti juaj.",
+ "SocialsReportDocumentation": "Ky raport shfaq rrjetet shoqërore që prunë vizitorë te sajti juaj.<br />Duke klikuar mbi një rresht të tabelës, mund të shihni se prej cilave faqe të rrjetit shoqëror erdhën vizitorët te sajti juaj.",
+ "SocialsSubcategoryHelp": "Në këtë tabelë, mund të shihni cilët sajte sollën vizitorë në sajtin tuaj.",
"SubmenuSearchEngines": "Motorë kërkimi & fjalëkyçe",
"SubmenuWebsitesOnly": "Sajte",
"Type": "Lloj Kanali",
@@ -61,38 +75,25 @@
"TypeSearchEngines": "%s prej motorësh kërkimi",
"TypeSocialNetworks": "%s prej rrjetesh shoqërore",
"TypeWebsites": "%s prej sajtesh",
- "UsingNDistinctUrls": "(duke përdorur url të dallueshme %s)",
- "GenerateUrl": "Prodhoje URL-në",
"URLCampaignBuilder": "Ndërtues URL-je Fushate",
"URLCampaignBuilderIntro": "%1$sMjeti Ndërtues URL-sh%2$s ju lejon të prodhoni URL të gatshme për përdorim në Fushata Ndjekjesh te Matomo. Për më tepër hollësi, shihni dokumentimin mbi %3$sNdjekje Fushatash%4$s.",
- "URLCampaignBuilderResult": "URL-ja e prodhuar që mund ta kopjoni dhe hidhni te Fushata tuajat, buletine email, Facebook Ads apo në <em>tweets<\/em>:",
+ "URLCampaignBuilderResult": "URL-ja e prodhuar, që mund ta kopjoni dhe hidhni te Fushata tuajat, buletine email, Facebook Ads apo “tweets”:",
+ "UsingNDistinctUrls": "(duke përdorur url të dallueshme %s)",
"ViewAllReferrers": "Shihni krejt Sjellësit",
"ViewReferrersBy": "Shihini Sjellësit sipas %s",
+ "VisitorsFromCampaigns": "Vizitorë prej Fushatash",
+ "VisitorsFromDirectEntry": "Vizitorë prej Hyrjesh të Drejtpërdrejta",
+ "VisitorsFromSearchEngines": "Vizitorë prej Motorë Kërkimesh",
+ "VisitorsFromSocialNetworks": "Vizitorë prej Rrjetesh Shoqërore",
+ "VisitorsFromWebsites": "Vizitorë prej Sajtesh",
"Websites": "Sajte",
- "WebsitesDocumentation": "Vizitori ndoqi një lidhje në një sajt tjetër, e cila të shpinte te sajti juaj. Për më tepër hollësira, %1$s shihni %2$s raportin.",
+ "WebsitesDocumentation": "Vizitori ndoqi një lidhje në një sajt tjetër, e cila e shpuri te sajti juaj. Për më tepër hollësira, %1$s shihni %2$s raportin.",
"WebsitesReportDocumentation": "Në këtë tabelë, mund të shihni cilët sajte sollën vizitorë te sajti juaj. %s Duke klikuar mbi një rresht të tabelës, mund të shihni se te cilat URL gjendeshin lidhjet për te sajti juaj.",
- "WidgetExternalWebsites": "Sajte Sjellës",
+ "WebsitesSubcategoryHelp1": "Në këtë tabelë, mund të shihni cilët sajte sollën vizitorë në sajtin tuaj.",
+ "WidgetExternalWebsites": "Sajte Sjellësish",
"WidgetGetAll": "Krejt Kanalet",
"WidgetSocials": "Listë rrjetesh shoqërore",
"WidgetTopKeywordsForPages": "Fjalëkyçe Kryesuese për URL Faqesh",
- "XPercentOfVisits": "%s e vizitave",
- "Acquisition": "Blerje",
- "VisitorsFromSearchEngines": "Vizitorë prej Motorë Kërkimesh",
- "PercentOfX": "Përqindje e %s",
- "VisitorsFromSocialNetworks": "Vizitorë prej Rrjetesh Shoqërore",
- "VisitorsFromDirectEntry": "Vizitorë prej Hyrjesh të Drejtpërdrejta",
- "VisitorsFromWebsites": "Vizitorë prej Sajtesh",
- "VisitorsFromCampaigns": "Vizitorë prej Fushatash",
- "ReferrersOverviewSubcategoryHelp2": "Mund të klikoni edhe në një lloj të caktuar kanali për ta shfaqur brenda grafikut të evolucionit. Kjo mund të ndihmojë të zbulohen se cilët kanale kontribuojnë më shumë trafik në sajtin tuaj, si dhe çfarëdo rregullsie potenciale përgjatë kohës. Për shembull, një kanal i caktuar mund të funksionojë më mirë gjatë fundjavash.",
- "AllReferrersSubcategory1": "Kjo ndarje shfaq numrin e vizitave që mbërrijnë prej llojesh kanali dhe referuesish të ndryshëm. Që të shihni referuesit brenda çdo lloji, klikoni mbi butonat plus ose minus.",
- "AllReferrersSubcategory2": "Mundeni gjithashtu të analizoni numrin e veprimeve të kryera nga secili burim i trafikut tuaj, duke aktivizuar tabelën me pamjen për vlera angazhimi Vizitorësh.",
- "SearchEnginesSubcategoryHelp1": "Kjo ndarje ju ndihmon të analizoni optimizimet dhe funksionimin e motorit tuaj të kërkimeve. Mund të analizoni fjalëkyçet tuaja më popullore, me raportet për ndërthurje fjalëkyçesh ose të shihni se cilat fjalëkyçe punojnë mirë për motorë të dhënë kërkimesh, për një analizim dhe optimizim më të fokusuar.",
- "SearchEnginesSubcategoryHelp2": "Përdoruesit e shtojcave %1$sRe Matomo%2$s dhe %3$sPunim Fjalëkyçesh Motorësh Kërkimi%4$s do të përfitojnë përfundimet më të mira nga ky raport.",
- "WebsitesSubcategoryHelp1": "Në këtë tabelë, mund të shihni cilët sajte u referuan sajtin tuaj vizitorëve.",
- "SocialsSubcategoryHelp": "Në këtë tabelë, mund të shihni cilët sajte u referuan sajtin tuaj vizitorëve.",
- "CampaignsSubcategoryHelp": "Ndarja Ndjekje Fushatash ju lejon të analizoi vizita përshoqëruar me vlera të ndryshme ndjekjeje që janë lidhur me fushatat tuaja dixhitale. Mund të zbulojnë gjëra të tilla si, sa trafik po sjellin fushatat tuaja, cilat anë punojnë më mirë, sa të angazhuat janë vizitorët e fushatave, dhe nëse po sjell shitje apo jo fushata.",
- "EcommerceLogSubcategoryHelp1": "Regjistri Etregti furnizon të dhëna kapilare në shkallë niveli, që kështu të mund të shihni te sesioni i plotë për çdo përdorues që ose bëri një blerje, ose braktisi shportën e vet. Kjo mund t’ju ndihmojë të kuptoni se ç’bëjnë përdoruesit para dhe pasi blejnë, për të zbuluar mundësi optimizimi.",
- "EcommerceLogSubcategoryHelp2": "Të dhënat në këtë faqe përditësohen aty për aty.",
- "ProductSubcategoryHelp": "Pamja Produkte mund t’ju ndihmojë të identifikoni produkte dhe kategori që po ecin shumë mirë ose shumë keq, për të zbuluar prirje dhe mundësi lidhur me përzgjedhjen tuaj të produkteve dhe faqet e shitores."
+ "XPercentOfVisits": "%s e vizitave"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Referrers/lang/tl.json b/plugins/Referrers/lang/tl.json
index e81cad4987..13d1a69de8 100644
--- a/plugins/Referrers/lang/tl.json
+++ b/plugins/Referrers/lang/tl.json
@@ -1,5 +1,6 @@
{
"Referrers": {
+ "Acquisition": "Pag-acquire",
"AllReferrersReportDocumentation": "Ang ulat na ito ay nagpapakita ng lahat ng referrers sa pinag-isang ulat ng nakalista ang lahat ng websites Mga keywords at campaigns na ginamit ng iyong bisita upang makita ang iyong website",
"Campaigns": "Mga Kampanya",
"CampaignsDocumentation": "Ang iyong mga bisita na mula sa iyong website ay result ng isang campaign. %1$s Tignan ang %2$s ulat para sa karagdagang mga detalye.",
@@ -24,7 +25,7 @@
"SearchEnginesDocumentation": "Ang isang bisita na mula sa iyong website sa ay galing sa isang search engine. %1$s Tingnan ang mga ulat ang %2$s para sa karagdagang detalye.",
"SearchEnginesReportDocumentation": "Ang ulat na ito ay mag-papakita kung saang search engines na referred ang user papunta sa iyong website. %s Sa pamamagitan ng pag-click sa hilera ng table maari mong makita kung ano-ano ang hinahanap ng user sa partikular na search engine.",
"Socials": "Social Networks",
- "SocialsReportDocumentation": "Ang ulat na ito ay nagpapakita kung alin sa mga social networks ang pinang-galingan papunta sa iyong website.<br\/>Sa pamamagitan ng pag-click sa isang hilera sa table maari mong makita kung saang social network nagmula ang iyong bisita papunta sa iyong website.",
+ "SocialsReportDocumentation": "Ang ulat na ito ay nagpapakita kung alin sa mga social networks ang pinang-galingan papunta sa iyong website.<br/>Sa pamamagitan ng pag-click sa isang hilera sa table maari mong makita kung saang social network nagmula ang iyong bisita papunta sa iyong website.",
"SubmenuSearchEngines": "Mga Search Engine at Keyword",
"SubmenuWebsitesOnly": "Websites",
"TypeCampaigns": "%s mula sa mga campaign",
@@ -42,4 +43,4 @@
"WidgetTopKeywordsForPages": "Nangungunang mga keyword para sa URL ng Pahina",
"XPercentOfVisits": "%s ng mga pagbisita"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
index 3e1d6153d1..362a10f920 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerNameTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Referrers\tests\Integration\Columns;
use Piwik\Common;
use Piwik\Plugins\Referrers\Columns\ReferrerName;
-use Piwik\Plugins\Referrers\Columns\ReferrerType;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\Cache;
diff --git a/plugins/Referrers/tests/Unit/ReferrersTest.php b/plugins/Referrers/tests/Unit/ReferrersTest.php
index 1965f22ade..ea31103da7 100644
--- a/plugins/Referrers/tests/Unit/ReferrersTest.php
+++ b/plugins/Referrers/tests/Unit/ReferrersTest.php
@@ -8,9 +8,6 @@
namespace Piwik\Plugins\Referrers\tests;
-use Piwik\DataTable;
-use Piwik\DataTable\Row;
-use Piwik\Period;
require_once PIWIK_INCLUDE_PATH . '/plugins/Referrers/Referrers.php';
diff --git a/plugins/Referrers/tests/Unit/SocialTest.php b/plugins/Referrers/tests/Unit/SocialTest.php
index b292503287..38ff93377e 100644
--- a/plugins/Referrers/tests/Unit/SocialTest.php
+++ b/plugins/Referrers/tests/Unit/SocialTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Referrers\tests;
use Piwik\Plugins\Referrers\Social;
-use Spyc;
/**
* @group Social
diff --git a/plugins/Resolution/API.php b/plugins/Resolution/API.php
index d7df1cdb18..45a1eb5a6b 100644
--- a/plugins/Resolution/API.php
+++ b/plugins/Resolution/API.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\Resolution;
use Piwik\Archive;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/Resolution/Columns/Configuration.php b/plugins/Resolution/Columns/Configuration.php
index 58e1adcd0c..f61052da9e 100644
--- a/plugins/Resolution/Columns/Configuration.php
+++ b/plugins/Resolution/Columns/Configuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\Resolution\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class Configuration extends Dimension
{
diff --git a/plugins/Resolution/Columns/Resolution.php b/plugins/Resolution/Columns/Resolution.php
index 5cedfc5239..13888b1383 100644
--- a/plugins/Resolution/Columns/Resolution.php
+++ b/plugins/Resolution/Columns/Resolution.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\Resolution\Columns;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
diff --git a/plugins/Resolution/lang/ca.json b/plugins/Resolution/lang/ca.json
index bda670af65..72ef776564 100644
--- a/plugins/Resolution/lang/ca.json
+++ b/plugins/Resolution/lang/ca.json
@@ -3,9 +3,11 @@
"ColumnConfiguration": "Configuració",
"ColumnResolution": "Resolució",
"Configurations": "Configuracions",
+ "PluginDescription": "Informa de les resolucions de pantalla dels vostres visitants.",
"Resolutions": "Resolucions",
"WidgetGlobalVisitors": "Configuracions globals dels visitants",
"WidgetGlobalVisitorsDocumentation": "Aquest informe mostra les configuracions més comuns que tenen els vostres visitants. Una configuració es la combinació de Sistema Operatiu, tipus de navegador i resolució de pantalla.",
- "WidgetResolutions": "Resolucions"
+ "WidgetResolutions": "Resolucions",
+ "WidgetResolutionsDocumentation": "Aquest informe mostra les resolucions de pantalla que han utilitzat els vostres visitants per veure el vostre lloc web."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Resolution/lang/id.json b/plugins/Resolution/lang/id.json
index e224567379..6b6fed79a3 100644
--- a/plugins/Resolution/lang/id.json
+++ b/plugins/Resolution/lang/id.json
@@ -3,9 +3,11 @@
"ColumnConfiguration": "Pengaturan",
"ColumnResolution": "Resolusi",
"Configurations": "Pengaturan",
+ "PluginDescription": "Melaporkan resolusi layar dari pengunjung Anda.",
"Resolutions": "Resolusi",
"WidgetGlobalVisitors": "Pengaturan pengunjung umum",
"WidgetGlobalVisitorsDocumentation": "Laporan ini menunjukkan pengaturan paling umum yang pengunjung miliki. Subuah pengaturan terdiri atas sistem operasi, jenis peramban, dan resolusi layar.",
- "WidgetResolutions": "Resolusi layar"
+ "WidgetResolutions": "Resolusi layar",
+ "WidgetResolutionsDocumentation": "Laporan ini menunjukkan resolusi layar yang digunakan pengunjung Anda saat melihat situs web Anda."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Resolution/lang/sq.json b/plugins/Resolution/lang/sq.json
index f6247dcc93..093976c38e 100644
--- a/plugins/Resolution/lang/sq.json
+++ b/plugins/Resolution/lang/sq.json
@@ -5,8 +5,9 @@
"Configurations": "Formësime",
"PluginDescription": "Raporton qartësi ekranesh të vizitorëve tuaj.",
"Resolutions": "Qartësi",
- "WidgetGlobalVisitors": "Formësime globale vizitorësh",
+ "WidgetGlobalVisitors": "Formësim Vizitorësh",
"WidgetGlobalVisitorsDocumentation": "Ky raport shfaq formësimet e përgjithshme më të rëndomta të përdorura nga vizitorët tuaj. Formësimi përmban të dhënat për sistemin operativ, llojin e shfletuesit dhe qartësinë e ekranit.",
- "WidgetResolutions": "Qartësi Ekrani"
+ "WidgetResolutions": "Qartësi Ekrani",
+ "WidgetResolutionsDocumentation": "Ky raport shfaq qartësinë e ekranit që vizitorët tuaj përdorën, kur panë sajtin tuaj."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SEO/Metric/Aggregator.php b/plugins/SEO/Metric/Aggregator.php
index 06b427dd28..2059464af6 100644
--- a/plugins/SEO/Metric/Aggregator.php
+++ b/plugins/SEO/Metric/Aggregator.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SEO\Metric;
use Piwik\Container\StaticContainer;
-use Piwik\Metrics\Formatter;
use Piwik\Piwik;
/**
diff --git a/plugins/SEO/config/ui-test.php b/plugins/SEO/config/ui-test.php
index e4a193928b..ebccc69319 100644
--- a/plugins/SEO/config/ui-test.php
+++ b/plugins/SEO/config/ui-test.php
@@ -1,6 +1,5 @@
<?php
-use Piwik\Container\StaticContainer;
return array(
'observers.global' => \DI\add([
diff --git a/plugins/SEO/lang/ca.json b/plugins/SEO/lang/ca.json
index aa6c0aa4e2..af9222feb6 100644
--- a/plugins/SEO/lang/ca.json
+++ b/plugins/SEO/lang/ca.json
@@ -4,8 +4,9 @@
"Bing_IndexedPages": "Pàgines indexades per Bing",
"DomainAge": "Edat del domini",
"Google_IndexedPages": "Pàgines indexades per Google",
+ "PluginDescription": "Aquest connector extreu i mostra mètriques de SEO: rànquing web d'Alexa, Google Pagerank, nombre de pàgines indexades i enllaços d'entrada del lloc web seleccionat actualment.",
"Rank": "Ranking",
- "SeoRankings": "Ranking SEO",
- "SEORankingsFor": "Ranking SEO per %s"
+ "SEORankingsFor": "Ranking SEO per %s",
+ "SeoRankings": "Ranking SEO"
}
-} \ No newline at end of file
+}
diff --git a/plugins/SEO/lang/id.json b/plugins/SEO/lang/id.json
index 59cba4e26c..ffb6ffb348 100644
--- a/plugins/SEO/lang/id.json
+++ b/plugins/SEO/lang/id.json
@@ -4,8 +4,9 @@
"Bing_IndexedPages": "Halaman terindeks Bing",
"DomainAge": "Umut Ranah",
"Google_IndexedPages": "Halaman 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",
- "SeoRankings": "Peringkat SEO",
- "SEORankingsFor": "Peringkat SEO untuk %s"
+ "SEORankingsFor": "Peringkat SEO untuk %s",
+ "SeoRankings": "Peringkat SEO"
}
-} \ No newline at end of file
+}
diff --git a/plugins/SEO/tests/Integration/SEOTest.php b/plugins/SEO/tests/Integration/SEOTest.php
index 67c99f9356..75de0b7490 100644
--- a/plugins/SEO/tests/Integration/SEOTest.php
+++ b/plugins/SEO/tests/Integration/SEOTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\SEO\tests\Integration;
use Piwik\DataTable\Renderer;
-use Piwik\Http;
-use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugins\SEO\API;
-use Exception;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png b/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
index fea3695823..8d218d7c5c 100644
--- a/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
+++ b/plugins/SEO/tests/UI/expected-ui-screenshots/SeoWidgetTest_widget.png
Binary files differ
diff --git a/plugins/ScheduledReports/Controller.php b/plugins/ScheduledReports/Controller.php
index 8f60a4093a..b6468affee 100644
--- a/plugins/ScheduledReports/Controller.php
+++ b/plugins/ScheduledReports/Controller.php
@@ -8,17 +8,13 @@
*/
namespace Piwik\Plugins\ScheduledReports;
-use Faker\Provider\Image;
use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Date;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Plugins\ImageGraph\ImageGraph;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
-use Piwik\Plugins\SegmentEditor\API as APISegmentEditor;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\View;
diff --git a/plugins/ScheduledReports/Model.php b/plugins/ScheduledReports/Model.php
index 19f561dde3..95e98dd570 100644
--- a/plugins/ScheduledReports/Model.php
+++ b/plugins/ScheduledReports/Model.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\ScheduledReports;
use Piwik\Common;
use Piwik\Db;
use Piwik\DbHelper;
-use Piwik\ReportRenderer;
class Model
{
diff --git a/plugins/ScheduledReports/Tasks.php b/plugins/ScheduledReports/Tasks.php
index 364f4931f0..10b4492cd5 100644
--- a/plugins/ScheduledReports/Tasks.php
+++ b/plugins/ScheduledReports/Tasks.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\ScheduledReports;
use Piwik\Scheduler\Schedule\Schedule;
-use Piwik\Site;
class Tasks extends \Piwik\Plugin\Tasks
{
diff --git a/plugins/ScheduledReports/lang/ca.json b/plugins/ScheduledReports/lang/ca.json
index ff04fe47a3..889e9b9b69 100644
--- a/plugins/ScheduledReports/lang/ca.json
+++ b/plugins/ScheduledReports/lang/ca.json
@@ -1,38 +1,64 @@
{
"ScheduledReports": {
+ "AggregateReportsFormat": "Opcions de visualització",
"AggregateReportsFormat_GraphsOnly": "Mostra només els gràfics (sense taules)",
- "AggregateReportsFormat_TablesAndGraphs": "Mostrar les taules i els gràfics per a tots els informes.",
+ "AggregateReportsFormat_TablesAndGraphs": "Mostra taules d'informes i gràfics per a tots els informes",
"AggregateReportsFormat_TablesOnly": "(per defecte) Mostra les taules d'informe (Gràfiques només per les mètriques clau)",
"AlsoSendReportToTheseEmails": "Envía també l'informe als seguents correus electrònics (un per línia):",
"AreYouSureDeleteReport": "Esteu segurs que voleu eliminar aquest informe i la seva programació?",
"CancelAndReturnToReports": "Cancela i %1$storna a la llista d'informes%2$s",
"CreateAndScheduleReport": "Crear i programar un informe",
"CreateReport": "Crear un informe",
+ "CustomVisitorSegment": "Segment de visitants personalitzat:",
"DescriptionOnFirstPage": "La descripció del informes es mostrarà a la primera pàgina del informe.",
"DisplayFormat_TablesOnly": "Mostra només taules (sense gràfics)",
"EmailHello": "Hola,",
"EmailReports": "Informes per correu electrònic",
"EmailSchedule": "Programació per correu electrònic",
- "EvolutionGraph": "Mostrar els valors històrics pels %s valors més representatius.",
+ "EvolutionGraph": "Mostra els gràfics històrics dels principals %s valors",
+ "EvolutionGraphsShowForEachInPeriod": "Els gràfics d'evolució mostren l'evolució de %1$seach day%2$s durant els darrers %3$s",
+ "EvolutionGraphsShowForPreviousN": "Els gràfics d'evolució mostren l'evolució respecte als N %s anteriors",
"FrontPage": "Portada",
"MonthlyScheduleHelp": "Programació mensual: L'informe s'enviarà el primer día de cada més.",
- "MustBeLoggedIn": "Heu d'estar identificat per crear i programar informes personalitzats",
+ "MustBeLoggedIn": "Heu d'estar identificat per crear i programar informes personalitzats.",
"NoRecipients": "Aquest informe no té destinataris",
+ "NoSubscriptionFound": "No s'ha trobat cap subscripció. Potser l'informe ja se'n ha cancel·lat la subscripció o s'ha eliminat.",
+ "NoTokenProvided": "No s'ha proporcionat cap testimoni a l'URL",
"Pagination": "Pàgina %1$s de %2$s",
+ "PersonalEmailReports": "Informes personals per correu electrònic",
"PiwikReports": "Informes Matomo",
+ "PleaseFindAttachedFile": "Teniu el vostre informe de %1$s per a %2$s al fitxer adjunt.",
"PleaseFindBelow": "A continuació podeu trobar el vostre informe %1$s per a %2$s.",
+ "PluginDescription": "Creeu informes personalitzats i programeu-los perquè s'enviïn per correu electrònic diàriament, setmanalment o mensualment a una o diverses persones. S'admeten diversos formats d'informes (html, pdf, csv, imatges).",
"ReportFormat": "Format de l'informe",
- "ReportIncludeNWebsites": "L'informe incloura les mètriques més importants de tots els llocs webs que tinguin almenys una visita (dels %s llocs web actualment disponibles)",
- "ReportsIncluded": "Estadístiques incloses",
+ "ReportHour": "Envia l'informe a les %s en punt",
+ "ReportHourWithUTC": "%s en punt UTC",
+ "ReportIncludeNWebsites": "L'informe inclourà mètriques principals per a tots els llocs web que tinguin almenys una visita (dels %s llocs web disponibles actualment).",
+ "ReportPeriod": "Període de l'informe",
+ "ReportPeriodHelp": "El període de dades que cobreix aquest informe. Per defecte és el mateix que la programació de correu electrònic, de manera que, si l'informe s'envia setmanalment, contindrà informació sobre la darrera setmana.",
+ "ReportPeriodHelp2": "Podeu canviar-ho si voleu veure informació diferent bo i conservant la programació de correu electrònic. Per exemple, si la programació de correu electrònic és setmanal i el període d'informe és \"dia\", obtindreu informació de l'últim dia, cada setmana.",
+ "ReportSent": "Informe enviat",
"ReportType": "Envia l'informe a través de",
+ "ReportUnsubscribe": "Cancel·la la subscripció a l'informe",
+ "ReportUpdated": "Informe actualitzat",
+ "ReportsIncluded": "Estadístiques incloses",
+ "SegmentAppliedToReports": "El segment '%s' s'aplica als informes.",
+ "SegmentDeleted": "Segment esborrat",
+ "Segment_Deletion_Error": "Aquest segment no es pot esborrar ni es pot fer invisible per a altres usuaris perquè s'utilitza per generar informes de correu electrònic %s. Torneu-ho a provar després d'eliminar aquest segment d'aquests informes.",
+ "Segment_Help": "Podeu seleccionar un segment personalitzat existent per aplicar-lo a les dades d'aquest informe de correu electrònic. Podeu crear i editar segments personalitzats al vostre tauler %1$s(feu clic aquí per obrir)%2$s, després feu clic al quadre \"%3$s\" i després a \"%4$s\".",
"SendReportNow": "Envia l'informe ara",
"SendReportTo": "Envia l'informe a",
+ "SentFromX": "Enivat des de %s.",
"SentToMe": "Enviam l'informe a mi",
+ "SuccessfullyUnsubscribed": "Heu cancel·lat correctament la subscripció a l'informe %1$s.",
"TableOfContent": "Llista d'informes",
"ThereIsNoReportToManage": "No hi ha cap informe per administrar el lloc web %s",
- "TopLinkTooltip": "Creeu informes per correu electrònic per a que les estadístiques del Matomo es dipositin al vostre correu electrònic (o als dels vostres clients) automàticament",
+ "TopLinkTooltip": "Creeu informes de correu electrònic per rebre estadístiques de Matomo automàticament al vostre correu electrònic o al dels vostres clients!",
"TopOfReport": "Torna a dalt",
+ "Unsubscribe": "Cancel·la la subscripció",
+ "UnsubscribeFooter": "Per cancel·lar la subscripció a aquest informe, seguiu aquest enllaç: %1$s",
+ "UnsubscribeReportConfirmation": "Esteu segur que voleu cancel·lar la subscripció a l'informe %1$s?",
"UpdateReport": "Actualitza l'informe",
"WeeklyScheduleHelp": "Programació semanal: L'informe s'enviara el Dilluns de cada setmana."
}
-} \ No newline at end of file
+}
diff --git a/plugins/ScheduledReports/lang/lv.json b/plugins/ScheduledReports/lang/lv.json
index 3452c4a46d..f1417f84ec 100644
--- a/plugins/ScheduledReports/lang/lv.json
+++ b/plugins/ScheduledReports/lang/lv.json
@@ -1,5 +1,6 @@
{
"ScheduledReports": {
+ "AggregateReportsFormat": "Attēlojuma uzstādījumi",
"CreateReport": "Izveidot atskaiti",
"EmailHello": "Sveiki,",
"EmailReports": "E-pasta atskaites",
@@ -15,4 +16,4 @@
"TopOfReport": "Atpakaļ uz sākumu",
"UpdateReport": "Atjaunināt atskaiti"
}
-} \ No newline at end of file
+}
diff --git a/plugins/ScheduledReports/lang/nb.json b/plugins/ScheduledReports/lang/nb.json
index 78a8dd1230..ca8ef5675a 100644
--- a/plugins/ScheduledReports/lang/nb.json
+++ b/plugins/ScheduledReports/lang/nb.json
@@ -16,13 +16,18 @@
"EmailReports": "E-postrapporter",
"EmailSchedule": "E-postplan",
"EvolutionGraph": "Vis historiske grafer for topp %s verdier",
+ "EvolutionGraphsShowForEachInPeriod": "Utviklingsdiagram som viser utviklingen %1$shver dag%2$s de siste %3$s",
+ "EvolutionGraphsShowForPreviousN": "Utviklingsdiagrammet viser utviklingen over de siste N %s",
"FrontPage": "Forside",
"MonthlyScheduleHelp": "Månedsplan: Rapportene blir sendt første dag i hver måned.",
"MustBeLoggedIn": "Du må være logget inn for å lage og planlegge tilpassede rapporter.",
"NoRecipients": "Denne rapporten har ingen mottakere",
+ "NoSubscriptionFound": "Fant ingen noe abonnement. Kanskje abonnementet på rapporten har blitt opphevet, eller fjernet.",
+ "NoTokenProvided": "Inget symbol angitt i nettadressen",
"Pagination": "Side %1$s av %2$s",
"PersonalEmailReports": "Personlige e-postrapporter",
"PiwikReports": "Matomo-rapporter",
+ "PleaseFindAttachedFile": "Du finner dine %1$s-rapporter for %2$s i den vedlagte filen.",
"PleaseFindBelow": "Nedenfor finner du din %1$s rapport for %2$s.",
"PluginDescription": "Lag tilpassede rapporter og planlegg dem slik at de kan sendes på e-post daglig, ukentlig eller månedlig til én eller flere personer. Flere rapportformater er støttet (html, pdf, csv, bilder).",
"ReportFormat": "Rapportformat",
@@ -30,8 +35,11 @@
"ReportHourWithUTC": "Klokken %s i koordinert universaltid",
"ReportIncludeNWebsites": "Rapporten vil inkludere hovedtall for alle nettsteder som har minst ett besøk (fra %s nettsteder som nå er tilgjengelig).",
"ReportPeriod": "Rapporteringsperiode",
+ "ReportPeriodHelp": "Dataperioden som omfattes av denne rapporten. Som forvalg er dette det samme som e-postplanen, så hvis rapporten sendes ukentlig, vil den inneholde info om siste uke.",
+ "ReportPeriodHelp2": "Du kan dog endre dette, hvis du vil vise forskjellig info og fremdeles beholde e-postplanen. For eksempel, vis e-postplanen er satt opp for ukentlig forsendelse, og rapporten er «dag», får du info for hver dag, hver uke.",
"ReportSent": "Rapport sendt",
"ReportType": "Send rapport via",
+ "ReportUnsubscribe": "Opphev abonnement på en rapport",
"ReportUpdated": "Rapport oppdatert",
"ReportsIncluded": "Inkludert statistikk",
"SegmentAppliedToReports": "Segmentet «%s» er applisert til rapportene.",
@@ -42,11 +50,14 @@
"SendReportTo": "Send rapport til",
"SentFromX": "Sendt fra %s.",
"SentToMe": "Send til meg",
+ "SuccessfullyUnsubscribed": "Du har opphevet ditt abonnement på %1$s-rapporten.",
"TableOfContent": "Rapportliste",
"ThereIsNoReportToManage": "Det er ingen rapporter å administrere for nettstedet %s",
"TopLinkTooltip": "Lag e-postrapporter for å få Matomo-statistikk levert til din eller andres e-post automatisk!",
"TopOfReport": "Tilbake til toppen",
"Unsubscribe": "Opphev abonnement",
+ "UnsubscribeFooter": "For å oppheve abonnementet på denne rapporten kan du følge denne lenken: %1$s",
+ "UnsubscribeReportConfirmation": "Opphev abonnement på %1$s?",
"UpdateReport": "Oppdater rapport",
"WeeklyScheduleHelp": "Ukeplan: Rapportene blir sendt første mandag i hver uke."
}
diff --git a/plugins/ScheduledReports/lang/sq.json b/plugins/ScheduledReports/lang/sq.json
index d887d1afe6..5aa3c51dbd 100644
--- a/plugins/ScheduledReports/lang/sq.json
+++ b/plugins/ScheduledReports/lang/sq.json
@@ -1,7 +1,7 @@
{
"ScheduledReports": {
"AggregateReportsFormat": "Mundësi shfaqjeje",
- "AggregateReportsFormat_GraphsOnly": "Shfaq vetëm Grafikë (pa tabela raporti)",
+ "AggregateReportsFormat_GraphsOnly": "Shfaq vetëm Grafikë (pa tabela raportesh)",
"AggregateReportsFormat_TablesAndGraphs": "Shfaq tabela Raporti dhe Grafikë për krejt raportet",
"AggregateReportsFormat_TablesOnly": "(parazgjedhje) Shfaq tabela Raporti (Grafikë vetëm për vlerat kyçe)",
"AlsoSendReportToTheseEmails": "Dërgoje raportin edhe te këto email-e (një email për rresht):",
@@ -16,49 +16,49 @@
"EmailReports": "Dërgo Raportet Me Email",
"EmailSchedule": "Plan Dërgimi me Email",
"EvolutionGraph": "Shfaq Grafikë të Dikurshëm për %s vlerat kryesuese",
+ "EvolutionGraphsShowForEachInPeriod": "Grafikët e ecurisë shfaqin ecurinë për %1$sçdo ditë%2$s gjatë %3$s të fundit",
+ "EvolutionGraphsShowForPreviousN": "Grafikët e ecurisë shfaqin ecurinë përgjatë N %s të shkuara",
"FrontPage": "Faqja Ballore",
- "PersonalEmailReports": "Raporte Personalë Me Email",
"MonthlyScheduleHelp": "Planifikim mujor: raporti do të dërgohet ditën e parë të çdo muaji.",
"MustBeLoggedIn": "Që të krijoni dhe të planifikoni raporte vetjakë, duhet të jeni i futur.",
"NoRecipients": "Ky raport s’ka marrës",
+ "NoSubscriptionFound": "S’u gjet pajtim. Ndoshta jeni shpajtuar tashmë nga raporti, ose ai është hequr.",
+ "NoTokenProvided": "Te URL-ja s’u dha token",
"Pagination": "Faqja %1$s nga %2$s",
+ "PersonalEmailReports": "Raporte Personalë Me Email",
"PiwikReports": "Raporte Matomo",
"PleaseFindAttachedFile": "Ju lutemi, gjeni te kartela bashkëngjitur raportin tuaj %1$s për %2$s.",
- "SentFromX": "Dërguar prej %s.",
"PleaseFindBelow": "Ju lutemi, shihni më poshtë raportin tuaj %1$s për %2$s.",
"PluginDescription": "Krijoni raporte vetjakë dhe planifikoni për ta dërgimin me email përditë, çdo javë ose çdo muaj, te një ose disa vetë. Mbulohen një numër formatesh raportesh (html, pdf, csv, figura).",
"ReportFormat": "Format Raporti",
"ReportHour": "Dërgoje raportin më %s",
"ReportHourWithUTC": "në orën %s UTC",
"ReportIncludeNWebsites": "Raporti do të përfshijë vlerat kryesore për krejt sajtet që kanë të paktën një vizitë (prej %s sajteve të derisotshëm).",
+ "ReportPeriod": "Periudhë Raportimi",
+ "ReportPeriodHelp": "Periudha e të dhënave e mbuluar nga ky raport. Si parazgjedhje, kjo është e njëjtë me planifikimin për email-et, pra nëse raporti dërgohet një herë në javë, do të përmbajë të dhëna që lidhen me javën e fundit.",
+ "ReportPeriodHelp2": "Sidoqoftë, këtë mund ta ndryshoni, nëse doni të shihni të dhëna të tjera, pa prekur planifikimin e email-eve. Për shembull, nëse planifikimi për email-et është një herë në javë dhe periudha e raportit është 'ditë', do të merrni të dhëna për ditën e fundit, çdo javë.",
"ReportSent": "Raporti u dërgua",
- "ReportsIncluded": "Përfshi statistika",
"ReportType": "Dërgoje raportin përmes",
+ "ReportUnsubscribe": "Shpajtohuni nga një raport",
"ReportUpdated": "Raporti u përditësua",
- "Segment_Deletion_Error": "Ky segment s’mund të fshihet ose të bëhet i padukshëm për përdoruesit e tjerë, ngaqë përdoret për të prodhuar raport(e) email për %s. Ju lutemi, riprovoni pas heqjes së këtij segmenti nga ky raport(e).",
- "Segment_Help": "Mund të zgjidhni një segment ekzistues vetjak për ta zbatuar mbi të dhënat për këtë raport email. Segmente vetjakë mund të krijoni dhe përpunoni te pulti juaj %1$s(klikoni këtu që ta hapni)%2$s, mandej të klikoni mbi kutinë \"%3$s\", mandej \"%4$s\".",
+ "ReportsIncluded": "Përfshi statistika",
"SegmentAppliedToReports": "Për raportet është zbatuar segmenti '%s'.",
"SegmentDeleted": "Segmenti u fshi",
+ "Segment_Deletion_Error": "Ky segment s’mund të fshihet ose të bëhet i padukshëm për përdoruesit e tjerë, ngaqë përdoret për të prodhuar raport(e) email për %s. Ju lutemi, riprovoni pas heqjes së këtij segmenti nga ky raport(e).",
+ "Segment_Help": "Mund të zgjidhni një segment ekzistues vetjak për ta zbatuar mbi të dhënat për këtë raport email. Segmente vetjakë mund të krijoni dhe përpunoni te pulti juaj %1$s(klikoni këtu që ta hapni)%2$s, mandej të klikoni mbi kutinë “%3$s”, mandej “%4$s”.",
"SendReportNow": "Dërgoje Raportin tani",
"SendReportTo": "Raportin dërgoje te",
+ "SentFromX": "Dërguar prej %s.",
"SentToMe": "Dërgoma mua",
+ "SuccessfullyUnsubscribed": "U shpajtuat me sukses nga raporti %1$s.",
"TableOfContent": "Listë raportesh",
"ThereIsNoReportToManage": "S’ka raport që mund të administrohet për sajtin %s",
"TopLinkTooltip": "Krijoni Raporte Me Email, që statistikat Matomo të dërgohen vetvetiu në email-in tuaj ose në adresat e klientëve tuaj!",
"TopOfReport": "Mbrapsht në krye",
- "UpdateReport": "Përditësoje Raportin",
- "WeeklyScheduleHelp": "Planifikim javor: raporti do të dërgohet të Hënën e parë të çdo jave.",
"Unsubscribe": "Shpajtomëni",
- "ReportUnsubscribe": "Shpajtohuni nga një raport",
- "UnsubscribeReportConfirmation": "Jeni i sigurt se doni të shpajtoheni nga raporti %1$s?",
- "SuccessfullyUnsubscribed": "U shpajtuat me sukses nga raporti %1$s.",
"UnsubscribeFooter": "Që të shpajtoheni nga ky raport, ju lutemi, ndiqni këtë lidhje: %1$s",
- "NoTokenProvided": "Te URL-ja s’u dha token",
- "NoSubscriptionFound": "S’u gjet pajtim. Ndoshta jeni shpajtuar tashmë nga raporti ose ai është hequr.",
- "EvolutionGraphsShowForEachInPeriod": "Grafikët e ecurisë shfaqin ecurinë për %1$sçdo ditë%2$s gjatë %3$s të fundit",
- "EvolutionGraphsShowForPreviousN": "Grafikët e ecurisë shfaqin ecurinë përgjatë N %s të shkuara",
- "ReportPeriod": "Periudhë Raportimi",
- "ReportPeriodHelp": "Periudha e të dhënave e mbuluar nga ky raport. Si parazgjedhje, kjo është e njëjtë me planifikimin për email-et, pra nëse raporti dërgohet një herë në javë, do të përmbajë të dhëna që lidhen me javën e fundit.",
- "ReportPeriodHelp2": "Sidoqoftë, këtë mund ta ndryshoni, nëse doni të shihni të dhëna të tjera, pa prekur planifikimin e email-eve. Për shembull, nëse planifikimi për email-et është një herë në javë, dhe periudha e raportit është 'ditë', do të merrni të dhëna për ditën e fundit, çdo javë."
+ "UnsubscribeReportConfirmation": "Jeni i sigurt se doni të shpajtoheni nga raporti %1$s?",
+ "UpdateReport": "Përditësoje Raportin",
+ "WeeklyScheduleHelp": "Planifikim javor: raporti do të dërgohet të Hënën e parë të çdo jave."
}
-} \ No newline at end of file
+}
diff --git a/plugins/ScheduledReports/lang/tl.json b/plugins/ScheduledReports/lang/tl.json
index f4dc98bacb..315061d8b0 100644
--- a/plugins/ScheduledReports/lang/tl.json
+++ b/plugins/ScheduledReports/lang/tl.json
@@ -1,5 +1,6 @@
{
"ScheduledReports": {
+ "AggregateReportsFormat": "Mga opsyon sa pag-display",
"AggregateReportsFormat_GraphsOnly": "Display Graph lamang (walang mga talahanayan ng ulat).",
"AggregateReportsFormat_TablesAndGraphs": "Ipakita ang mga talahanayan ng Ulat at Graph para sa lahat ng mga ulat",
"AggregateReportsFormat_TablesOnly": "(default) Ipakita ang mga table ng Report(mga graph lamang para sa mga key metric)",
@@ -25,12 +26,12 @@
"ReportFormat": "Report Format",
"ReportIncludeNWebsites": "Ang ulat ay may kasamang pangunahing sukatan para sa lahat ng website na hindi bababa sa isang pagbisite (mula sa %s website hanggang sa kasalukuyan)",
"ReportSent": "Naipadala na ang ulat",
- "ReportsIncluded": "Kasamang mga Istatistika",
"ReportType": "Magpadala ng ulat sa pamamagitan ng",
"ReportUpdated": "update ng Ulat",
+ "ReportsIncluded": "Kasamang mga Istatistika",
+ "SegmentAppliedToReports": "Ang bahagi ng '%s' ay ginamit sa mga ulat.",
"Segment_Deletion_Error": "Ang segment na ito ay hindi matatanggal o makikita ng ibang user dahil ito ay ginagamit para bumuo ng ulat sa email %s. Mangyaring subukan ulit pagkatapos itong alisin sa segment na mula sa ulat na ito.",
"Segment_Help": "Maari kang pumili ng nakatakdang custom segments upang ilagay sa data sa email report na ito. Maari kang gumawa at mag edit ng custom segments sa iyong dashboard %1$s(click here to open)%2$s pagkatapos ay i-click ang \"%3$s\" na box pagktapos \"%4$s\".",
- "SegmentAppliedToReports": "Ang bahagi ng '%s' ay ginamit sa mga ulat.",
"SendReportNow": "Magpadala ng Ulat ngayon",
"SendReportTo": "Ipadala ang ulat upang",
"SentToMe": "Ipadala sa akin",
@@ -41,4 +42,4 @@
"UpdateReport": "I-update ang Ulat",
"WeeklyScheduleHelp": "Lingguhang iskedyul: ang ulat ay ipapadala sa Lunes bawat linggo."
}
-} \ No newline at end of file
+}
diff --git a/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php b/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
index 63e9c302e5..81366dd8df 100644
--- a/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
+++ b/plugins/ScheduledReports/tests/Integration/ScheduledReportsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\ScheduledReports\tests;
-use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugins\ScheduledReports\API;
use Piwik\Plugins\ScheduledReports\ScheduledReports;
diff --git a/plugins/SecurityInfo b/plugins/SecurityInfo
-Subproject 9fb4de6c0dacb8ae8ca209e9c7511bfe1186f23
+Subproject 84843174ab3d05d545e09753ace8f149cdf1c06
diff --git a/plugins/SegmentEditor/API.php b/plugins/SegmentEditor/API.php
index 4959e850c0..0750ad690f 100644
--- a/plugins/SegmentEditor/API.php
+++ b/plugins/SegmentEditor/API.php
@@ -9,20 +9,14 @@
namespace Piwik\Plugins\SegmentEditor;
use Exception;
-use Piwik\Access;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\CronArchive\SegmentArchiving;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Period\Range;
use Piwik\Piwik;
use Piwik\Config;
use Piwik\Segment;
-use Piwik\Site;
-use Psr\Log\LoggerInterface;
use Piwik\Cache;
/**
diff --git a/plugins/SegmentEditor/SegmentEditor.php b/plugins/SegmentEditor/SegmentEditor.php
index 96128253a1..c22ba33bda 100644
--- a/plugins/SegmentEditor/SegmentEditor.php
+++ b/plugins/SegmentEditor/SegmentEditor.php
@@ -23,7 +23,6 @@ use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
use Piwik\Plugins\Diagnostics\Diagnostics;
use Piwik\Segment;
-use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Site;
use Piwik\Period;
diff --git a/plugins/SegmentEditor/SegmentFormatter.php b/plugins/SegmentEditor/SegmentFormatter.php
index fe0ef7eac8..383c5abde5 100644
--- a/plugins/SegmentEditor/SegmentFormatter.php
+++ b/plugins/SegmentEditor/SegmentFormatter.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SegmentEditor;
use Exception;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/SegmentEditor/lang/ca.json b/plugins/SegmentEditor/lang/ca.json
index 26470300a7..e785d83dd6 100644
--- a/plugins/SegmentEditor/lang/ca.json
+++ b/plugins/SegmentEditor/lang/ca.json
@@ -1,5 +1,61 @@
{
"SegmentEditor": {
- "Test": "Prova"
+ "AddANDorORCondition": "Afegeix la condició %s",
+ "AddNewSegment": "Afegir un nou segment",
+ "AddThisToMatomo": "Afegeix aquest segment a Matomo",
+ "AddingSegmentForAllWebsitesDisabled": "S'ha desactivat l'addició de segments per a tots els llocs web.",
+ "AreYouSureDeleteSegment": "Esteu segur que voleu suprimir aquest segment?",
+ "AutoArchivePreProcessed": "els informes segmentats es processen prèviament (més ràpid, requereix cron)",
+ "AutoArchiveRealTime": "els informes segmentats es processen en temps real",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Esteu a punt de canviar la definició del segment. Els vostres informes d'anàlisi d'aquest segment nou no estaran disponibles fins que no es tornin a processar. Les dades dels informes d'aquest segment poden trigar unes quantes hores a mostrar-se. Voleu continuar igualment?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Esteu a punt de canviar la definició del segment. Els vostres informes d'anàlisi d'aquest segment nou es tornaran a processar sota demanda la propera vegada que els sol·liciteu. Els vostres informes poden trigar uns minuts a aparèixer. Voleu continuar igualment?",
+ "ChooseASegment": "Escolliu un segment",
+ "CompareThisSegment": "Compareu aquest segment amb el segment i el període seleccionats.",
+ "CurrentlySelectedSegment": "Segment seleccionat actualment: %s",
+ "CustomSegment": "Segment personalitzat",
+ "CustomUnprocessedSegmentApiError1": "El segment que heu sol·licitat encara no s'ha creat a l'Editor de segments i, per tant, les dades de l'informe encara no s'han preprocessat.",
+ "CustomUnprocessedSegmentApiError2": "Per veure les dades d'aquest segment heu d'anar a Matomo i crear aquest segment manualment a l'Editor de segments.",
+ "CustomUnprocessedSegmentApiError3": "(Alternativament podeu crear un segment nou amb programació mitjançant el mètode de l'API SegmentEditor.add).",
+ "CustomUnprocessedSegmentApiError4": "Un cop creat el segment a l'editor (o mitjançant l'API) aquest missatge d'error desapareixerà i al cap d'unes hores veureu les dades de l'informe segmentades, un cop les dades del segment s'hagin preprocessat. (Si no ho fa, pot haver-hi un problema.)",
+ "CustomUnprocessedSegmentApiError5": "Tingueu en compte que podeu provar si el vostre segment funcionarà sense haver d'esperar que es processi mitjançant l'API Live.getLastVisitsDetails.",
+ "CustomUnprocessedSegmentApiError6": "Quan utilitzeu aquest mètode de l'API, veureu quins usuaris i accions s'han trobat amb el vostre &amp;segment= parameter.",
+ "CustomUnprocessedSegmentNoData": "Per veure les dades d'aquest segment, heu de crear aquest segment manualment a l'Editor de segments i, a continuació, esperar unes hores perquè finalitzi el preprocessament.",
+ "DataAvailableAtLaterDate": "Els vostres informes d'anàlisi segmentats estaran disponibles més endavant. Us demanem disculpes per les molèsties.",
+ "DefaultAllVisits": "Totes les visites",
+ "DragDropCondition": "Condició Drag &amp; Drop",
+ "HideMessageInFuture": "Amaga aquest missatge en el futur",
+ "LoadingSegmentedDataMayTakeSomeTime": "El processament de les dades segmentades dels visitants pot trigar uns minuts...",
+ "OperatorAND": "AND",
+ "OperatorOR": "OR",
+ "PluginDescription": "Un segment és un conjunt de criteris utilitzats per seleccionar només una part de tot el conjunt de visites. Amb segments podeu tornar a injectar context arbitrari als vostres informes.",
+ "SaveAndApply": "Desa i aplica",
+ "SegmentDisplayedAllWebsites": "tots els llocs web",
+ "SegmentDisplayedThisWebsiteOnly": "només aquest lloc web",
+ "SegmentIsDisplayedForWebsite": "i processat per",
+ "SegmentNotApplied": "El segment '%s' no s'ha aplicat",
+ "SegmentNotAppliedMessage": "Esteu sol·licitant dades per al segment personalitzat '%s', actualment aquesta configuració de Matomo impedeix el processament en temps real dels informes per motius de rendiment.",
+ "SegmentOperatorIsNotNullNorEmpty": "no és nul ni buit",
+ "SegmentOperatorIsNullOrEmpty": "és nul o buit",
+ "SegmentXIsAUnionOf": "%s és una unió d'aquests segments:",
+ "SelectSegmentOfVisits": "Seleccioneu un segment de visites:",
+ "SharedWithYou": "Compartit amb tu",
+ "Test": "Prova",
+ "ThisSegmentIsCompared": "Actualment es compara aquest segment.",
+ "ThisSegmentIsSelectedAndCannotBeCompared": "Aquest segment està seleccionat actualment, de manera que no es pot seleccionar per comparar.",
+ "ThisSegmentIsVisibleTo": "Aquest segment és visible per:",
+ "UnprocessedSegmentApiError1": "El segment \"%1$s\" està definit a \"%2$s\", però Matomo no està configurat actualment per processar informes segmentats a les sol·licituds d'API.",
+ "UnprocessedSegmentApiError2": "Per veure les dades d'aquest informe en el futur, haureu d'editar el vostre segment i triar l'opció anomenada \"%s\".",
+ "UnprocessedSegmentApiError3": "Aleshores, al cap d'unes hores, les dades del vostre segment haurien d'estar disponibles a través de l'API. (Si no ho fa, pot haver-hi un problema.)",
+ "UnprocessedSegmentInVisitorLog1": "%1$sMentrestant podeu utilitzar el registre de visitants%2$s per provar si el vostre segment coincideix correctament amb els vostres usuaris aplicant-lo allà.",
+ "UnprocessedSegmentInVisitorLog2": "Quan s'apliqui, podeu veure immediatament quines visites i accions han coincidit amb el vostre segment.",
+ "UnprocessedSegmentInVisitorLog3": "Això us pot ajudar a confirmar que el vostre Segment coincideix amb els usuaris i les accions que espereu.",
+ "UnprocessedSegmentNoData1": "Aquests informes no tenen dades, perquè el Segment que heu sol·licitat %1$s encara no ha estat processat pel sistema.",
+ "UnprocessedSegmentNoData2": "Les dades d'aquest segment haurien d'estar disponibles en unes poques hores quan finalitzi el processament. (Si no ho fa, pot ser que hi hagi un problema.)",
+ "VisibleToAllUsers": "tots els usuaris",
+ "VisibleToMe": "jo",
+ "VisibleToSuperUser": "Visible per a tu perquè tens accés de superusuari",
+ "YouDontHaveAccessToCreateSegments": "No teniu el nivell d'accés necessari per crear i editar segments.",
+ "YouMayChangeSetting": "Alternativament, podeu canviar la configuració al fitxer de configuració (%1$s) o editar aquest segment i triar \"%2$s\".",
+ "YouMustBeLoggedInToCreateSegments": "Heu d'iniciar sessió per crear i editar segments de visitants personalitzats."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SegmentEditor/lang/nb.json b/plugins/SegmentEditor/lang/nb.json
index 5e714b0758..0e849c192d 100644
--- a/plugins/SegmentEditor/lang/nb.json
+++ b/plugins/SegmentEditor/lang/nb.json
@@ -3,9 +3,12 @@
"AddANDorORCondition": "Legg til %s-vilkår",
"AddNewSegment": "Legg til nytt segment",
"AddThisToMatomo": "Legg til dette segmentet i Matomo",
+ "AddingSegmentForAllWebsitesDisabled": "Tilføyelse av segmenter for alle nettsider har blitt skrudd av.",
"AreYouSureDeleteSegment": "Er du sikker på at du vil slette dette segmentet?",
"AutoArchivePreProcessed": "segmenterte rapporter forhåndsbehandles (raskere, krever cron)",
"AutoArchiveRealTime": "segmenterte rapporter behandles i sanntid",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Du er i ferd med å endre segmentsdefinisjonen. Din analyserapport for dette nye segmentet vil ikke bli tilgjengelig til rapportene behandles igjen. Det kan ta noen timer til rapportdataen vises for dette segmentet. Fortsett uansett?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Du er i ferd med å endre segmentdefinisjonen. Din analyserapporter fir dette nye segmentet vil behandles igjen ved behov neste gang du forespør dem. Det kan ta noen minutter å vise rapportene dine. Fortsett uansett?",
"ChooseASegment": "Velg et segment",
"CurrentlySelectedSegment": "Valgt segment: %s",
"CustomSegment": "Egendefinert segment",
@@ -25,7 +28,9 @@
"Test": "Test",
"ThisSegmentIsCompared": "Dette segmentet er valgt til sammenligning.",
"ThisSegmentIsVisibleTo": "Dette segmentet er synlig for:",
+ "UnprocessedSegmentNoData1": "Disse rapportene har ingen data, fordi %1$s-segmentet du forespurte ikke har blitt behandlet av systemet enda.",
"VisibleToAllUsers": "alle brukere",
- "VisibleToMe": "meg"
+ "VisibleToMe": "meg",
+ "VisibleToSuperUser": "Synlig for deg siden du har superbrukertilgang"
}
}
diff --git a/plugins/SegmentEditor/lang/ru.json b/plugins/SegmentEditor/lang/ru.json
index 77991bfbdb..aeb67c9db5 100644
--- a/plugins/SegmentEditor/lang/ru.json
+++ b/plugins/SegmentEditor/lang/ru.json
@@ -1,21 +1,52 @@
{
"SegmentEditor": {
"AddANDorORCondition": "Добавить условие %s",
- "AddNewSegment": "Добавить новый сегмент",
+ "AddNewSegment": "Добавить сегмент",
+ "AddThisToMatomo": "Добавить этот сегмент в Matomo",
+ "AddingSegmentForAllWebsitesDisabled": "Добавление сегментов для всех веб-сайтов было отключено.",
"AreYouSureDeleteSegment": "Вы уверены, что хотите удалить этот сегмент?",
- "AutoArchiveRealTime": "отчёты по сегментам обрабатываются в реальном времени",
+ "AutoArchivePreProcessed": "сегментированные отчёты обрабатываются предварительно (быстрее, требуется cron)",
+ "AutoArchiveRealTime": "сегментированные отчёты обрабатываются в реальном времени",
+ "ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Вы собираетесь изменить определение сегмента. Ваши аналитические отчёты для этого нового сегмента не будут доступны, пока отчёты не будут обработаны повторно. Для отображения данных отчётов для этого сегмента может потребоваться несколько часов. Все равно продолжать?",
+ "ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Вы собираетесь изменить определение сегмента. Ваши аналитические отчёты для этого нового сегмента будут повторно обработаны по требованию, когда вы запросите их в следующий раз. Появление ваших отчётов может занять несколько минут. Все равно продолжать?",
"ChooseASegment": "Выбрать сегмент",
+ "CompareThisSegment": "Сравните этот сегмент с выбранным сегментом и периодом.",
+ "CurrentlySelectedSegment": "Выбранный сегмент: %s",
+ "CustomSegment": "Пользовательский сегмент",
+ "CustomUnprocessedSegmentApiError5": "Обратите внимание, что вы можете проверить работоспособность вашего сегмента не дожидаясь его обработки используя API Live.getLastVisitsDetails.",
+ "CustomUnprocessedSegmentApiError6": "При использовании этого метода API вы увидите какие пользователи и действия были сопоставлены с вашим &amp;segment= параметр.",
+ "CustomUnprocessedSegmentNoData": "Чтобы увидеть данные для этого сегмента, вы должны создать его вручную в Редакторе сегментов, а затем подождать пару часов, пока завершится предварительная обработка.",
+ "DataAvailableAtLaterDate": "Ваши сегментированные аналитические отчёты будут доступны позже. Просим прощения за неудобства.",
"DefaultAllVisits": "Все посещения",
+ "DragDropCondition": "Условие перетаскивания",
+ "HideMessageInFuture": "Не показывать это сообщение в будущем",
"LoadingSegmentedDataMayTakeSomeTime": "Обработка данных о посещениях сегмента может занять несколько минут...",
"OperatorAND": "И",
"OperatorOR": "ИЛИ",
+ "PluginDescription": "Сегмент — это набор критериев, используемых для выборки определённых посещений. С помощью сегментов вы можете просматривать определённый срез в своих отчётах.",
"SaveAndApply": "Сохранить и применить",
- "SegmentDisplayedAllWebsites": "все сайты",
- "SegmentDisplayedThisWebsiteOnly": "только этот сайт",
- "ThisSegmentIsVisibleTo": "Этот сегмент видим для:",
- "VisibleToAllUsers": "все пользователи",
- "VisibleToMe": "меня",
- "AddingSegmentForAllWebsitesDisabled": "Добавление сегментов для всех веб-сайтов было отключено.",
- "Test": "Тест"
+ "SegmentDisplayedAllWebsites": "всех сайтов",
+ "SegmentDisplayedThisWebsiteOnly": "только этого сайта",
+ "SegmentIsDisplayedForWebsite": "и обрабатывается для",
+ "SegmentNotApplied": "Сегмент «%s» не применяется",
+ "SegmentNotAppliedMessage": "Вы запрашиваете данные для пользовательского сегмента «%s», в настоящее время конфигурация Matomo не позволяет обрабатывать отчёты в реальном времени по причинам производительности.",
+ "SegmentOperatorIsNotNullNorEmpty": "не нулевой и не пустой",
+ "SegmentOperatorIsNullOrEmpty": "нулевой или пустой",
+ "SegmentXIsAUnionOf": "%s — это объединение следующих сегментов:",
+ "SelectSegmentOfVisits": "Выберите сегмент посещений:",
+ "Test": "Тест",
+ "ThisSegmentIsCompared": "Этот сегмент уже сравнивается.",
+ "ThisSegmentIsSelectedAndCannotBeCompared": "Этот сегмент уже выбран, поэтому его нельзя выбрать для сравнения.",
+ "ThisSegmentIsVisibleTo": "Этот сегмент виден",
+ "UnprocessedSegmentInVisitorLog1": "%1$sМежду тем, вы можете использовать Журнал посетителей%2$s для проверки того, будет ли ваш сегмент правильно соответствовать вашим пользователям, применяя его там.",
+ "UnprocessedSegmentInVisitorLog2": "После применения вы можете сразу же увидеть, какие посещения и действия соответствовали вашему сегменту.",
+ "UnprocessedSegmentNoData1": "В этих отчётах нет данных, потому что запрошенный вами сегмент %1$s ещё не обработан системой.",
+ "UnprocessedSegmentNoData2": "Данные для этого Сегмента должны стать доступными через несколько часов после завершения обработки. (Если этого не произойдет, возможно, возникла проблема).",
+ "VisibleToAllUsers": "всем пользователям",
+ "VisibleToMe": "только мне",
+ "VisibleToSuperUser": "Видимы для вас, поскольку у вас есть права Суперпользователя",
+ "YouDontHaveAccessToCreateSegments": "У вас нет необходимого уровня доступа для создания и редактирования сегментов.",
+ "YouMayChangeSetting": "В качестве альтернативы вы можете изменить настройки в конфигурационном файле (%1$s), или отредактировать этот сегмент и выбрать «%2$s».",
+ "YouMustBeLoggedInToCreateSegments": "Вы должны войти в систему, чтобы создавать и редактировать пользовательские сегменты посетителей."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SegmentEditor/lang/sq.json b/plugins/SegmentEditor/lang/sq.json
index c2e926a068..95dc4edfd0 100644
--- a/plugins/SegmentEditor/lang/sq.json
+++ b/plugins/SegmentEditor/lang/sq.json
@@ -1,15 +1,25 @@
{
"SegmentEditor": {
- "PluginDescription": "Një segment është një grup kriteresh të përdorur për të përzgjedhur vetëm një pjesë të krejt grupit të vizitave. Duke përdorur segment e mund të injektoni kontekst arbitrar në raportet tuaja.",
"AddANDorORCondition": "Shtoni kusht %s",
"AddNewSegment": "Shtoni segment të ri",
+ "AddThisToMatomo": "Shtoje këtë segment te Matomo",
+ "AddingSegmentForAllWebsitesDisabled": "Shtimi i segmenteve është çaktivizuar për krejt sajtet.",
"AreYouSureDeleteSegment": "Jeni i sigurt se doni të fshihet ky segment?",
"AutoArchivePreProcessed": "raportet e segmentuar janë të parapërgatitur (më të shpejtë, lyp cron)",
"AutoArchiveRealTime": "raportet e segmentuar përpunohen aty për aty",
"ChangingSegmentDefinitionConfirmationNotProcessedOnRequest": "Ju ndan një hap nga ndryshimi i përkufizimit të segmentit. Raportet e analizave tuaja për këtë segment të ri s’do të jenë gati pa u ripërpunuar raportet. Mund të duhen disa orë për shfaqjen e të dhënave të raporteve për këtë segment. Të vazhdohet sido qoftë?",
"ChangingSegmentDefinitionConfirmationProcessedOnRequest": "Ju ndan një hap nga ndryshimi i përkufizimit të segmentit. Raportet e analizave tuaja për këtë segment të ri do të ripërpunohen pasi kjo të kërkohet nga ju herës tjetër. Mund të duhen pak minuta për shfaqjen e raporteve tuaj. Të vazhdohet sido qoftë?",
"ChooseASegment": "Zgjidhni një segment",
+ "CompareThisSegment": "Krahasojeni këtë segment me segmentin dhe periudhën e përzgjedhur.",
"CurrentlySelectedSegment": "Segmenti i përzgjedhur tani: %s",
+ "CustomSegment": "Segment Vetjak",
+ "CustomUnprocessedSegmentApiError1": "Segmenti që kërkuat s’është krijuar ende te Përpunues Segmentesh, ndaj të dhënat e raportit s’janë parapërpunuar ende.",
+ "CustomUnprocessedSegmentApiError2": "Që të shihni të dhënat për këtë segment, duhet të shkoni te Matomo dhe ta krijoni dorazi këtë segment te Përpunuesi i Segmenteve.",
+ "CustomUnprocessedSegmentApiError3": "(Ndryshe, mund të krijoni programatikisht një segment të ri duke përdorur metodën API SegmentEditor.add).",
+ "CustomUnprocessedSegmentApiError4": "Pasi segmenti të jetë krijuar te përpunuesi (ose përmes API-t), ky mesazh gabimi do të zhduket dhe brenda pak orësh do të shihni të dhënat e raportit për segmentin, pasi të dhënat e segmentit të jenë parapërpunuar. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
+ "CustomUnprocessedSegmentApiError5": "Ju lutemi, mbani parasysh që mund të testoni nëse segmenti juaj do të funksionojë apo jo, pa u dashur të pritni që ai të përpunohet duke përdorur API-n Live.getLastVisitsDetails.",
+ "CustomUnprocessedSegmentApiError6": "Kur përdoret kjo metodë API, do të shihni se cilët përdorues dhe veprime patën përputhje me parametrin tuaj &amp;segment=.",
+ "CustomUnprocessedSegmentNoData": "Që të shihni të dhëna për këtë segment, duhet ta krijoni këtë segment dorazi te Përpunues Segmentesh dhe mandej të pritni dy-tre orë që të plotësohet parapërpunimi.",
"DataAvailableAtLaterDate": "Raportet e segmentuar të statistikave do të jenë gati më vonë. Kërkojmë ndjesë për vonesën.",
"DefaultAllVisits": "Krejt vizitat",
"DragDropCondition": "Kusht Merr & Vër",
@@ -17,45 +27,35 @@
"LoadingSegmentedDataMayTakeSomeTime": "Përpunimi i të dhënave sipas segmentesh vizitorësh mund të hajë ca minuta…",
"OperatorAND": "DHE",
"OperatorOR": "OSE",
+ "PluginDescription": "Një segment është një grup kriteresh të përdorur për të përzgjedhur vetëm një pjesë të krejt grupit të vizitave. Duke përdorur segmente, mund të injektoni kontekst arbitrar në raportet tuaja.",
"SaveAndApply": "Ruaje & Zbatoje",
"SegmentDisplayedAllWebsites": "krejt sajtet",
"SegmentDisplayedThisWebsiteOnly": "vetëm këtë sajt",
"SegmentIsDisplayedForWebsite": "dhe përpunuar për",
"SegmentNotApplied": "S’u zbatua segmenti '%s'",
"SegmentNotAppliedMessage": "Po kërkoni të dhëna për Segmentin Vetjak '%s', ky formësim i Matomo-s, për të mos rënduar funksionimin, e parandalon përpunimin e atypëratyshëm të raporteve.",
- "SelectSegmentOfVisits": "Përzgjidhni një segment vizitash",
+ "SegmentOperatorIsNotNullNorEmpty": "s’është zero ose i zbrazët",
+ "SegmentOperatorIsNullOrEmpty": "është zero ose i zbrazët",
+ "SegmentXIsAUnionOf": "%s është një bashkim i këtyre segmenteve:",
+ "SelectSegmentOfVisits": "Përzgjidhni një segment vizitash:",
+ "SharedWithYou": "Ndarë me ju",
+ "Test": "Provë",
+ "ThisSegmentIsCompared": "Ky segment po krahasohet tani.",
+ "ThisSegmentIsSelectedAndCannotBeCompared": "Ky segment është aktualisht i përzgjedhur, ndaj s’mund të përzgjidhet për krahasim.",
"ThisSegmentIsVisibleTo": "Ky segment është i dukshëm për:",
+ "UnprocessedSegmentApiError1": "Segmenti '%1$s' është caktuar si '%2$s', por Matomo-ja s’është i formësuar të përpunojë raporte të segmentuar në kërkesa API.",
+ "UnprocessedSegmentApiError2": "Që të shihni të dhëna për këtë raport në të ardhmen, do t’ju duhet të përpunoni segmentin tuaj dhe të zgjidhni mundësinë e etiketuar '%s'.",
+ "UnprocessedSegmentApiError3": "Mandej, pas pak orësh, të dhënat e segmentit tuaj do të jenë të përdorshme përmes API-t. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
+ "UnprocessedSegmentInVisitorLog1": "%1$sNdërkohë mund të përdorni Regjistër Vizitorësh%2$s që të testoni nëse segmenti juaj do të përputhet saktësisht me përdoruesit tuaj, duke e zbatuar këtu.",
+ "UnprocessedSegmentInVisitorLog2": "Kur ka vend, mund të shihni menjëherë se cilat vizita dhe veprime patën përputhje me segmentin tuaj.",
+ "UnprocessedSegmentInVisitorLog3": "Kjo mund t’ju ndihmojë të siguroheni që Segmenti juaj përputhet me përdoruesit dhe veprimet që prisni.",
+ "UnprocessedSegmentNoData1": "Këto raporte s’kanë të dhëna, ngaqë Segmenti %1$s që kërkuat s’është përpunuar ende nga sistemi.",
+ "UnprocessedSegmentNoData2": "Të dhënat për këtë Segment do të jenë gati brenda pak orësh, kur të jetë plotësuar përpunimi. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
"VisibleToAllUsers": "krejt përdoruesit",
"VisibleToMe": "mua",
- "YouMayChangeSetting": "Përndryshe mund ta ndryshoni këtë rregullim te kartela e formësimit (%1$s), ose përpunojeni këtë Segment dhe zgjidhni '%2$s'.",
"VisibleToSuperUser": "I dukshëm për ju, ngaqë keni hyrje Superpërdoruesi",
- "SharedWithYou": "Ndarë me ju",
- "YouMustBeLoggedInToCreateSegments": "Që të krijoni dhe përpunoni segmente vetjakë vizitorësh, duhet të keni bërë hyrjen.",
"YouDontHaveAccessToCreateSegments": "Nuk keni shkallë të nevojshme hyrjesh për krijim dhe përpunim segmentesh.",
- "AddingSegmentForAllWebsitesDisabled": "Shtimi i segmenteve për krejt sajtet është çaktivizuar.",
- "SegmentXIsAUnionOf": "%s është një bashkim i këtyre segmenteve:",
- "CustomSegment": "Segment Vetjak",
- "SegmentOperatorIsNullOrEmpty": "është null ose i zbrazët",
- "SegmentOperatorIsNotNullNorEmpty": "s’është null ose i zbrazët",
- "UnprocessedSegmentNoData1": "Këto raporte s’kanë të dhëna, ngaqë Segmenti %1$s që kërkuat s’është përpunuar ende nga sistemi.",
- "UnprocessedSegmentNoData2": "Të dhënat për këtë Segment do të jenë gati brenda pak orësh, kur të jetë plotësuar përpunimi. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
- "UnprocessedSegmentInVisitorLog1": "%1$sNdërkohë mund të përdorni Regjistër Vizitorësh%2$s që të testoni nëse segmenti juaj do të përputhet saktësisht me përdoruesit tuaj, duke e zbatuar këtu.",
- "UnprocessedSegmentInVisitorLog2": "Kur ka vend, mund të shihni menjëherë se cilat vizita dhe veprime patën përputhje me segmentin tuaj.",
- "UnprocessedSegmentInVisitorLog3": "Kjo mund t’ju ndihmojë të siguroheni që Segmenti juaj përputhet me përdoruesit dhe veprimet që prisni.",
- "UnprocessedSegmentApiError1": "Segmenti '%1$s' është caktuar si '%2$s', por Matomo-ja s’është i formësuar të përpunojë raporte të segmentuar në kërkesa API.",
- "UnprocessedSegmentApiError2": "Që të shihni të dhëna për këtë raport në të ardhmen, do t’ju duhet të përpunoni segmentin tuaj dhe të zgjidhni mundësinë e etiketuar '%s'.",
- "UnprocessedSegmentApiError3": "Mandej, pas pak orësh të dhënat e segmentit tuaj do të jenë të përdorshme përmes API-t. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
- "CustomUnprocessedSegmentApiError1": "Segmenti që kërkuat s’është krijuar ende te Përpunues Segmentesh, ndaj të dhënat e raportit s’janë parapërpunuar ende.",
- "CustomUnprocessedSegmentApiError2": "Që të shihni të dhënat për këtë segment, duhet të shkoni te Matomo dhe ta krijoni dorazi këtë segment te Përpunuesi i Segmenteve.",
- "CustomUnprocessedSegmentApiError3": "(Ndryshe, mund të krijoni programatikisht një segment të ri duke përdorur metodën API SegmentEditor.add).",
- "CustomUnprocessedSegmentApiError4": "Pasi segmenti të jetë krijuar te përpunuesi (ose përmes API-t), ky mesazh gabimi do të zhduket dhe brenda pak orësh do të shihni të dhënat e raportit për segmentin, pasi të dhënat e segmentit të jenë parapërpunuar. (Nëse s’ndodh, mund të ketë ndonjë problem.)",
- "CustomUnprocessedSegmentApiError5": "Ju lutemi, mbani parasysh që mund të testoni nëse segmenti juaj do të funksionojë apo jo, pa u dashur të pritni që ai të përpunohet, duke përdorur API-n Live.getLastVisitsDetails.",
- "CustomUnprocessedSegmentApiError6": "Kur përdoret kjo metodë API, do të shihni se cilët përdorues dhe veprime patën përputhje me &segment= parameter tuaj.",
- "CustomUnprocessedSegmentNoData": "Që të shihni të dhëna për këtë segment, duhet ta krijoni këtë segment dorazi te Përpunues Segmentesh, dhe mandej të pritni dy-tre orë që të plotësohet parapërpunimi.",
- "AddThisToMatomo": "Shtoje këtë segment te Matomo",
- "ThisSegmentIsCompared": "Ky segment po krahasohet tani.",
- "ThisSegmentIsSelectedAndCannotBeCompared": "Ky segment është aktualisht i përzgjedhur, ndaj s’mund të përzgjidhet për krahasim.",
- "CompareThisSegment": "Krahasojeni këtë segment me segmentin dhe periudhën e përzgjedhur.",
- "Test": "Provë"
+ "YouMayChangeSetting": "Përndryshe mund ta ndryshoni këtë rregullim te kartela e formësimit (%1$s), ose përpunojeni këtë Segment dhe zgjidhni '%2$s'.",
+ "YouMustBeLoggedInToCreateSegments": "Që të krijoni dhe përpunoni segmente vetjakë vizitorësh, duhet të keni bërë hyrjen."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SegmentEditor/lang/tl.json b/plugins/SegmentEditor/lang/tl.json
index 728d4fc5ce..87571947dd 100644
--- a/plugins/SegmentEditor/lang/tl.json
+++ b/plugins/SegmentEditor/lang/tl.json
@@ -2,6 +2,7 @@
"SegmentEditor": {
"AddANDorORCondition": "Magdagdag kundisyon %s",
"AddNewSegment": "Magdagdag ng bagong segment",
+ "AddingSegmentForAllWebsitesDisabled": "Ang pagdagdag ng bahagi para sa lahat ng website ay hindi na pinagana.",
"AreYouSureDeleteSegment": "Sigurado ka bang gusto mong tanggalin ang bahaging ito?",
"AutoArchivePreProcessed": "Ang kaputol na ulat ay naka pre-processed (ang mas mabilis ay nangangailangan ng cron).",
"AutoArchiveRealTime": "ang mga hinating ulat ay iprinoseso sa aktwal na oras",
@@ -12,16 +13,16 @@
"LoadingSegmentedDataMayTakeSomeTime": "Maaaring tumagal ng ilang minuto ang pagproseso ng kaputol na datos ng bisita.",
"OperatorAND": "AT",
"OperatorOR": "OR",
+ "PluginDescription": "Ang isang segment ay isang set ng mga pamantayan na ginagamit upang pumili lamang ng isang bahagi ng buong hanay ng mga pagbisita. Maaari mag-inject ng arbitraryo na konteksto pabalik sa iyong mga ulat sa pag-gamit ng segment.",
"SaveAndApply": "I-save at I-apply",
"SegmentDisplayedThisWebsiteOnly": "ang website na ito lamang",
"SegmentNotApplied": "Hindi nai-apply ang Segment '%s'",
+ "Test": "Pagsusulit",
"ThisSegmentIsVisibleTo": "Ang segment na ito ay makikita sa:",
"VisibleToAllUsers": "lahat ng mga user",
"VisibleToMe": "ako",
- "YouMayChangeSetting": "Maaari mo ring baguhin ang settings sa config file (%1$s) o i-edit ang mga Segment at piliin ang '%2$s'.",
- "YouMustBeLoggedInToCreateSegments": "Kailangan mong mag log-in upang gumawa at mag-edit ng custom visitor segments.",
"YouDontHaveAccessToCreateSegments": "Wala kang mga kinakailangang access level upang lumikha at mag edit ng mga segment.",
- "AddingSegmentForAllWebsitesDisabled": "Ang pagdagdag ng bahagi para sa lahat ng website ay hindi na pinagana.",
- "Test": "Pagsusulit"
+ "YouMayChangeSetting": "Maaari mo ring baguhin ang settings sa config file (%1$s) o i-edit ang mga Segment at piliin ang '%2$s'.",
+ "YouMustBeLoggedInToCreateSegments": "Kailangan mong mag log-in upang gumawa at mag-edit ng custom visitor segments."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 2c800586c5..e213ff1c96 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use DateTimeZone;
use Exception;
use Piwik\Access;
-use Piwik\CacheId;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
@@ -29,10 +28,8 @@ use Piwik\Scheduler\Scheduler;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Site;
-use Piwik\Tracker;
use Piwik\Tracker\Cache;
use Piwik\Tracker\TrackerCodeGenerator;
-use Piwik\Measurable\Type;
use Piwik\Translation\Translator;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index 1b171533c0..79e671a720 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -13,16 +13,12 @@ use Piwik\API\Request;
use Piwik\API\ResponseBuilder;
use Piwik\Common;
use Piwik\Container\StaticContainer;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Session;
-use Piwik\Settings\Measurable\MeasurableSettings;
use Piwik\SettingsPiwik;
-use Piwik\Site;
use Piwik\Tracker\TrackerCodeGenerator;
use Piwik\Url;
-use Piwik\View;
use Piwik\Http;
use Piwik\Plugins\SitesManager\GtmSiteTypeGuesser;
use Matomo\Cache\Lazy;
diff --git a/plugins/SitesManager/Menu.php b/plugins/SitesManager/Menu.php
index 76ad41ba32..4a629a6b4d 100644
--- a/plugins/SitesManager/Menu.php
+++ b/plugins/SitesManager/Menu.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
use Piwik\Measurable\Type\TypeManager;
-use Piwik\Plugins\WebsiteMeasurable;
class Menu extends \Piwik\Plugin\Menu
{
diff --git a/plugins/SitesManager/Model.php b/plugins/SitesManager/Model.php
index 18c9acf491..1a5c63d1f7 100644
--- a/plugins/SitesManager/Model.php
+++ b/plugins/SitesManager/Model.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SitesManager;
use Piwik\Access;
-use Piwik\Date;
use Piwik\Db;
use Piwik\Common;
use Exception;
diff --git a/plugins/SitesManager/SiteUrls.php b/plugins/SitesManager/SiteUrls.php
index 2441b823fe..530577b9ac 100644
--- a/plugins/SitesManager/SiteUrls.php
+++ b/plugins/SitesManager/SiteUrls.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\SitesManager;
use Piwik\Cache;
use Piwik\Common;
use Piwik\Tracker\Request;
-use Piwik\Tracker\Visitor;
class SiteUrls
{
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index cb1680c6da..7b0b305cd0 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -14,7 +14,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
@@ -447,5 +446,8 @@ class SitesManager extends \Piwik\Plugin
$translationKeys[] = "SitesManager_EmailInstructionsButton";
$translationKeys[] = "SitesManager_EmailInstructionsSubject";
$translationKeys[] = "SitesManager_JsTrackingTagHelp";
+ $translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplication";
+ $translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplicationDescription";
+
}
}
diff --git a/plugins/SitesManager/lang/ca.json b/plugins/SitesManager/lang/ca.json
index bf9fb1d7e4..d768bbaec2 100644
--- a/plugins/SitesManager/lang/ca.json
+++ b/plugins/SitesManager/lang/ca.json
@@ -1,67 +1,122 @@
{
"SitesManager": {
+ "AddMeasurable": "Afegiu un nou mesurable",
"AddSite": "Afegeix un lloc nou",
- "AdvancedTimezoneSupportNotFound": "El suport per a zones horaries avançat no està disponible a la vostra versió de PHP (suportat a partir de la versio 5.2). Encara podeu utilitzar la diferencia UTC de forma manual.",
- "AliasUrlHelp": "Es recomanat, però no obligatori, especificar totes les URL (una per líniea) que els vostres visitants utilizen per accedir al lloc web. Les URL de Alias no apareixeran al informe de Referents > LLocs web. No es necessàri especificar les URL amb i sense 'www' ja que el Matomo té en compte les dos de forma automàtica.",
+ "AdvancedTimezoneSupportNotFound": "No s'ha trobat suport avançat de zones horàries al vostre PHP (admès a PHP&gt;=5.2). Encara podeu triar un desplaçament UTC manual.",
+ "AliasUrlHelp": "Es recomana, però no és obligatori, especificar les diferents URL, una per línia, que fan servir els vostres visitants per accedir a aquest lloc web. Les URL d'àlies d'un lloc web no apareixeran a l'informe Referències - Llocs web. Tingueu en compte que no és necessari especificar les URL amb i sense 'www', ja que Matomo els considera automàticament tots dos.",
"ChangingYourTimezoneWillOnlyAffectDataForward": "Canviar la vostra zona horaria només afecta les dades futures, no s'aplicarà de forma retroactiva.",
+ "ChooseMeasurableTypeHeadline": "Què us agradaria mesurar?",
"Currency": "Moneda",
"CurrencySymbolWillBeUsedForGoals": "El simbol de la moneda es mostrarà al costat dels ingresos dels objectius.",
+ "CustomizeJavaScriptTracker": "Personalitza el seguiment JavaScript",
"DefaultCurrencyForNewWebsites": "Moneda per defecte per als nous llocs web",
"DefaultTimezoneForNewWebsites": "Zona horària per als nous llocs web",
"DeleteConfirm": "Realment voleu esborrar el lloc '%s'?",
- "DisableSiteSearch": "No rastregeu la Cerca del vostre lloc web",
- "EcommerceHelp": "Quan s'activi, l'apartat \"Objectius\" tindrà una nova secció \"Ecommerce\".",
+ "DeleteSiteExplanation": "L'eliminació d'un lloc web suprimirà totes les dades de registre que se n'hagin recopilat. Aquesta acció és permanent i no es pot desfer.",
+ "DetectingYourSite": "Detectant el teu lloc",
+ "DisableSiteSearch": "No feu el seguiment de la cerca al lloc",
+ "EcommerceHelp": "Quan s'activi, l'informe \"Objectius\" tindrà una nova secció \"Ecommerce\".",
+ "EmailInstructionsButton": "Enviar aquestes instruccions per correu electrònic",
+ "EmailInstructionsDocsPlainText": "Si voleu fer més que fer un seguiment de les pàgines vistes, consulteu la documentació de Matomo a %1$s.",
+ "EmailInstructionsGenerateTrackingCode": "També podeu generar un codi de seguiment personalitzat a %1$s.",
+ "EmailInstructionsSiteDetails": "Necessitareu aquests detalls per utilitzar l'API o els SDK per fer un seguiment de les visites de Matomo.",
+ "EmailInstructionsSiteDetailsHeading": "Detalls del vostre lloc",
+ "EmailInstructionsSubject": "Codi de seguiment d'estadístiques Matomo",
+ "EmailInstructionsYourSiteId": "Identificador del vostre lloc: %1$s",
+ "EmailInstructionsYourTrackingUrl": "La vostra URL de seguiment: %1$s",
"EnableEcommerce": "Ecommerce activat",
- "EnableSiteSearch": "Rastreig de les cerques al lloc web activat",
- "ExceptionDeleteSite": "No és possible eliminar aquest lloc ja que és l'únic configurat. Afegiu un altre lloc primer i, llavors, ja esborrareu aquest.",
+ "EnableSiteSearch": "El seguiment de la cerca al lloc està activat",
+ "ExceptionDeleteSite": "No és possible eliminar aquest lloc web ja que és l'únic lloc web registrat. Afegiu primer un lloc web nou i després suprimiu aquest.",
"ExceptionEmptyName": "El nom del lloc no pot estar buit.",
- "ExceptionInvalidCurrency": "La moneda \"%1$s\" no es vàlida. Sisplau, introduïu un símbol de moneda vàlid (p.e. %2$s)",
+ "ExceptionInvalidCurrency": "La moneda \"%1$s\" no es vàlida. Siusplau introduïu un símbol de moneda vàlid (p.e. %2$s)",
"ExceptionInvalidIPFormat": "La IP a excloure \"%1$s\" no te un format IP vàlid (p.e. %2$s).",
- "ExceptionInvalidTimezone": "La zona horària \"%s\" no es vàlida. Sisplau introduïu una zona horària vàlida.",
- "ExceptionInvalidUrl": "L'adreça '%s' no és vàlida.",
- "ExceptionNoUrl": "Heu d'especificar una URL com a mínim.",
+ "ExceptionInvalidTimezone": "La zona horària \"%s\" no es vàlida. Siusplau introduïu una zona horària vàlida.",
+ "ExceptionInvalidUrl": "L'URL '%s' no és una URL vàlida.",
+ "ExceptionNoUrl": "Heu d'especificar almenys una URL per al lloc web.",
"ExcludedIps": "IPs excloses",
"ExcludedParameters": "Paràmetres exclosos",
"ExcludedUserAgents": "Agents d'usuari exclosos",
- "GlobalExcludedUserAgentHelp1": "Introduïeu la llista de user-agents per excloure del rastreig de Matomo.",
- "GlobalExcludedUserAgentHelp2": "Podeu utilizar això per excloure robots del rastreig.",
- "GlobalListExcludedIps": "Llista global de IPs Excloses.",
- "GlobalListExcludedQueryParameters": "Llista global de paràmetres d'URL per excloure",
- "GlobalListExcludedUserAgents": "LLista global d'user-agents a excloure",
- "GlobalListExcludedUserAgents_Desc": "Si el user-agent del visitant conté alguna de les cadenes especificades, el visitant serà exclòs del Matomo.",
- "GlobalWebsitesSettings": "Preferències globals dels llocs web",
+ "ExtraInformationNeeded": "Per configurar Matomo al vostre sistema és possible que necessiteu la informació següent:",
+ "Format_Utc": "UTC %s",
+ "GlobalExcludedUserAgentHelp1": "Introduïu la llista d'agents d'usuari que voleu excloure del seguiment de Matomo.",
+ "GlobalExcludedUserAgentHelp2": "Podeu utilitzar-ho per excloure alguns robots del seguiment.",
+ "GlobalExcludedUserAgentHelp3": "S'admeten expressions regulars com ara %s.",
+ "GlobalListExcludedIps": "Llista global d'IPs excloses",
+ "GlobalListExcludedQueryParameters": "Llista global de paràmetres d'URL de consulta per excloure",
+ "GlobalListExcludedUserAgents": "Llista global d'agents d'usuari a excloure",
+ "GlobalListExcludedUserAgents_Desc": "Si la cadena d'agent d'usuari del visitant conté alguna de les cadenes que especifiqueu, el visitant serà exclòs de Matomo.",
+ "GlobalSettings": "Configuració global",
+ "GlobalWebsitesSettings": "Configuració global de llocs web",
+ "HelpExcludedIpAddresses": "Introduïu la llista d'IP, una per línia, que voleu excloure del seguiment de Matomo. Podeu utilitzar la notació CIDR, per exemple %1$s o podeu utilitzar comodins, p. ex. %2$s o %3$s",
+ "InstallationGuides": "Guies d'instal·lació",
+ "InstallationGuidesIntro": "Oferim guies pas a pas que expliquen com inserir el codi de seguiment per a alguns CMS i creadors de llocs web populars:",
+ "Integrations": "Integracions",
"JsTrackingTagHelp": "Aquí teniu l'etiqueta de seguiment JavaScript per tal d'incloure-la a totes les pàgines",
- "ListOfIpsToBeExcludedOnAllWebsites": "Les IPs indicades a continuació serán excloses del rastreig a tots els llocs web.",
- "ListOfQueryParametersToBeExcludedOnAllWebsites": "Els paràmetres de URL indicats a continuació seran exclosos de les URL a tots els llocs web.",
- "MainDescription": "Els informes d'anàlisi web necessiten llocs web! Afegiu, actualitzeu i esborreu-ne. Veieu també el codi JavaScript que heu d'inserir a les pàgines.",
- "NotAnEcommerceSite": "No es un lloc d'Ecommerce",
+ "KeepURLFragments": "Seguiment de fragments d'URL de la pàgina",
+ "KeepURLFragmentsHelp": "Si la casella de selecció següent està desmarcada, els fragments de l'URL de la pàgina (tot el que sigui després de %1$s) s'eliminaran durant el seguiment: %2$s es farà el seguiment com a %3$s",
+ "KeepURLFragmentsHelp2": "També podeu anul·lar aquesta configuració per a llocs web individuals anteriors.",
+ "KeepURLFragmentsLong": "Conserveu els fragments d'URL de la pàgina quan feu el seguiment de les URL de la pàgina",
+ "ListOfIpsToBeExcludedOnAllWebsites": "Les IP següents seran excloses del seguiment a tots els llocs web.",
+ "ListOfQueryParametersToBeExcludedOnAllWebsites": "Els paràmetres d'URL de consulta següents s'exclouran de les URL de tots els llocs web.",
+ "ListOfQueryParametersToExclude": "Introduïu la llista de paràmetres de consulta d'URL, un per línia, per excloure'ls dels informes d'URL de pàgina. S'admeten expressions regulars com ara %s.",
+ "LogAnalytics": "Anàlisi de registres",
+ "LogAnalyticsDescription": "Si el mètode de seguiment de Javascript no és viable, podeu %1$susar l'anàlisi del registre del servidor%2$s com a mètode alternatiu per fer el seguiment dels usuaris del vostre lloc web.",
+ "MainDescription": "Els vostres informes d'anàlisi web necessiten llocs web! Afegiu, actualitzeu, suprimiu llocs web i mostreu el JavaScript per inserir a les vostres pàgines.",
+ "MenuManage": "Gestionar",
+ "MobileAppsAndSDKs": "Aplicacions mòbils i SDK",
+ "MobileAppsAndSDKsDescription": "No feu seguiment d'un lloc web? Alternativament podeu fer el seguiment d'una aplicació mòbil o qualsevol altre tipus d'aplicació mitjançant un dels %1$sSDKs disponibles%2$s.",
+ "NoWebsites": "No teniu cap lloc web per administrar.",
+ "NotAnEcommerceSite": "No és un lloc de comerç electrònic",
"NotFound": "No s'han trobat llocs web per",
- "NoWebsites": "No teniu cap lloc que pugueu administrar",
- "OnlyOneSiteAtTime": "Només podeu editar un lloc web a la vegada. Sisplau, Guardeu o Canceleu les modificacions al lloc web %s.",
- "PiwikOffersEcommerceAnalytics": "EL Matomo permet analítiques avançades per a Eccomerce. Sabeu més de les %1$s Analítiques per a Ecommerce %2$s.",
+ "OnlyMatchedUrlsAllowed": "Feu un seguiment de les visites i les accions només quan l'URL de l'acció comenci amb una de les URL anteriors.",
+ "OnlyMatchedUrlsAllowedHelp": "Quan està activat, Matomo només farà un seguiment de les accions internes quan l'URL de la pàgina sigui una de les URL conegudes per al vostre lloc web. Això evita que les persones enviïn brossa a les vostres analítiques amb URL per altres llocs web.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "El domini i el camí han de coincidir exactament i cada subdomini vàlid s'ha d'especificar per separat. Per exemple, quan les URL conegudes són \"http://example.com/path\" i \"http://good.example.com\", les sol·licituds de seguiment de \"http://example.com/altre camí\" o \"http:/ /bad.example.com\" s'ignoren.",
+ "OnlyOneSiteAtTime": "Només podeu editar un lloc web alhora. Deseu o cancel·leu les vostres modificacions actuals al lloc web %s.",
+ "PiwikOffersEcommerceAnalytics": "Matomo permet seguiment i informes avançats d'Analytics de comerç electrònic. Més informació sobre %1$s Ecommerce Analytics%2$s.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "Matomo exclourà automàticament els paràmetres de sessió comuns (%s).",
- "SearchCategoryDesc": "El Matomo també pot gestionar la categoria de Cerca per cada una de les paraules clau de la carca interna.",
+ "PluginDescription": "La gestió de llocs web us permet afegir un lloc web nou i editar els llocs web existents.",
+ "SearchCategoryDesc": "Matomo també pot fer un seguiment de la categoria de cerca per a cada paraula clau de cerca interna del lloc.",
"SearchCategoryLabel": "Paràmetre de la categoria",
- "SearchCategoryParametersDesc": "Podeu introduir una llista separada per comes de paràmetres que especifíquen la categoria de cerca.",
- "SearchKeywordLabel": "Paràmetre",
- "SearchKeywordParametersDesc": "Introduïu una llista separada per comes de paràmetres que conte la paraula clau de cerca al lloc web.",
- "SearchParametersNote": "Nota: Els parametres de cerca i categoria de cerca només s'utilitzaran per llocs webs que tenen la Cerca al lloc activada pero que tenen aquest paràmetres en blanc.",
- "SearchParametersNote2": "Per deshabilitar la Cerca al lloc per als nous llocs web, deixeu aquest dos camps en blanc.",
+ "SearchCategoryParametersDesc": "Podeu introduir una llista separada per comes de paràmetres de consulta especificant la categoria de cerca.",
+ "SearchKeywordLabel": "Paràmetre de consulta",
+ "SearchKeywordParametersDesc": "Introduïu una llista separada per comes de tots els noms de paràmetres de consulta que contenen la paraula clau de cerca del lloc.",
+ "SearchParametersNote": "Nota: els paràmetres de consulta i els paràmetres de categoria només s'utilitzaran per als llocs web que tinguin la cerca al lloc activada però que hagin deixat aquests paràmetres buits.",
+ "SearchParametersNote2": "Per desactivar la cerca al lloc per als nous llocs web, deixeu aquest dos camps en blanc.",
"SearchUseDefault": "Utilitzar els paràmetres de Cerca al Lloc %1$s per defecte %2$s",
"SelectACity": "Seleccioneu una ciutat",
- "SelectDefaultCurrency": "Podeu seleccionar la moneda per defecte dels nous llocs web.",
- "SelectDefaultTimezone": "Podeu seleccionar la zona horària per defecte dels nous llocs web.",
- "ShowTrackingTag": "mostra l'etiqueta de seguiment",
- "Sites": "Llocs",
- "SiteSearchUse": "Podeu utilitzar el Matomo per rastrejar i vistualitzar informes sobre que estan cercant els vostres visitants a la cerca interna del vostre lloc web.",
+ "SelectDefaultCurrency": "Podeu seleccionar la moneda per definir de manera predeterminada per als llocs web nous.",
+ "SelectDefaultTimezone": "Podeu seleccionar la zona horària per seleccionar de manera predeterminada per als llocs web nous.",
+ "ShowTrackingTag": "Mostra el codi de seguiment",
+ "SiteSearchUse": "Podeu utilitzar Matomo per fer un seguiment i informar què cerquen els visitants al motor de cerca intern del vostre lloc web.",
+ "SiteWithoutDataChoosePreferredWay": "Trieu la vostra manera preferida de configuració",
+ "SiteWithoutDataDescription": "Heu d'afegir un codi addicional al vostre lloc web o a l'aplicació mòbil si encara no ho heu fet. Comproveu la vostra opció a continuació o %1$senvieu totes les instruccions a un company d'equip%2$s.",
+ "SiteWithoutDataDetectedGtm": "També hem detectat que feu servir un Gestor d'etiquetes de Google. Si preferiu configurar Matomo amb GTM, seguiu aquesta %2$sguia%3$s.",
+ "SiteWithoutDataDetectedSite": "Hem detectat que esteu utilitzant un lloc %1$s. Simplement seguiu les instruccions d'aquesta %2$sguia%3$s.",
+ "SiteWithoutDataGoogleTagManager": "Gestor d'etiquetes de Google",
+ "SiteWithoutDataGoogleTagManagerDescription": "Podeu utilitzar Matomo amb Google Tag Manager. Per configurar el seguiment de Matomo a Google Tag Manager, seguiu les instruccions d'aquesta %1$sguia%2$s.",
+ "SiteWithoutDataIgnoreMessage": "No mostris aquest missatge durant la propera hora",
+ "SiteWithoutDataMatomoTagManager": "Gestor d'etiquetes de Matomo",
+ "SiteWithoutDataMatomoTagManagerNotActive": "No saps què és un Tag Manager? Consulteu la nostra %1$sGuia del Gestor d'etiquetes%2$s. Si incrusteu diversos recursos de llocs web de tercers al vostre lloc web, fer el seguiment del vostre lloc web amb el Gestor d'etiquetes pot ser una millor opció per a vosaltres en comparació amb el seguiment habitual de JavaScript.",
+ "SiteWithoutDataMessageDisappears": "Aquest missatge desapareixerà tan bon punt es faci el seguiment d'algunes dades d'aquest lloc web.",
+ "SiteWithoutDataOtherIntegrations": "Altres integracions",
+ "SiteWithoutDataOtherWays": "Altres maneres",
+ "SiteWithoutDataSetupTracking": "Configureu el %1$scodi de seguiment%2$s a continuació al vostre lloc web o aplicació mòbil si encara no ho heu fet.",
+ "SiteWithoutDataSinglePageApplication": "Aplicació d'una sola pàgina o aplicació web progressiva",
+ "SiteWithoutDataSinglePageApplicationDescription": "Per alseguiment d'aplicacions d'una sola pàgina o d'aplicacions web progressives. Consulteu la nostra %1$sguia%2$s.",
+ "SiteWithoutDataTitle": "Només un últim pas per fer un seguiment del vostre trànsit amb Matomo i obtenir informació valuosa",
+ "Sites": "Llocs web",
+ "SuperUserAccessCan": "Un usuari amb accés de superusuari també pot %1$s especificar la configuració global%2$s per als llocs web nous.",
"Timezone": "Zona horària",
- "TrackingSiteSearch": "Rastreig de la Cerca Interna.",
- "TrackingTags": "Codi de rastreig per %s",
- "Urls": "Adreces",
+ "TrackingSiteSearch": "Seguiment de la cerca interna del lloc",
+ "TrackingTags": "Codi de seguiment per a %s",
"Type": "Tipus",
"UTCTimeIs": "L'hora UTC es %s.",
- "WebsitesManagement": "Gestiona els llocs",
+ "Urls": "URL's",
+ "WebsiteCreated": "Lloc web creat",
+ "WebsiteUpdated": "Lloc web actualitzat",
+ "WebsitesManagement": "Gestió de llocs web",
+ "XManagement": "Gestionar %s",
"YouCurrentlyHaveAccessToNWebsites": "Actualment teniu accés a %s llocs web.",
- "YourCurrentIpAddressIs": "La vostra adreça IP es %s"
+ "YourCurrentIpAddressIs": "La vostra adreça IP actual és %s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/lang/el.json b/plugins/SitesManager/lang/el.json
index 333bdce6ed..039f80f7bc 100644
--- a/plugins/SitesManager/lang/el.json
+++ b/plugins/SitesManager/lang/el.json
@@ -101,6 +101,8 @@
"SiteWithoutDataOtherIntegrations": "Άλλες ενσωματώσεις",
"SiteWithoutDataOtherWays": "Άλλοι τρόποι",
"SiteWithoutDataSetupTracking": "Κάντε ορισμό του %1$sκώδικα παρακολούθησης%2$s στον ιστοτόπο σας ή στην εφαρμογή για κινητά αν δεν το έχετε ήδη κάνει.",
+ "SiteWithoutDataSinglePageApplication": "Εφαρμογή Μοναδικής-Σελίδας ή Προοδευτική Εφαρμογή Ιστού",
+ "SiteWithoutDataSinglePageApplicationDescription": "Για Ιχνηλάτηση Εφαρμογής Μοναδικής-Σελίδας ή Προοδευτικής Εφαρμογής Ιστού. Δείτε τον %1$sοδηγό μας%2$s.",
"SiteWithoutDataTitle": "Ένα τελευταίο μόνο βήμα για την ιχνηλάτηση της κίνησής σας με το Matomo και κέρδος πολύτιμη γνώση",
"Sites": "Ιστοτόποι",
"SuperUserAccessCan": "Ένας χρήστης με πρόσβαση Υπερ Χρήστη μπορεί επίσης να %1$s ορίσει τις καθολικές παραμέτρους%2$s για νέους ιστοτόπους.",
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 51b1ada059..8e0decd70e 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -85,8 +85,10 @@
"SiteWithoutDataOtherIntegrations": "Other integrations",
"SiteWithoutDataGoogleTagManager": "Google Tag Manager",
"SiteWithoutDataMatomoTagManager": "Matomo Tag Manager",
+ "SiteWithoutDataSinglePageApplication": "Single-Page Application or Progressive Web App",
"SiteWithoutDataMatomoTagManagerNotActive": "Don't know what a Tag Manager is? Check out our %1$sTag Manager guide%2$s. If you are embedding multiple resources from 3rd party websites into your website, then tracking your website using the Tag Manager may be a better choice for you compared to using the regular JavaScript tracking.",
"SiteWithoutDataGoogleTagManagerDescription": "You can use Matomo with Google Tag Manager. To setup Matomo Tracking in Google Tag Manager, follow the instructions from this %1$sguide%2$s.",
+ "SiteWithoutDataSinglePageApplicationDescription": "For Single-Page Application or Progressive Web App Tracking. Check out our %1$sguide%2$s.",
"SiteWithoutDataDetectedSite": "We've detected you're using a %1$s site. Simply follow the instructions from this %2$sguide%3$s.",
"SiteWithoutDataDetectedGtm": "We've also detected you're using a Google Tag Manager. If you prefer to set up Matomo using GTM please follow this %2$sguide%3$s.",
"SuperUserAccessCan": "A user with Super User access can also %1$s specify global settings%2$s for new websites.",
diff --git a/plugins/SitesManager/lang/nb.json b/plugins/SitesManager/lang/nb.json
index 3322ddb141..00bad3f9a4 100644
--- a/plugins/SitesManager/lang/nb.json
+++ b/plugins/SitesManager/lang/nb.json
@@ -32,9 +32,11 @@
"ExcludedIps": "Ekskluderte IP-adresser",
"ExcludedParameters": "Ekskluderte parametre",
"ExcludedUserAgents": "Ekskluderte brukeragenter",
+ "ExtraInformationNeeded": "Du trenger følgende info for å sette opp Matomo på ditt system:",
"Format_Utc": "Koordinert universaltid %s",
"GlobalExcludedUserAgentHelp1": "Skriv inn listen med brukeragenter som skal ekskluderes fra å spores av Matomo.",
"GlobalExcludedUserAgentHelp2": "Du kan bruke denne for å ekskludere noen roboter fra å bli sporet.",
+ "GlobalExcludedUserAgentHelp3": "Regulære uttrykk som f.eks. %s støttes.",
"GlobalListExcludedIps": "Global liste med ekskluderte IP-adresser",
"GlobalListExcludedQueryParameters": "Global liste over URL-spørreparametre som skal ekskluderes",
"GlobalListExcludedUserAgents": "Global liste med brukeragenter som skal ekskluderes",
diff --git a/plugins/SitesManager/lang/pt-br.json b/plugins/SitesManager/lang/pt-br.json
index 38107b0294..82cd27d95f 100644
--- a/plugins/SitesManager/lang/pt-br.json
+++ b/plugins/SitesManager/lang/pt-br.json
@@ -1,44 +1,56 @@
{
"SitesManager": {
- "AddSite": "Adicionar um novo website",
"AddMeasurable": "Adicionar um novo mensurável",
- "AdvancedTimezoneSupportNotFound": "Suporte a fusos-horários avançados não encontrado em seu PHP (suportado no PHP >=5.2). Você pode ainda escolher um offset de UTC manual.",
- "AliasUrlHelp": "É recomendado, mas não necessário, especificar as várias URLs, uma por linha, que seus visitantes usam para acessar esse site. Pseudônimos de URLs para websites não aparecerão nos relatórios Referenciadores > Websites. Note que não é necessário especificar as URLs com ou sem 'www', pois Matomo considera ambas automaticamente.",
+ "AddSite": "Adicionar um novo website",
+ "AdvancedTimezoneSupportNotFound": "Suporte a fusos-horários avançados não encontrado em seu PHP (suportado no PHP &gt;=5.2). Você pode ainda escolher um offset de UTC manual.",
+ "AliasUrlHelp": "É recomendado, mas não necessário, especificar as várias URLs, uma por linha, que seus visitantes usam para acessar esse site. Pseudônimos de URLs para websites não aparecerão nos relatórios Referenciadores &gt; Websites. Note que não é necessário especificar as URLs com ou sem 'www', pois Matomo considera ambas automaticamente.",
"ChangingYourTimezoneWillOnlyAffectDataForward": "Ao mudar seu fuso-horário apenas afetará os dados que vierem depois, não será aplicado retroativamente.",
+ "ChooseMeasurableTypeHeadline": "O que você gostaria de medir?",
"Currency": "Moeda Corrente",
"CurrencySymbolWillBeUsedForGoals": "O símbolo da moeda corrente será mostrado próximo às metas de lucro.",
"CustomizeJavaScriptTracker": "Personalizar rastreamento JavaScript",
"DefaultCurrencyForNewWebsites": "Moeda corrente padrão para novos websites",
"DefaultTimezoneForNewWebsites": "Fuso-horário padrão para novos websites",
"DeleteConfirm": "Tem certeza que deseja excluir o website %s?",
+ "DeleteSiteExplanation": "A remoção de um site excluirá todos os dados que foram coletados para ele. Essa ação é permanente e não pode ser desfeita.",
+ "DetectingYourSite": "Detectando seu site",
"DisableSiteSearch": "Não rastrear pesquisas no site",
"EcommerceHelp": "Quando ativado, o relatório de \"Metas\" você terá uma nova seção \"Ecommerce\".",
+ "EmailInstructionsButton": "Enviar por email estas instruções",
+ "EmailInstructionsDocsPlainText": "Se você quer fazer mais do que rastrear visualizações de páginas, confira a documentação do Matomo em %1$s.",
+ "EmailInstructionsGenerateTrackingCode": "Você também pode gerar um código de rastreamento personalizado em %1$s.",
+ "EmailInstructionsSiteDetails": "Você irá precisar destes detalhes para usar a API ou SDK para rastrear visitas ao Matomo.",
+ "EmailInstructionsSiteDetailsHeading": "Detalhes do seu site",
+ "EmailInstructionsSubject": "Código de rastreamento do Matomo Analytics",
+ "EmailInstructionsYourSiteId": "ID do seu site: %1$s",
+ "EmailInstructionsYourTrackingUrl": "Sua URL de rastreamento: %1$s",
"EnableEcommerce": "Ecommerce ativado",
- "EnableSiteSearch": "Ativado o rastreamento de pesquisas no site.",
+ "EnableSiteSearch": "Ativado o rastreamento de pesquisas no site",
"ExceptionDeleteSite": "Não é possível excluir este site já que ele é o único site registrado. Adicione um novo site primeiro, depois exclua este.",
"ExceptionEmptyName": "O nome do site não pode ficar vazio.",
"ExceptionInvalidCurrency": "A moeda \"%1$s\" não é válida. Por favor inserir um símbolo monetário válido (ex. %2$s)",
- "ExceptionInvalidIPFormat": "O IP para excluir \"%1$s\" não tem um formatio de IP válido (ex. %2$s)",
+ "ExceptionInvalidIPFormat": "O IP para excluir \"%1$s\" não tem um formatio de IP válido (ex. %2$s).",
"ExceptionInvalidTimezone": "O fuso-horário \"%s\" não é válido. Por favor inserir um fuso-horário válido.",
"ExceptionInvalidUrl": "A URL '%s' não é uma URL válida.",
"ExceptionNoUrl": "Você precisa especificar no mínimo uma URL para o site.",
"ExcludedIps": "IPs excluídos",
"ExcludedParameters": "Parâmetros Excluídos",
"ExcludedUserAgents": "User Agents excluídos",
+ "ExtraInformationNeeded": "Para configurar o Matomo em seu sistema, você pode precisar da seguinte informação:",
"Format_Utc": "UTC%s",
"GlobalExcludedUserAgentHelp1": "Insira a lista de user agents para exclusão de rastreamento pelo Matomo.",
"GlobalExcludedUserAgentHelp2": "Você pode usar isso para excluir alguns bots de serem rastreados.",
+ "GlobalExcludedUserAgentHelp3": "Expressões regulares como %s são suportadas.",
"GlobalListExcludedIps": "Lista global de IPs excluídos",
"GlobalListExcludedQueryParameters": "Lista global de parâmetros Query URL para excluir",
"GlobalListExcludedUserAgents": "Lista global de user agents para excluir",
"GlobalListExcludedUserAgents_Desc": "Se a seqüência de user agent do visitante tiver qualquer uma das sequências que você especificar, o visitante será excluído do Matomo.",
"GlobalSettings": "Configurações globais",
"GlobalWebsitesSettings": "Configurações globais de sites",
+ "HelpExcludedIpAddresses": "Entre com a lista de IPs, um por linha, que você deseja excluir por ter sido rastreado pelo Matomo. Você pode usar notação CIDR, ex: %1$s ou você pode usar wildcards, ex: %2$s ou %3$s",
"InstallationGuides": "Guias de instalação",
"InstallationGuidesIntro": "Nós fornecemos guias passo a passo explicando como embutir o código de rastreamento em alguns CMS e construtores de sites populares:",
- "ExtraInformationNeeded": "Para configurar o Matomo em seu sistema, você pode precisar da seguinte informação:",
"Integrations": "Integrações",
- "HelpExcludedIpAddresses": "Entre com a lista de IPs, um por linha, que você deseja excluir por ter sido rastreado pelo Matomo. Você pode usar notação CIDR, ex: %1$s ou você pode usar wildcards, ex: %2$s ou %3$s",
"JsTrackingTagHelp": "Aqui está a tag de rastreamento JavaScript a ser incluída em todas as suas páginas",
"KeepURLFragments": "Rastreamento de fragmentos de URL",
"KeepURLFragmentsHelp": "Se a caixa abaixo estiver desmarcada, fragmentos de URL da página (tudo após o %1$s) será removido ao rastrear:%2$s serão rastreadas como %3$s",
@@ -46,19 +58,23 @@
"KeepURLFragmentsLong": "Mantenha fragmentos de URL da página quando estiver rastreando URLs de páginas",
"ListOfIpsToBeExcludedOnAllWebsites": "Os IPs abaixo serão excluídos por terem sido rastreados em todos os sites.",
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Os parâmetros Query URL abaixo serão excluídos das URLs em todos os sites.",
+ "ListOfQueryParametersToExclude": "Insira a lista de parâmetros de consulta de URL, um por linha, para excluir dos relatórios de URLs de página. Expressões regulares como %s são suportadas.",
"LogAnalytics": "Análise de registro",
"LogAnalyticsDescription": "Se o método de rastreamento Javascript não for viável, você pode %1$susar análise de registro do servidor%2$s como um método alternativo para rastrear os usuários do seu site.",
"MainDescription": "Seus relatórios de Web Analytics precisam de sites! Adicione, atualize, exclua sites, e mostre o JavaScript a ser inserido em suas páginas.",
"MenuManage": "Gerenciar",
"MobileAppsAndSDKs": "Aplicativos móveis e SDKs",
"MobileAppsAndSDKsDescription": "Não está rastreando um site? Você pode alternativamente rastrear um aplicativo móvel ou qualquer outro tipo de aplicativo usando um dos %1$sSDKs disponíveis%2$s.",
+ "NoWebsites": "Você não tem nenhum site para administrar.",
"NotAnEcommerceSite": "Não é um site de Ecommerce",
"NotFound": "Nenhum site encontrado para",
- "NoWebsites": "Você não tem nenhum site para administrar.",
+ "OnlyMatchedUrlsAllowed": "Apenas rastrear visitas e ações quando a URL da ação começar com uma das URLs acima.",
+ "OnlyMatchedUrlsAllowedHelp": "Quando ativado, o Matomo só irá rastrear ações internas quando a URL da página for uma das URLs reconhecidas para o seu site. Isso impede que pessoas enviem spams para a sua análise com URLs de outros sites.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "O domínio e o caminho devem corresponder exatamente e cada subdomínio válido deve ser especificado separadamente. Por exemplo, quando as URLs são 'http://example.com/path' e 'http://good.example.com', solicitações de rastreamento para http://example.com/otherpath' ou 'http://bad.example.com' são ignoradas.",
"OnlyOneSiteAtTime": "Você pode editar um site por vez. Por favor salve ou cancele as modificações ao site atual %s.",
"PiwikOffersEcommerceAnalytics": "O Matomo permite análises avançadas de rastreamento e relatórios de comércio eletrônico. Saiba mais sobre %1$s Análise de Ecommerce%2$s.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "O Matomo excluirá automaticamente os parâmetros de sessão comuns (%s).",
- "PluginDescription": "O gerenciamento de sites permite que você adicione um novo site e edite sites existentes.",
+ "PluginDescription": "O gerenciamento de sites permite adicionar um novo site e editar sites existentes.",
"SearchCategoryDesc": "O Matomo também pode acompanhar a categoria de Busca para cada palavra-chave de busca interna no site.",
"SearchCategoryLabel": "Parâmetro de categoria",
"SearchCategoryParametersDesc": "Você pode inserir uma lista separada por vírgulas de parâmetros de consulta especificando a categoria de pesquisa.",
@@ -71,35 +87,34 @@
"SelectDefaultCurrency": "Você pode selecionar a moeda corrente a ser definida como padrão para novos sites.",
"SelectDefaultTimezone": "Você pode selecionar o fuso-horário para ser selecionado como padrão para novos sites.",
"ShowTrackingTag": "Ver código de rastreamento",
- "Sites": "Sites",
"SiteSearchUse": "Você pode utilizar o Matomo para acompanhar e informar o que os visitantes estão procurando no motor de pesquisa interna do seu site.",
- "SiteWithoutDataTitle": "Nenhum dado foi gravado ainda, configure abaixo",
- "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.",
- "SiteWithoutDataMessageDisappears": "Esta mensagem vai desaparecer assim que alguns dados forem rastreados para este site.",
+ "SiteWithoutDataChoosePreferredWay": "Escolha sua maneira preferida de configurar",
+ "SiteWithoutDataDescription": "Você precisa adicionar algum código extra ao seu site ou aplicativo para dispositivos móveis, caso ainda não tenha feito isso. Marque sua opção abaixo ou %1$senvie todas as instruções para um colega de equipe%2$s.",
+ "SiteWithoutDataDetectedGtm": "Também detectamos que você está usando um gerenciador de tags do Google. Se você preferir configurar o Matomo usando GTG, por favor, siga este %2$sguia%3$s.",
+ "SiteWithoutDataDetectedSite": "Detectamos que você está usando um site %1$s. Basta seguir as instruções deste %2$sguia%3$s.",
+ "SiteWithoutDataGoogleTagManager": "Gerenciador de tags do Google",
+ "SiteWithoutDataGoogleTagManagerDescription": "Você pode usar o Matomo com o Gerenciador de tags do Google. Para configurar o Matomo Tracking no Google Tag Manager, siga as instruções deste %1$sguia%2$s.",
"SiteWithoutDataIgnoreMessage": "Não mostrar esta mensagem pela próxima hora",
+ "SiteWithoutDataMatomoTagManager": "Gerenciador de tags Matomo",
+ "SiteWithoutDataMatomoTagManagerNotActive": "Não sabe o que é um Gerenciador de tags? Confira nosso %1$sguia do Gerenciador de tags%2$s. Se você estiver incorporando vários recursos de sites de terceiros em seu site, o acompanhamento de seu site usando o Gerenciador de tags pode ser uma opção melhor para você em comparação com o acompanhamento regular de JavaScript.",
+ "SiteWithoutDataMessageDisappears": "Esta mensagem vai desaparecer assim que alguns dados forem rastreados para este site.",
+ "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.",
+ "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.",
"Timezone": "Fuso horário",
"TrackingSiteSearch": "Acompanhamento de pesquisa interna do site",
"TrackingTags": "Código de rastreamento para %s",
- "Urls": "URLs",
"Type": "Tipo",
"UTCTimeIs": "Hora UTC é %s.",
- "OnlyMatchedUrlsAllowed": "Apenas rastrear visitas e ações quando a URL da ação começar com uma das URLs acima.",
- "OnlyMatchedUrlsAllowedHelp": "Quando ativado, o Matomo só irá rastrear ações internas quando a URL da página for uma das URLs reconhecidas para o seu site. Isso impede que pessoas enviem spams para a sua análise com URLs de outros sites.",
- "OnlyMatchedUrlsAllowedHelpExamples": "O domínio e o caminho devem corresponder exatamente e cada subdomínio válido deve ser especificado separadamente. Por exemplo, quando as URLs são 'http:\/\/example.com\/path' e 'http:\/\/good.example.com', solicitações de rastreamento para http:\/\/example.com\/otherpath' ou 'http:\/\/bad.example.com' são ignoradas.",
+ "Urls": "URLs",
+ "WebsiteCreated": "Website criado",
+ "WebsiteUpdated": "Website atualizado",
"WebsitesManagement": "Gerenciamento de Sites",
"XManagement": "Gerenciar %s",
- "ChooseMeasurableTypeHeadline": "O que você gostaria de medir?",
"YouCurrentlyHaveAccessToNWebsites": "Você possui atualmente acesso a %s sites.",
- "YourCurrentIpAddressIs": "Seu endereço IP atual é %s",
- "DeleteSiteExplanation": "A remoção de um site excluirá todos os dados que foram coletados para ele. Essa ação é permanente e não pode ser desfeita.",
- "EmailInstructionsButton": "Enviar por email estas instruções",
- "EmailInstructionsSubject": "Código de rastreamento do Matomo Analytics",
- "EmailInstructionsDocsPlainText": "Se você quer fazer mais do que rastrear visualizações de páginas, confira a documentação do Matomo em %1$s.",
- "EmailInstructionsGenerateTrackingCode": "Você também pode gerar um código de rastreamento personalizado em %1$s.",
- "EmailInstructionsSiteDetailsHeading": "Detalhes do seu site",
- "EmailInstructionsSiteDetails": "Você irá precisar destes detalhes para usar a API ou SDK para rastrear visitas ao Matomo.",
- "EmailInstructionsYourSiteId": "ID do seu site: %1$s",
- "EmailInstructionsYourTrackingUrl": "Sua URL de rastreamento: %1$s"
+ "YourCurrentIpAddressIs": "Seu endereço IP atual é %s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/lang/sq.json b/plugins/SitesManager/lang/sq.json
index dc2c233ea9..672ef5a071 100644
--- a/plugins/SitesManager/lang/sq.json
+++ b/plugins/SitesManager/lang/sq.json
@@ -1,64 +1,78 @@
{
"SitesManager": {
- "AddSite": "Shtoni sajt të ri",
"AddMeasurable": "Shtoni një të matshme të re",
+ "AddSite": "Shtoni sajt të ri",
"AdvancedTimezoneSupportNotFound": "S’u gjet mbulim i thelluar zonash kohore te PHP-ja juaj (mbuluar nga PHP 5.2 e më të rinj). Mundeni prapëseprapë të zgjidhni dorazi një shmangie UTC.",
- "AliasUrlHelp": "Këshillohet, por s’është e domosdoshme, të jepen URL të ndryshme, një për rresht, që vizitorët tuaj t’i përdorin për të hyrë në këtë sajt. URL-të alias për sajtin nuk kanë për t’u dukur te raporti Sjellës > Sajte. Mbani shënim që s’është e domosdoshme të jepen URL me apo pa 'www', ngaqë Matomo i ka vetvetiu parasysh që të dyja trajtat.",
+ "AliasUrlHelp": "Këshillohet, por s’është e domosdoshme, të jepen URL të ndryshme, një për rresht, që vizitorët tuaj t’i përdorin për të hyrë në këtë sajt. URL-të alias për sajtin nuk kanë për t’u dukur te raporti Sjellës &gt; Sajte. Mbani shënim që s’është e domosdoshme të jepen URL me apo pa 'www', ngaqë Matomo i ka vetvetiu parasysh që të dyja trajtat.",
"ChangingYourTimezoneWillOnlyAffectDataForward": "Ndryshimi i zonës suaj kohore do të prekë vetëm të dhënat pas kësaj e tutje, nuk do të zbatohet për të mëparshmet.",
+ "ChooseMeasurableTypeHeadline": "Ç’do të donit të matnit?",
"Currency": "Monedhë",
"CurrencySymbolWillBeUsedForGoals": "Simboli i monedhës do të shfaqet në krah të të ardhurave nga Objektivat.",
- "CustomizeJavaScriptTracker": "Përshtatni gjurmim JavaScript",
+ "CustomizeJavaScriptTracker": "Përshtatni ndjekje me JavaScript",
"DefaultCurrencyForNewWebsites": "Monedhë Parazgjedhje për sajte të rinj",
"DefaultTimezoneForNewWebsites": "Zonë Kohore Parazgjedhje për sajte të rinj",
"DeleteConfirm": "Jeni i sigurt se doni të hiqet sajti %s?",
+ "DeleteSiteExplanation": "Fshirja e një sajti do të shkaktojë fshirjen e krejt të dhënave regjistër që janë grumbulluar për të. Ky veprim është pakthyeshëm dhe s’mund të zhbëhet.",
+ "DetectingYourSite": "Po pikaset sajti juaj",
"DisableSiteSearch": "Mos ndiq Kërkime në Sajt",
- "EcommerceHelp": "Po u aktivizua, te raporti \"Objektiva\" do të shfaqet një ndarje e re, \"E-tregti\".",
+ "EcommerceHelp": "Po u aktivizua, te raporti “Objektiva” do të shfaqet një ndarje e re, “E-tregti”.",
+ "EmailInstructionsButton": "Dërgoni me email këto udhëzime",
+ "EmailInstructionsDocsPlainText": "Nëse doni të bëni më tepër se ndjekja e parjes së faqeve, ju lutemi, shihni te dokumentimi i Matomo-s në %1$s.",
+ "EmailInstructionsGenerateTrackingCode": "Mund të prodhoni edhe një kod vetjak gjurmimi, te %1$s.",
+ "EmailInstructionsSiteDetails": "Këto hollësi do t’ju duhen për të përdorur API-n ose SDK-ra për ndjekje vizitash nga Matomo.",
+ "EmailInstructionsSiteDetailsHeading": "Hollësitë e Sajtit Tuaj",
+ "EmailInstructionsSubject": "Kod Analizash Matomo Ndjekjeje",
+ "EmailInstructionsYourSiteId": "ID-ja e sajtit tuaj: %1$s",
+ "EmailInstructionsYourTrackingUrl": "URL-ja juaj e gjurmimit: %1$s",
"EnableEcommerce": "Me E-tregti të aktivizuar",
- "EnableSiteSearch": "Ndjekja e Kërkimeve në Sajt është i aktivizuar",
+ "EnableSiteSearch": "Ndjekja e Kërkimeve në Sajt është e aktivizuar",
"ExceptionDeleteSite": "Heqja e këtij sajti s’është e mundur, ngaqë është i vetmi sajt i regjistruar. Së pari, shtoni një sajt të ri, mandej hiqni këtë këtu.",
"ExceptionEmptyName": "Sajti s’mund të jetë i zbrazët.",
- "ExceptionInvalidCurrency": "Monedha \"%1$s\" s’është një nga të vlefshmet. Ju lutemi, jepni një simbol monedhe të vlefshme (p.sh. %2$s).",
- "ExceptionInvalidIPFormat": "IP-ja që duhet përjashtuar \"%1$s\" s’ka format të vlefshëm IP-sh (p.sh. %2$s).",
- "ExceptionInvalidTimezone": "Zona kohore \"%s\" s’është një nga të vlefshmet. Ju lutemi, jepni një zonë kohore të vlefshme.",
+ "ExceptionInvalidCurrency": "Monedha “%1$s” s’është një nga të vlefshmet. Ju lutemi, jepni një simbol monedhe të vlefshme (p.sh., %2$s)",
+ "ExceptionInvalidIPFormat": "IP-ja që duhet përjashtuar “%1$s” s’ka format të vlefshëm IP-sh (p.sh., %2$s).",
+ "ExceptionInvalidTimezone": "Zona kohore “%s” s’është një nga të vlefshmet. Ju lutemi, jepni një zonë kohore të vlefshme.",
"ExceptionInvalidUrl": "Url-ja '%s' s’është URL e vlefshme.",
"ExceptionNoUrl": "Duhet të tregoni të paktën një URL për sajtin.",
"ExcludedIps": "IP të Përjashtuara",
"ExcludedParameters": "Parametra të Përjashtuar",
"ExcludedUserAgents": "Agjentë Përdoruesish të Përjashtuar",
+ "ExtraInformationNeeded": "Që të ujdisni Matomo-n në sistemin tuaj, mund t’ju duhen të dhënat vijuese:",
"Format_Utc": "UTC%s",
"GlobalExcludedUserAgentHelp1": "Jepni listën e agjentëve të përdoruesit që duhen përjashtuar nga ndjekja prej Matomo-s.",
"GlobalExcludedUserAgentHelp2": "Këtë mund ta përdorni për përjashtim bot-esh nga ndjekja.",
- "GlobalExcludedUserAgentHelp3": "Shprehje të rregullta të tilla si %s mbulohen.",
+ "GlobalExcludedUserAgentHelp3": "Mbulohen shprehje të rregullta të tilla si %s.",
"GlobalListExcludedIps": "Listë globale IP-sh të përjashtuara",
"GlobalListExcludedQueryParameters": "Listë globale parametrash URL-sh Kërkese që duhen përjashtuar",
- "GlobalListExcludedUserAgents": "Listë globale agjentësh përdoruesish për përjashtim",
+ "GlobalListExcludedUserAgents": "Listë globale agjentësh përdoruesish që duhen përjashtuar",
"GlobalListExcludedUserAgents_Desc": "Nëse vargu i agjentit të përdoruesit për një vizitor përmban një nga vargjet që përcaktoni, vizitori do të përjashtohet nga Matomo.",
"GlobalSettings": "Rregullime globale",
"GlobalWebsitesSettings": "Rregullime globale për sajte",
+ "HelpExcludedIpAddresses": "Jepni listën e IP-ve, një për rresht, që dëshironi të përjashtohen nga ndjekja prej Matomo-s. Mund të përdorni shkrimin CIDR, p.sh., %1$s, ose mund të përdorni shenja të gjithëpushtetshme, p.sh., %2$s ose %3$s",
"InstallationGuides": "Udhërrëfyes Instalimi",
- "InstallationGuidesIntro": "Furnizojmë udhërrëfyes hap pas hapi që shpjegojnë si të trupëzohet kodi i gjurmimit për disa CMS dhe krijues popullorë sajtesh:",
- "ExtraInformationNeeded": "Që të ujdisni Matomo-n në sistemin tuaj, mund t’ju duhen të dhënat vijuese:",
+ "InstallationGuidesIntro": "Furnizojmë udhërrëfyes të hollësishëm, që shpjegojnë si të trupëzohet kodi i ndjekjes për disa CMS dhe krijues popullorë sajtesh:",
"Integrations": "Integrime",
- "HelpExcludedIpAddresses": "Jepni listën e IP-ve, një për rresht, që dëshironi të përjashtohen nga ndjekja prej Matomo-s. Mund të përdorni shkrimin CIDR, p.sh. %1$s, ose mund të përdorni shenja të gjithëpushtetshme, p.sh., %2$s ose %3$s",
"JsTrackingTagHelp": "Ky është kodi i Ndjekjes JavaScript që duhet përfshirë në krejt faqet tuaja",
"KeepURLFragments": "Ndjekje fragmentesh URL-sh Faqesh",
"KeepURLFragmentsHelp": "Nëse kutiza më poshtë lihet pa shenjë, fragmentet e URL-ve të Faqeve (gjithçka pas %1$s) do të hiqen nga ndjekja: %2$s do të ndiqen si %3$s",
"KeepURLFragmentsHelp2": "Për sajtet individualë, këtë rregullim mund ta anashkaloni më sipër.",
- "KeepURLFragmentsLong": "Mbaji fragmentet e URL-ve të Faqeve kur ndiqen URL Faqesh",
+ "KeepURLFragmentsLong": "Mbaji fragmentet e URL-ve të Faqeve, kur ndiqen URL Faqesh",
"ListOfIpsToBeExcludedOnAllWebsites": "IP-të më poshtë do të përjashtohen në krejt sajtet nga ndjekja.",
"ListOfQueryParametersToBeExcludedOnAllWebsites": "Parametrat për URL-ra Kërkesash më poshtë do të përjashtohen nga URL-të për krejt sajtet.",
- "ListOfQueryParametersToExclude": "Jepni listën e Parametrave për Kërkesë URL, një për rresht, që të përjashtohen prej raportesh URL-sh Faqesh. Shprehje të rregullta të tilla si %s mbulohen.",
+ "ListOfQueryParametersToExclude": "Jepni listën e Parametrave për Kërkesë URL, një për rresht, që të përjashtohen prej raportesh URL-sh Faqesh. Mbulohen shprehje të rregullta të tilla si %s.",
"LogAnalytics": "Analiza Regjistri",
"LogAnalyticsDescription": "Nëse metoda Javascript e ndjekjeve s’është e mundur, si metodë alternative për ndjekjen e përdoruesve të sajtit tuaj mund të %1$spërdorni analizat e regjistrit të shërbyesit%2$s.",
- "MainDescription": "Raportet tuaja Analizash Web lypin sajte! Shtoni, përditësoni, hiqni sajte, dhe shfaqni JavaScript-in për futje në faqet tuaja.",
+ "MainDescription": "Raportet tuaja për Analiza Web lypin sajte! Shtoni, përditësoni, hiqni sajte dhe shfaqni JavaScript-in për futje në faqet tuaja.",
"MenuManage": "Administroni",
"MobileAppsAndSDKs": "Aplikacione dhe SDK-ra për celular",
"MobileAppsAndSDKsDescription": "S’ndiqni ndonjë sajt? Mundeni të ndiqni një aplikacion për celular, ose çfarëdo lloj tjetër aplikacioni që përdor një nga %1$sSDK-të e gatshme%2$s.",
+ "NoWebsites": "S’keni ndonjë sajt për ta administruar.",
"NotAnEcommerceSite": "Jo sajt E-tregtie",
"NotFound": "S’u gjetën sajte për",
- "NoWebsites": "S’keni ndonjë sajt për ta administruar.",
+ "OnlyMatchedUrlsAllowed": "Ndiq vizita dhe veprime vetëm kur URL-ja e veprimit fillon me një nga URL-të më sipër.",
+ "OnlyMatchedUrlsAllowedHelp": "Në u aktivizoftë, Matomo do të ndjekë veprime të brendshme vetëm kur URL-ja e Faqes është një nga URL-të e njohura për sajtin tuaj. Kjo pengon shfrytëzimin e padëshiruar të analizave tuaja përmes URL-sh për sajte të tjerë.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Përkatësia dhe shtegu duhet të përputhen saktësisht dhe çdo nënpërkatësi e vlefshme duhet të specifikohet veçmas. Për shembull, kur URL-të e ditura janë 'http://shembull.com/shteg' dhe 'http://imirë.shembull.com', kërkesat për ndjekje të 'http://shembull.com/shtegtjetër' ose 'http://ikeq.shembull.com' shpërfillen.",
"OnlyOneSiteAtTime": "Mund të përpunoni vetëm një sajt në herë. Ju lutemi, Ruani ose Anuloni ndryshimet tuaja të tanishme te sajti %s.",
- "PiwikOffersEcommerceAnalytics": "Matomo lejon ndjekje & raportim të thelluar Analizash E-tregtie. Mësoni më tepër rreth %1$s Analizash E-tregtie%2$s.",
+ "PiwikOffersEcommerceAnalytics": "Matomo lejon ndjekje &amp; raportim të thelluar Analizash E-tregtie. Mësoni më tepër rreth %1$s Analizash E-tregtie%2$s.",
"PiwikWillAutomaticallyExcludeCommonSessionParameters": "Matomo do t’i përjashtojë vetvetiu parametrat e zakonshëm të sesioneve (%s).",
"PluginDescription": "Administrimi i sajteve ju lejon të shtoni sajt të ri dhe të përpunoni sajte ekzistues.",
"SearchCategoryDesc": "Matomo mund të ndjekë edhe kategorinë e Kërkimit për çdo fjalëkyç kërkimi të brendshëm në sajt.",
@@ -66,55 +80,41 @@
"SearchCategoryParametersDesc": "Mund të jepni një listë parametrash kërkesash që përcaktojnë kategori kërkimesh, ndarë me presje.",
"SearchKeywordLabel": "Parametër kërkese",
"SearchKeywordParametersDesc": "Jepni një listë emrash parametrash kërkese fjalëkyçesh kërkimi në sajt, ndarë me presje.",
- "SearchParametersNote": "Shënim: parametrat Kërkim dhe parametrat Kategori do të përdoren vetëm për sajte që kanë të aktivizuar Kërkimin brenda Sajtit, por që i kanë lënë të zbrazët këta parametra.",
+ "SearchParametersNote": "Shënim: parametrat Kërkim dhe parametrat Kategori do të përdoren vetëm për sajte që kanë të aktivizuar Kërkimin brenda Sajtit, por për të cilët këta parametra janë lënë të zbrazët.",
"SearchParametersNote2": "Për ta çaktivizuar për sajtet e reja Kërkimin te Sajti, lërini të zbrazëta këto dy fusha.",
"SearchUseDefault": "Përdor parametra %1$sparazgjedhje%2$s Kërkimi në Sajt",
"SelectACity": "Përzgjidhni një qytet",
"SelectDefaultCurrency": "Mund të përzgjidhni monedhën parazgjedhje për sajtet e rinj.",
"SelectDefaultTimezone": "Mund të përzgjidhni zonën kohore parazgjedhje për sajtet e rinj.",
"ShowTrackingTag": "Shihni kodin e Ndjekjes",
- "Sites": "Sajte",
"SiteSearchUse": "Mund ta përdorni Matomo-n për të ndjekur dhe raportuar se çfarë kërkojnë vizitorët me motorin e kërkimeve të brendshme në sajtin tuaj .",
- "SiteWithoutDataTitle": "Ende s’ka të dhëna të regjistruara, sistemohuni më poshtë",
- "SiteWithoutDataDescription": "Edhe një hap i vetëm për të ndjekur trafikun tuaj me Matomo-n dhe për të përfituar ide me vlerë. Duhet të shtoni ca kod ekstra te sajti juaj ose aplikacioni juaj për celular, nëse s’e keni bërë tashmë. Shihni mundësinë tuaj më poshtë, ose %1$sdërgojini krejt udhëzimet te dikush në ekip%2$s.",
- "SiteWithoutDataSetupTracking": "Ju lutemi, rregulloni më poshtë %1$skodin e ndjekjes%2$s për sajtin apo aplikacionin tuaj për celular, po qe se s’e keni bërë ende.",
- "SiteWithoutDataMessageDisappears": "Ky mesazh do të zhduket sapo të ketë ndoca të dhëna të ndjekura për këtë sajt.",
- "SiteWithoutDataIgnoreMessage": "Mos e shfaq këtë mesazh për orën pasuese",
- "SiteWithoutDataChoosePreferredWay": "Zgjidhni mënyrën tuaj të parapëlqyer të ujdisjesh",
- "SiteWithoutDataOtherWays": "Mënyra të tjera",
- "SiteWithoutDataOtherIntegrations": "Integrime të tjera",
+ "SiteWithoutDataChoosePreferredWay": "Zgjidhni mënyrën tuaj të parapëlqyer të ujdisjes",
+ "SiteWithoutDataDescription": "Duhet të shtoni ca kod ekstra te sajti juaj ose aplikacioni juaj për celular, nëse s’e keni bërë tashmë. Shihni mundësinë tuaj më poshtë, ose %1$sdërgojini krejt udhëzimet te dikush në ekip%2$s.",
+ "SiteWithoutDataDetectedGtm": "Pikasëm gjithashtu se përdorni një Përgjegjës Google Etiketash. Nëse parapëlqeni ta ujdisni Matomo-n duke përdorur PGE-në, ju lutemi, ndiqni këtë %2$sudhërrëfyes%3$s.",
+ "SiteWithoutDataDetectedSite": "Pikasëm se po përdorni një sajt %1$s. Thjesht ndiqni udhëzimet nga ky %2$sudhërrëfyes%3$s.",
"SiteWithoutDataGoogleTagManager": "Përgjegjës Google Etiketash",
+ "SiteWithoutDataGoogleTagManagerDescription": "Matomo-n mund ta përdorni me Përgjegjësin Google të Etiketa. Për të ujdisur Ndjekjen me Matomo te Përgjegjës Google Etiketash, ndiqni udhëzimet prej këtij %1$sudhërrëfyesi%2$s.",
+ "SiteWithoutDataIgnoreMessage": "Mos e shfaq këtë mesazh për orën pasuese",
"SiteWithoutDataMatomoTagManager": "Përgjegjës Matomo Etiketash",
"SiteWithoutDataMatomoTagManagerNotActive": "S’e dini se ç’është Përgjegjësi i Etiketave? Hidhini një sy udhërrëfyesit tonë %1$sPërgjegjës Etiketash%2$s. Nëse po trupëzoni në sajtin tuaj shumë burime nga sajte palësh të treta, ndjekja e sajtit tuaj përmes Përgjegjësit të Etiketave mund të jetë zgjedhje më e mirë krahasuar me ndjekjen e zakonshme përmes JavaScript-it.",
- "SiteWithoutDataGoogleTagManagerDescription": "Matomo-n mund ta përdorni me Përgjegjësin Google të Etiketa. Për të ujdisur Ndjekjen me Matomo te Përgjegjës Google Etiketash, ndiqni udhëzimet prej këtij %1$sudhërrëfyesi%2$s.",
- "SiteWithoutDataDetectedSite": "Pikasëm se po përdorni një sajt %1$s. Thjesht ndiqni udhëzimet nga ky %2$sudhërrëfyes%3$s.",
- "SiteWithoutDataDetectedGtm": "Pikasëm gjithashtu se përdorni një Përgjegjës Google Etiketash. Nëse parapëlqeni ta ujdisni Matomo-n duke përdorur PGE, ju lutemi, ndiqni këtë %2$sudhërrëfyes%3$s.",
+ "SiteWithoutDataMessageDisappears": "Ky mesazh do të zhduket sapo të ketë ndoca të dhëna të ndjekura për këtë sajt.",
+ "SiteWithoutDataOtherIntegrations": "Integrime të tjera",
+ "SiteWithoutDataOtherWays": "Mënyra të tjera",
+ "SiteWithoutDataSetupTracking": "Ju lutemi, rregulloni më poshtë %1$skodin e ndjekjes%2$s për sajtin apo aplikacionin tuaj për celular, po qe se s’e keni bërë ende.",
+ "SiteWithoutDataTitle": "Edhe një hap i fundit për të ndjekur trafikun tuaj me Matomo-n dhe për të përfituar ide të çmuara",
+ "Sites": "Sajte",
"SuperUserAccessCan": "Një përdorues me hyrje Superpërdoruesi mundet gjithashtu %1$s të caktojë rregullime të përgjithshme%2$s për sajte të rinj.",
"Timezone": "Zonë kohore",
"TrackingSiteSearch": "Ndjekje Kërkimesh Brenda Sajti",
"TrackingTags": "Kod ndjekjeje për %s",
- "Urls": "URL-ra",
"Type": "Lloj",
"UTCTimeIs": "Koha UTC është %s.",
- "OnlyMatchedUrlsAllowed": "Ndiq vizita dhe veprime vetëm kur URL-ja e veprimit fillon me një nga URL-të më sipër.",
- "OnlyMatchedUrlsAllowedHelp": "Në u aktivizoftë, Matomo do të ndjekë veprime të brendshme vetëm kur URL-ja e Faqes është një nga URL-të e njohura për sajtin tuaj. Kjo pengon shfrytëzimin e padëshiruar të analizave tuaja përmes URL-sh për sajte të tjerë.",
- "OnlyMatchedUrlsAllowedHelpExamples": "Përkatësia dhe shtegu duhet të përputhen saktësisht dhe çdo nënpërkatësi e vlefshme duhet të specifikohet veçmas. Për shembull, kur URL-të e ditura janë 'http:\/\/shembull.com\/shteg' dhe 'http:\/\/imirë.shembull.com', kërkesat për ndjekje të 'http:\/\/shembull.com\/shtegtjetër' ose 'http:\/\/ikeq.shembull.com' shpërfillen.",
- "WebsitesManagement": "Administrim Sajtesh",
- "WebsiteUpdated": "Sajti u përditësua",
+ "Urls": "URL-ra",
"WebsiteCreated": "Sajti u krijua",
+ "WebsiteUpdated": "Sajti u përditësua",
+ "WebsitesManagement": "Administrim Sajtesh",
"XManagement": "Administroni %s",
- "ChooseMeasurableTypeHeadline": "Ç’do të donit të matnit?",
"YouCurrentlyHaveAccessToNWebsites": "Deri tani keni hyrje te %s sajte.",
- "YourCurrentIpAddressIs": "Adresa juaj IP e tanishme është %s",
- "DeleteSiteExplanation": "Fshirja e një sajti do të shkaktojë fshirjen e krejt të dhënave regjistër që janë grumbulluar për të. Ky veprim është pakthyeshëm dhe s’mund të zhbëhet.",
- "EmailInstructionsButton": "Dërgoni me email këto udhëzime",
- "EmailInstructionsSubject": "Kod Gjurmimi Analizash Matomo",
- "EmailInstructionsDocsPlainText": "Nëse doni të bëni më tepër se ndjekja e parjes së faqeve, ju lutemi, shihni te dokumentimi i Matomo-s në %1$s.",
- "EmailInstructionsGenerateTrackingCode": "Mund të prodhoni edhe një kod vetjak gjurmimi, te %1$s.",
- "EmailInstructionsSiteDetailsHeading": "Hollësitë e Sajtit Tuaj",
- "EmailInstructionsSiteDetails": "Këto hollësi do t’ju duhen për të përdorur API-n ose SDK-ra për ndjekje vizitash nga Matomo.",
- "EmailInstructionsYourSiteId": "ID-ja e sajtit tuaj: %1$s",
- "EmailInstructionsYourTrackingUrl": "URL-ja juaj e gjurmimit: %1$s",
- "DetectingYourSite": "Po pikaset sajti juaj"
+ "YourCurrentIpAddressIs": "Adresa juaj IP e tanishme është %s"
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/lang/tr.json b/plugins/SitesManager/lang/tr.json
index cbe335577c..5a0781278c 100644
--- a/plugins/SitesManager/lang/tr.json
+++ b/plugins/SitesManager/lang/tr.json
@@ -101,6 +101,8 @@
"SiteWithoutDataOtherIntegrations": "Diğer bütünleştirmeler",
"SiteWithoutDataOtherWays": "Diğer yöntemler",
"SiteWithoutDataSetupTracking": "Henüz yapmadıysanız lütfen aşağıdaki %1$sizleme kodunu%2$s web sitesine ya da mobil uygulamanıza kurun.",
+ "SiteWithoutDataSinglePageApplication": "Tek sayfalık uygulama ya da aşamalı web uygulaması",
+ "SiteWithoutDataSinglePageApplicationDescription": "Tek sayfalık uygulamayı ya da aşamalı web uygulamasını izlemek için. %1$sRehberimize%2$s bakın.",
"SiteWithoutDataTitle": "Matomo ile trafiğinizi izlemek ve değerli bilgiler elde etmek için son bir adım kaldı",
"Sites": "Web siteleri",
"SuperUserAccessCan": "Süper kullanıcılar ayrıca yeni web siteleri için %1$sgenel ayarları%2$s yönetebilir.",
diff --git a/plugins/SitesManager/templates/_displayJavascriptCode.twig b/plugins/SitesManager/templates/_displayJavascriptCode.twig
index 52cced16af..d2dabea355 100644
--- a/plugins/SitesManager/templates/_displayJavascriptCode.twig
+++ b/plugins/SitesManager/templates/_displayJavascriptCode.twig
@@ -1,6 +1,6 @@
<div class="trackingHelpHeader">
<h2>{{ 'SitesManager_TrackingTags'|translate(displaySiteName) }}</h2>
- <a class="btn"
+ <a class="btn"
href="mailto:?subject={{ 'SitesManager_EmailInstructionsSubject'|translate|url_encode|e('html_attr') }}&body={{ emailBody|url_encode|e('html_attr') }}">
{{ 'SitesManager_EmailInstructionsButton'|translate }}
</a>
@@ -35,6 +35,10 @@
<h3>{{ 'CoreAdminHome_HttpTrackingApi'|translate }}</h3>
<p>{{ 'CoreAdminHome_HttpTrackingApiDescription'|translate('<a href="https://developer.matomo.org/api-reference/tracking-api" rel="noreferrer noopener" target="_blank">','</a>')|raw }}</p>
+
+ <h3>{{ 'SitesManager_SiteWithoutDataSinglePageApplication'|translate }}</h3>
+ <p>{{ 'SitesManager_SiteWithoutDataSinglePageApplicationDescription'|translate('<a target="_blank" rel="noreferrer noopener" href="https://developer.matomo.org/guides/spa-tracking">','</a>')|raw }}</p>
+
<p></p>
{{ postEvent('Template.endTrackingHelpPage') }}
diff --git a/plugins/SitesManager/templates/_siteWithoutDataTabs.twig b/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
index 6e50deb89e..5604415723 100644
--- a/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
+++ b/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
@@ -80,6 +80,9 @@
<h3>{{ 'SitesManager_SiteWithoutDataGoogleTagManager'|translate }}</h3>
<p>{{ 'SitesManager_SiteWithoutDataGoogleTagManagerDescription'|translate('<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager">','</a>')|raw }}</p>
+ <h3>{{ 'SitesManager_SiteWithoutDataSinglePageApplication'|translate }}</h3>
+ <p>{{ 'SitesManager_SiteWithoutDataSinglePageApplicationDescription'|translate('<a target="_blank" rel="noreferrer noopener" href="https://developer.matomo.org/guides/spa-tracking">','</a>')|raw }}</p>
+
{% if googleAnalyticsImporterMessage is defined %}
{{ googleAnalyticsImporterMessage|raw }}
{% endif %}
diff --git a/plugins/SitesManager/templates/_trackingCodeEmail.twig b/plugins/SitesManager/templates/_trackingCodeEmail.twig
index 804065ec4b..922d3c021a 100644
--- a/plugins/SitesManager/templates/_trackingCodeEmail.twig
+++ b/plugins/SitesManager/templates/_trackingCodeEmail.twig
@@ -33,7 +33,11 @@ https://matomo.org/integrate/#programming-language-platforms-and-frameworks
** {{ 'CoreAdminHome_HttpTrackingApi'|translate }}
{{ 'CoreAdminHome_HttpTrackingApiDescription'|translate('', '') }}
https://developer.matomo.org/api-reference/tracking-api
-
+
+** {{ 'SitesManager_SiteWithoutDataSinglePageApplication'|translate }}
+{{ 'CoreAdminHome_SinglePageApplicationDescription'|translate('', '') }}
+https://developer.matomo.org/guides/spa-tracking
+
** {{ 'SitesManager_EmailInstructionsSiteDetailsHeading'|translate }}
{{ 'SitesManager_EmailInstructionsSiteDetails'|translate }}
* {{ 'SitesManager_EmailInstructionsYourSiteId'|translate(idSite) }}
diff --git a/plugins/SitesManager/tests/Fixtures/ManySites.php b/plugins/SitesManager/tests/Fixtures/ManySites.php
index a4a25fc0d7..f070a53174 100644
--- a/plugins/SitesManager/tests/Fixtures/ManySites.php
+++ b/plugins/SitesManager/tests/Fixtures/ManySites.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\Plugins\SitesManager\tests\Fixtures;
-use Piwik\Plugin;
use Piwik\Plugins\MobileAppMeasurable;
-use Piwik\Plugins\WebsiteMeasurable;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/SitesManager/tests/Integration/SitesManagerTest.php b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
index f4605122f9..2dcbba313a 100644
--- a/plugins/SitesManager/tests/Integration/SitesManagerTest.php
+++ b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\SitesManager\tests\Integration;
use Piwik\Cache;
-use Piwik\Archive\ArchiveInvalidator;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
diff --git a/plugins/SitesManager/tests/Unit/APITest.php b/plugins/SitesManager/tests/Unit/APITest.php
index 267f6fd9c8..15b46171ac 100644
--- a/plugins/SitesManager/tests/Unit/APITest.php
+++ b/plugins/SitesManager/tests/Unit/APITest.php
@@ -21,7 +21,7 @@ use Piwik\Tests\Framework\Fixture;
class APITest extends \PHPUnit\Framework\TestCase
{
/**
- * @var Api
+ * @var API
*/
private $api;
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.js b/plugins/SitesManager/vue/dist/SitesManager.umd.js
index 990d04d64b..f1bdf41c6b 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.js
@@ -295,7 +295,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=3a67fc1f
+// 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=791fd0ea
var _hoisted_1 = {
class: "SitesManager",
@@ -461,7 +461,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=3a67fc1f
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=791fd0ea
// 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=1fc4f3b2
@@ -1603,7 +1603,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
isAllowed: true,
measurableType: type
};
- external_CoreHome_["Matomo"].postEvent('SitesManager.initAddSite', parameters); // TODO: test this
+ external_CoreHome_["Matomo"].postEvent('SitesManager.initAddSite', parameters);
if (parameters && !parameters.isAllowed) {
return;
@@ -1768,7 +1768,12 @@ SitesManagementvue_type_script_lang_ts.render = render
component: SitesManagement,
scope: {},
directiveName: 'matomoSitesManagement'
-}));
+})); // sitesManagerAPI no longer exists, but it is still referenced by a premium feature. the feature
+// doesn't actually use it though so we can just create an empty object for an adapter.
+
+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=1bcd889c
var ManageGlobalSettingsvue_type_template_id_1bcd889c_hoisted_1 = {
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
index 60f1c2fee0..d6f182fb63 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
@@ -11,7 +11,7 @@
* @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"],j=Object(l["createElementVNode"])("br",null,null,-1),O=["innerHTML"],v={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,[j,Object(l["createElementVNode"])("span",{innerHTML:e.superUserAccessMessage},null,8,O)],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",v,[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"],G={class:"paging"},U=["disabled"],k={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",G,[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",k,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,U),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(){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],je={key:1},Oe={class:"form-group row"},ve={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",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["createElementVNode"])("div",ve,[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 Ge(e,t){return Be(e)||Ie(e,t)||ke(e,t)||Ue()}function Ue(){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 ke(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"],j=Object(l["createElementVNode"])("br",null,null,-1),O=["innerHTML"],v={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,[j,Object(l["createElementVNode"])("span",{innerHTML:e.superUserAccessMessage},null,8,O)],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",v,[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"],G={class:"paging"},k=["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",G,[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,k),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(){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],je={key:1},Oe={class:"form-group row"},ve={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",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["createElementVNode"])("div",ve,[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 Ge(e,t){return Be(e)||Ie(e,t)||Ue(e,t)||ke()}function ke(){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}
/*!
* Matomo - free/libre analytics platform
*
@@ -29,13 +29,13 @@ 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
- */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings}))),this.fetchGlobalSettings()}return dt(e,[{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=Object(r["lazyInitSingleton"])(mt),pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),console.log("here?"),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt,ft=(Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"}),{class:"SitesManager"}),St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),jt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},Ot=Object(l["createElementVNode"])("br",null,null,-1),vt=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"],Gt={class:"alert alert-info"};
+ */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings}))),this.fetchGlobalSettings()}return dt(e,[{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=Object(r["lazyInitSingleton"])(mt),pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),console.log("here?"),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Ut(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",jt,[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),Ot,vt,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",Gt,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 kt=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;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(" ")}}});kt.render=Ut;var Lt=kt;
+ */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),jt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},Ot=Object(l["createElementVNode"])("br",null,null,-1),vt=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"],Gt={class:"alert alert-info"};function kt(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",jt,[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),Ot,vt,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",Gt,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;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=kt;var Lt=Ut;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.adapter.ts b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.adapter.ts
index bf8c8fe313..aaa8ef85fd 100644
--- a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.adapter.ts
+++ b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.adapter.ts
@@ -13,3 +13,7 @@ export default createAngularJsAdapter({
scope: {},
directiveName: 'matomoSitesManagement',
});
+
+// sitesManagerAPI no longer exists, but it is still referenced by a premium feature. the feature
+// doesn't actually use it though so we can just create an empty object for an adapter.
+window.angular.module('piwikApp').factory('sitesManagerAPI', () => ({}));
diff --git a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
index da17d103a5..a317352814 100644
--- a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
+++ b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
@@ -307,7 +307,7 @@ export default defineComponent({
measurableType: type,
};
- Matomo.postEvent('SitesManager.initAddSite', parameters); // TODO: test this
+ Matomo.postEvent('SitesManager.initAddSite', parameters);
if (parameters && !parameters.isAllowed) {
return;
diff --git a/plugins/TagManager b/plugins/TagManager
-Subproject f145a806d887b2ef792f52502b05530f23814b8
+Subproject 3daf95b70bc055d2d7c4134878d2549c35c1d6b
diff --git a/plugins/TasksTimetable b/plugins/TasksTimetable
-Subproject b94e6b4c762e9dc440ee59ff0f95df3271c4db2
+Subproject 0acda040db7341d84f6738ec165feaf60433520
diff --git a/plugins/Tour/lang/ca.json b/plugins/Tour/lang/ca.json
index 7a69bd9b89..327118136f 100644
--- a/plugins/Tour/lang/ca.json
+++ b/plugins/Tour/lang/ca.json
@@ -1,6 +1,55 @@
{
"Tour": {
+ "AddAnnotation": "Afegiu una anotació",
+ "AddReport": "Afegiu un informe programat",
+ "AddSegment": "Afegiu un segment",
+ "AddUser": "Afegiu un altre usuari",
+ "AddWebsite": "Afegiu un altre lloc web",
+ "BecomeMatomoExpert": "Converteix-te en un expert en Matomo",
+ "BrowseMarketplace": "Exploreu el mercat",
+ "ChallengeCompleted": "Enhorabona, has completat aquest repte.",
+ "ChangeVisualisation": "Canvieu una visualització",
+ "ChangeVisualisationDescription": "Visualitzeu un informe i seleccioneu la icona de visualització a la part inferior d'un informe per veure el mateix informe en una visualització diferent.",
+ "CompletionMessage": "Heu completat tots els reptes. Doneu-vos un copet a l'esquena.",
+ "CompletionTitle": "Ben fet!",
+ "ConfigureGeolocation": "Configura la geolocalització",
+ "ConfigureGeolocationDescription": "Assegureu-vos que la ubicació dels vostres visitants es detecti correctament.",
+ "CustomiseDashboard": "Personalitza el tauler",
+ "CustomiseDashboardDescription": "Podeu afegir ginys nous al vostre tauler de control per assegurar-vos que informa de totes les vostres mètriques més importants.",
+ "DefineGoal": "Afegeix un objectiu",
+ "DefineGoalDescription": "El seguiment de conversions és una manera fantàstica d'identificar si esteu aconseguint els vostres objectius empresarials actuals, identificar nous objectius, veure i analitzar el vostre rendiment i aprendre a augmentar les vostres conversions, els percentatges de conversió i els ingressos per visita.",
+ "DisableBrowserArchiving": "Desactiveu l'arxivat del navegador per obtenir un millor rendiment",
+ "EmbedTrackingCode": "Insereix el codi de seguiment",
"Engagement": "Compromís",
- "CompletionTitle": "Ben fet!"
+ "FlattenActions": "Alliseu un informe de pàgina",
+ "FlattenActionsDescription": "Aneu a Comportament =&gt; Pàgines i feu clic a la part inferior de l'informe a la icona de l'engranatge per allilsar l'informe. Un informe allisat canvia la jerarquia d'un informe agrupat a una llista.",
+ "MatomoBeginner": "Principiant Matomo",
+ "MatomoExpert": "Expert Matomo",
+ "MatomoIntermediate": "Intermedi Matomo",
+ "MatomoProfessional": "Professional Matomo",
+ "MatomoTalent": "Talent Matomo",
+ "NextChallenges": "Propers reptes",
+ "OnlyVisibleToSuperUser": "Només tu com a %1$sSuper Usuari%2$s pots veure aquest giny.",
+ "Part1Title": "Benvingut a Matomo %1$s. Aquest giny us ajudarà a convertir-vos en un expert en Matomo en molt poc temps.",
+ "Part2Title": "Segueix així %1$s! Estàs en bon camí per convertir-te en un expert en Matomo.",
+ "Part3Title": "Gran progrés %1$s! Si continues així, seràs un expert en poc temps!",
+ "Part4Title": "Gran progrés %1$s! Només uns quants reptes més per acabar.",
+ "PluginDescription": "Converteix-te en un expert en Matomo en molt poc temps completant reptes que et familiaritzin amb Matomo.",
+ "PreviousChallenges": "Reptes previs",
+ "RowEvolution": "Evolució de les files",
+ "SelectDateRange": "Escolliu un interval de dates",
+ "SelectDateRangeDescription": "Escolliu un interval de dates en el calendari.",
+ "SetupX": "Configuració %s",
+ "ShareAllChallengesCompleted": "Acabo de desbloquejar l'assoliment %1$s completant tots els reptes de Matomo.",
+ "ShareYourAchievementOn": "Comparteix el teu assoliment a %1$s.",
+ "SkipThisChallenge": "Omet aquest repte",
+ "StatusLevel": "Actualment ets un %1$s. Completa %2$s reptes més i et convertiràs en un %3$s.",
+ "Tour": "Visita",
+ "UploadLogo": "Carregueu el vostre logotip",
+ "ViewRowEvolutionDescription": "L'evolució de la fila us mostra les dades de mètriques actuals i anteriors de qualsevol fila de qualsevol informe.",
+ "ViewVisitorProfileDescription": "El registre de visitants us ajuda a entendre el comportament individual dels vostres visitants resumint i enumerant les visites dels vostres visitants.",
+ "ViewVisitsLogDescription": "El registre de visites us mostra totes les visites i accions individuals que cada visitant ha fet al vostre lloc.",
+ "ViewX": "Vista %s",
+ "YouCanCallYourselfExpert": "Ara pots anomenar-te un autèntic %1$sMatomo Expert%2$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Tour/lang/sq.json b/plugins/Tour/lang/sq.json
index 11d1d4a72a..02202c76cb 100644
--- a/plugins/Tour/lang/sq.json
+++ b/plugins/Tour/lang/sq.json
@@ -1,55 +1,55 @@
{
"Tour": {
- "PluginDescription": "Bëhuni menjëherë një Ekspert Matomo-je duke plotësuar hapat që ju bëjnë familjar me Matomo-n.",
- "Tour": "Tur",
- "Engagement": "Angazhim",
- "UploadLogo": "Ngarkoni logon tuaj",
- "AddUser": "Shtoni një përdorues tjetër",
- "AddWebsite": "Shtoni një sajt tjetër",
+ "AddAnnotation": "Shtoni një shënim",
"AddReport": "Shtoni një raport të planifikuar",
"AddSegment": "Shtoni një segment",
- "AddAnnotation": "Shtoni një shënim",
+ "AddUser": "Shtoni një përdorues tjetër",
+ "AddWebsite": "Shtoni një sajt tjetër",
+ "BecomeMatomoExpert": "Bëhuni Ekspert Matomo-je",
"BrowseMarketplace": "Shfletoni në Marketplace",
- "PreviousChallenges": "Hapa të mëparshëm",
- "NextChallenges": "Hapa pasues",
- "RowEvolution": "Evolucion Rreshtash",
- "ViewX": "Shihni %s",
- "SetupX": "Ujdisje e %s",
- "SelectDateRange": "Përzgjidhni një interval datash",
- "SelectDateRangeDescription": "Përzgjidhni në kalendar një interval datash",
+ "ChallengeCompleted": "Përgëzime, e plotësuat këtë hap.",
"ChangeVisualisation": "Ndryshoni vizualizim",
"ChangeVisualisationDescription": "Shihni një raport dhe përzgjidhni ikonën e vizualizimeve, në fund të një raporti, për ta parë të njëjtin raport nën një vizualizim tjetër.",
- "FlattenActions": "Sheshojeni raportin e një faqeje",
- "FlattenActionsDescription": "Shkoni te Sjellje => Faqe dhe klikoni në fund të raportit mbi ikonën ingranazh që të sheshohet raporti. Një raport i sheshuar e ndryshon hierarkinë nga raport i grupuar në listë.",
- "ViewRowEvolutionDescription": "Evoluimi i rreshtit ju shfaq të dhëna të dikurshme & të tanishme matjesh për çfarëdo rreshti në çfarëdo raport.",
- "ViewVisitsLogDescription": "Regjistri i vizitave ju shfaq krejt vizitat dhe veprimet individuale që kreu çdo vizitor në sajtin tuaj.",
- "ViewVisitorProfileDescription": "Regjistri i vizitorëve ju ndihmon të kuptoni sjelljen individuale të vizitorëve tuaj duke përmbledhur dhe shfaqur vizitat e tyre.",
- "ShareAllChallengesCompleted": "Sapo kapët arritjen %1$s duke plotësuar krejt hapat për Matomo-n.",
- "ChallengeCompleted": "Përgëzime, e plotësuat këtë hap.",
- "BecomeMatomoExpert": "Bëhuni Ekspert Matomo-je",
- "YouCanCallYourselfExpert": "Tani mund ta quani veten një %1$sEkspert Matomo-je%2$s të vërtetë.",
- "StatusLevel": "Jeni një %1$s. Plotësoni %2$s hapa më tepër dhe bëheni një %3$s.",
- "ConfigureGeolocationDescription": "Siguroni që vendndodhja e vizitorëve tuaj të pikaset saktë.",
- "DisableBrowserArchiving": "Për punim më të mirë, çaktivizoni arkivim shfletuesi",
- "SkipThisChallenge": "Anashkaloje këtë hap",
- "ShareYourAchievementOn": "Tregojuni arritjen tuaj në %1$s.",
- "MatomoBeginner": "Fillestar Matomo-je",
- "MatomoIntermediate": "Mesatar Matomo-je",
- "MatomoTalent": "Talent Matomo-je",
- "MatomoProfessional": "Profesionist Matomo-je",
- "MatomoExpert": "Eskpert Matomo-je",
+ "CompletionMessage": "Keni plotësuar krejt hapat. Rrihini shpatullat vetes.",
+ "CompletionTitle": "Ju lumtë!",
"ConfigureGeolocation": "Formësoni gjeovendëzimin",
+ "ConfigureGeolocationDescription": "Siguroni që vendndodhja e vizitorëve tuaj të pikaset saktë.",
"CustomiseDashboard": "Përshtatni pultin",
"CustomiseDashboardDescription": "Te Pulti juaj mund të shtoni widget-e të rinj, për të siguruar që ju raporton krejt të dhënat tuaja më të rëndësishme.",
"DefineGoal": "Shtoni një synim",
"DefineGoalDescription": "Ndjekja e shndërrimeve është një mënyrë e fuqishme për të identifikuar nëse po i arrini objektivat tuaj të biznesit, për të identifikuar objektiva të reja, të shihni dhe analizoni si po ecni, dhe të mësoni si të shtoni nivelin e shndërrimeve, shkallë shndërrimesh dhe të ardhura për vizitë.",
+ "DisableBrowserArchiving": "Për punim më të mirë, çaktivizoni arkivim shfletuesi",
"EmbedTrackingCode": "Trupëzoni kod gjurmimesh",
- "CompletionTitle": "Ju lumtë!",
- "CompletionMessage": "Keni plotësuar krejt hapat. Rrihini shpatullat vetes.",
+ "Engagement": "Angazhim",
+ "FlattenActions": "Sheshojeni raportin e një faqeje",
+ "FlattenActionsDescription": "Shkoni te Sjellje =&gt; Faqe dhe klikoni në fund të raportit mbi ikonën ingranazh që të sheshohet raporti. Një raport i sheshuar e ndryshon hierarkinë nga raport i grupuar në listë.",
+ "MatomoBeginner": "Fillestar Matomo-je",
+ "MatomoExpert": "Eskpert Matomo-je",
+ "MatomoIntermediate": "Mesatar Matomo-je",
+ "MatomoProfessional": "Profesionist Matomo-je",
+ "MatomoTalent": "Talent Matomo-je",
+ "NextChallenges": "Hapa pasues",
+ "OnlyVisibleToSuperUser": "Këtë mund ta shihni vetëm ju si %1$sSuperpërdorues%2$s.",
"Part1Title": "Mirë se vini te Matomo %1$s. Këto hapa do t’ju ndihmojnë të bëheni ekspert Matomo-je pa humbur kohë.",
"Part2Title": "Vazhdoni kështu, %1$s! Jeni në rrugë të mbarë për t’u bërë një ekspert Matomo-je.",
"Part3Title": "Ecuri e bukur, %1$s! Nëse vazhdoni kështu, do të bëheni pa humbur kohë ekspert!",
"Part4Title": "Ecuri e bukur, %1$s! Vetëm pak hapa akoma për t’u plotësuar.",
- "OnlyVisibleToSuperUser": "Këtë mund ta shihni vetëm ju si %1$sSuperpërdorues%2$s."
+ "PluginDescription": "Bëhuni menjëherë një Ekspert Matomo-je duke plotësuar hapat që ju bëjnë familjar me Matomo-n.",
+ "PreviousChallenges": "Hapa të mëparshëm",
+ "RowEvolution": "Evolucion Rreshtash",
+ "SelectDateRange": "Përzgjidhni një interval datash",
+ "SelectDateRangeDescription": "Përzgjidhni në kalendar një interval datash.",
+ "SetupX": "Ujdisje e %s",
+ "ShareAllChallengesCompleted": "Sapo kapët arritjen %1$s duke plotësuar krejt hapat për Matomo-n.",
+ "ShareYourAchievementOn": "Tregojuni arritjen tuaj në %1$s.",
+ "SkipThisChallenge": "Anashkaloje këtë hap",
+ "StatusLevel": "Jeni një %1$s. Plotësoni %2$s hapa më tepër dhe bëheni një %3$s.",
+ "Tour": "Tur",
+ "UploadLogo": "Ngarkoni logon tuaj",
+ "ViewRowEvolutionDescription": "Evoluimi i rreshtit ju shfaq të dhëna të dikurshme &amp; të tanishme matjesh për çfarëdo rreshti në çfarëdo raport.",
+ "ViewVisitorProfileDescription": "Regjistri i vizitorëve ju ndihmon të kuptoni sjelljen individuale të vizitorëve tuaj duke përmbledhur dhe shfaqur vizitat e tyre.",
+ "ViewVisitsLogDescription": "Regjistri i vizitave ju shfaq krejt vizitat dhe veprimet individuale që kreu çdo vizitor në sajtin tuaj.",
+ "ViewX": "Shihni %s",
+ "YouCanCallYourselfExpert": "Tani mund ta quani veten një %1$sEkspert Matomo-je%2$s të vërtetë."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Tour/lang/tl.json b/plugins/Tour/lang/tl.json
index a73ffbd5e7..535f34d33b 100644
--- a/plugins/Tour/lang/tl.json
+++ b/plugins/Tour/lang/tl.json
@@ -1,5 +1,6 @@
{
"Tour": {
- "Engagement": "Engagement"
+ "Engagement": "Engagement",
+ "PluginDescription": "Maging isang Matomo Expert sa lalong madaling panahon sa pamamagitan ng pagkumpleto ng mga hamon na nagiging pamilyar sa iyo sa Matomo."
}
-} \ No newline at end of file
+}
diff --git a/plugins/TrackingSpamPrevention b/plugins/TrackingSpamPrevention
-Subproject a632296b16ebacc960b30625c50c2955fbaff55
+Subproject 30499b34582e2b3547aaef3074779b91bdc8aa0
diff --git a/plugins/Transitions/API.php b/plugins/Transitions/API.php
index 0dc1c726c5..d082013af6 100644
--- a/plugins/Transitions/API.php
+++ b/plugins/Transitions/API.php
@@ -21,7 +21,6 @@ use Piwik\Db;
use Piwik\Metrics;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\Actions\Actions;
use Piwik\Plugins\Actions\ArchivingHelper;
use Piwik\Plugins\Live\Model;
use Piwik\RankingQuery;
@@ -326,7 +325,7 @@ class API extends \Piwik\Plugin\API
*
* @param $idaction
* @param $actionType
- * @param Logaggregator $logAggregator
+ * @param LogAggregator $logAggregator
* @param $limitBeforeGrouping
* @return DataTable
*/
diff --git a/plugins/Transitions/Categories/TransitionsSubcategory.php b/plugins/Transitions/Categories/TransitionsSubcategory.php
index e58c992d1d..47d8be933b 100644
--- a/plugins/Transitions/Categories/TransitionsSubcategory.php
+++ b/plugins/Transitions/Categories/TransitionsSubcategory.php
@@ -20,6 +20,6 @@ class TransitionsSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('Transitions_TransitionsSubcategoryHelp1') . '</p>'
- . '<p><a href="https://matomo.org/docs/transitions/" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Transitions_TransitionsSubcategoryHelp2') . '</a></p>';
+ . '<p><a href="https://matomo.org/docs/transitions/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank">' . Piwik::translate('Transitions_TransitionsSubcategoryHelp2') . '</a></p>';
}
}
diff --git a/plugins/Transitions/Widgets/GetTransitions.php b/plugins/Transitions/Widgets/GetTransitions.php
index 0c1cdf3e46..5825561deb 100644
--- a/plugins/Transitions/Widgets/GetTransitions.php
+++ b/plugins/Transitions/Widgets/GetTransitions.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\Transitions\Widgets;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugins\Transitions\Controller;
use Piwik\Widget\Widget;
use Piwik\Widget\WidgetConfig;
diff --git a/plugins/Transitions/lang/ca.json b/plugins/Transitions/lang/ca.json
index 5342782ba6..53671bfda4 100644
--- a/plugins/Transitions/lang/ca.json
+++ b/plugins/Transitions/lang/ca.json
@@ -1,28 +1,42 @@
{
"Transitions": {
+ "AvailableInOtherReports": "Ho sabies? Les transicions també estan disponibles com a acció de fila als informes següents:",
+ "AvailableInOtherReports2": "Simplement passeu el cursor per una fila en qualsevol d'aquests informes i feu clic a la icona de transició %s per iniciar-lo.",
"BouncesInline": "%s rebots",
"DirectEntries": "Entrades directes",
"ErrorBack": "Ves a l'acció anterior",
"ExitsInline": "%s surts",
+ "FeatureDescription": "Transitions us ofereix un informe que mostra el què han fet els vostres visitants directament abans i després de veure una pàgina determinada. Aquesta pàgina explicarà com accedir, entendre i utilitzar el potent informe Transicions.",
"FromCampaigns": "De campanyes",
"FromPreviousPages": "De pàgines internes",
"FromPreviousPagesInline": "%s de pàgines internes",
"FromPreviousSiteSearches": "De la cerca interna",
"FromPreviousSiteSearchesInline": "%s de la cerques internes",
"FromSearchEngines": "De cercadors",
+ "FromSocialNetworks": "De Xarxes Socials",
"FromWebsites": "De llocs web",
"IncomingTraffic": "Tràfic entrant",
"LoopsInline": "%s refrescos de pàgina",
"NoDataForAction": "No hi ha informació per %s",
"NoDataForActionDetails": "O l'acció no ha estat vista cap vegada durant el període %s o és invàlida.",
+ "NumDownloads": "%s descàrregues",
+ "NumOutlinks": "%s enllaços sortints",
+ "NumPageviews": "%s pàgines vistes",
"OutgoingTraffic": "Tràfic surtint",
+ "PageURLTransitions": "Transicions d'URL de pàgina",
+ "PeriodNotAllowed": "Període de temps no permès",
+ "PeriodNotAllowedDetails": "Aquesta funció no està disponible per a aquest període, prova de seleccionar un període amb menys dies",
+ "PluginDescription": "Informa de les accions anteriors i posteriors per a cada URL de pàgina en un informe de Transicions nou, disponible als informes d'Accions mitjançant una icona nova.",
"ShareOfAllPageviews": "Aquesta pàgina ha tingut %1$s visites (%2$s de totes les visites)",
"ToFollowingPages": "A pàgines internes",
"ToFollowingPagesInline": "%s a pàgines internes",
"ToFollowingSiteSearches": "Cerques internes",
"ToFollowingSiteSearchesInline": "%s cerques internes",
+ "TopX": "Top %s d'etiquetes",
+ "Transitions": "Transicions",
+ "TransitionsSubcategoryHelp1": "Transitions us ofereix un informe que mostra el què han fet els vostres visitants directament abans i després de veure una pàgina determinada. Aquesta pàgina explicarà com accedir, entendre i utilitzar el potent informe Transicions.",
+ "TransitionsSubcategoryHelp2": "Més detalls",
"XOfAllPageviews": "%s de totes les visualitzacions d'aquesta pàgina",
- "XOutOfYVisits": "%1$s (de %2$s)",
- "TransitionsSubcategoryHelp2": "Més detalls"
+ "XOutOfYVisits": "%1$s (de %2$s)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Transitions/lang/id.json b/plugins/Transitions/lang/id.json
index d0994d699a..0226ed074e 100644
--- a/plugins/Transitions/lang/id.json
+++ b/plugins/Transitions/lang/id.json
@@ -4,7 +4,6 @@
"DirectEntries": "Masukan Langsung",
"ErrorBack": "Kembali ke aksi sebelumnya",
"ExitsInline": "%s keluar",
- "NumDownloads": "%s unduhan",
"FromCampaigns": "Dari Kampanye",
"FromPreviousPages": "Dari Halaman Dalam",
"FromPreviousPagesInline": "%s dari halaman dalam",
@@ -16,14 +15,17 @@
"LoopsInline": "%s halam dimuat ulang",
"NoDataForAction": "Tidak tersedia data untuk %s",
"NoDataForActionDetails": "Tidak ada tindakan memiliki tampilan halaman selama periode %s atau ini tidak sahih.",
+ "NumDownloads": "%s unduhan",
+ "NumOutlinks": "%s tautan luar",
+ "NumPageviews": "%s tampilan halaman",
"OutgoingTraffic": "Lalu lintas keluar",
"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)",
- "TransitionsSubcategoryHelp2": "Selengkapnya"
+ "XOutOfYVisits": "%1$s (di luar dari %2$s)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Transitions/lang/pt-br.json b/plugins/Transitions/lang/pt-br.json
index b67ccddf53..6152f3d2b9 100644
--- a/plugins/Transitions/lang/pt-br.json
+++ b/plugins/Transitions/lang/pt-br.json
@@ -1,17 +1,12 @@
{
"Transitions": {
+ "AvailableInOtherReports": "Você sabia? Transições também está disponível como uma ação de linha nos seguintes relatórios:",
+ "AvailableInOtherReports2": "Passe o mouse sobre qualquer um desses relatórios e clique no ícone de transição %s para abri-lo.",
"BouncesInline": "%s rejeições",
"DirectEntries": "Entradas diretas",
- "Transitions": "Transições",
"ErrorBack": "Voltar para a ação anterior",
"ExitsInline": "%s saídas",
- "NumPageviews": "%s exibições de página",
- "NumDownloads": "%s baixados",
- "NumOutlinks": "%s links externos",
- "TopX": "%s principais rótulos",
"FeatureDescription": "Transições mostra um relatório de o que seus visitantes fizeram imediatamente antes e depois de visualizarem uma página específica. Esta página explicará como acessar, entender e usar o poderoso relatório Transições.",
- "AvailableInOtherReports": "Você sabia? Transições também está disponível como uma ação de linha nos seguintes relatórios:",
- "AvailableInOtherReports2": "Passe o mouse sobre qualquer um desses relatórios e clique no ícone de transição %s para abri-lo.",
"FromCampaigns": "De campanhas",
"FromPreviousPages": "De páginas internas",
"FromPreviousPagesInline": "%s de páginas internas",
@@ -24,17 +19,24 @@
"LoopsInline": "%s atualizações de página",
"NoDataForAction": "Não há dados para %s",
"NoDataForActionDetails": "Ou a ação não tinha visualizações de página durante o período de %s ou é inválido.",
+ "NumDownloads": "%s baixados",
+ "NumOutlinks": "%s links externos",
+ "NumPageviews": "%s exibições de página",
"OutgoingTraffic": "Tráfego de saída",
+ "PageURLTransitions": "Transições de URL da página",
+ "PeriodNotAllowed": "Período de tempo não permitido",
+ "PeriodNotAllowedDetails": "Este recurso não está disponível para este período, tente selecionar um período com menos dias",
"PluginDescription": "Informa ações anteriores e seguintes para cada URL da página em um novo relatório de Transições, disponível nos relatórios de Ações através de um novo ícone.",
"ShareOfAllPageviews": "Esta página teve %1$s exibições (%2$s de todas as exibições)",
"ToFollowingPages": "Para páginas internas",
"ToFollowingPagesInline": "%s para páginas internas",
"ToFollowingSiteSearches": "Pesquisas internas",
"ToFollowingSiteSearchesInline": "%s pesquisas internas",
- "XOfAllPageviews": "%s de todas as visualizações desta página",
- "XOutOfYVisits": "%1$s (de %2$s)",
- "PageURLTransitions": "Transições de URL da página",
+ "TopX": "%s principais rótulos",
+ "Transitions": "Transições",
"TransitionsSubcategoryHelp1": "Transições mostra um relatório de o que seus visitantes fizeram imediatamente antes e depois de visualizarem uma página específica. Esta página explicará como acessar, entender e usar o poderoso relatório Transições.",
- "TransitionsSubcategoryHelp2": "Mais detalhes"
+ "TransitionsSubcategoryHelp2": "Mais detalhes",
+ "XOfAllPageviews": "%s de todas as visualizações desta página",
+ "XOutOfYVisits": "%1$s (de %2$s)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Transitions/lang/sq.json b/plugins/Transitions/lang/sq.json
index 0723e2762e..5da8986b1e 100644
--- a/plugins/Transitions/lang/sq.json
+++ b/plugins/Transitions/lang/sq.json
@@ -1,17 +1,12 @@
{
"Transitions": {
+ "AvailableInOtherReports": "A e dinit? Tranzicionet janë të passhme edhe si veprim rreshti në raportet vijues:",
+ "AvailableInOtherReports2": "Thjesht kaloni kursorin përsipër një rreshti te cilido prej këtyre raporteve dhe klikoni mbi ikonën e tranzicionit %s për ta vënë në punë.",
"BouncesInline": "%s kthime",
"DirectEntries": "Hyrje të Drejtpërdrejta",
- "Transitions": "Tranzicione",
"ErrorBack": "Kthehu te veprimi i mëparshëm",
"ExitsInline": "%s largime",
- "NumPageviews": "%s parje faqesh",
- "NumDownloads": "%s shkarkime",
- "NumOutlinks": "%s lidhje për jashtë",
- "TopX": "%s etiketat kryesuese",
"FeatureDescription": "Tranzicionet ju japin një raport që tregon gjëra që vizitorët tuaj bënë fill para dhe pas parjes së një faqeje të dhënë. Kjo faqe do të shpjegojë si të hyhet, të kuptohet dhe të përdoret raporti i fuqishëm Tranzicione.",
- "AvailableInOtherReports": "A e dinit? Tranzicionet janë të passhme edhe si veprim rreshti në raportet vijues:",
- "AvailableInOtherReports2": "Thjesht kaloni kursorin përsipër një rreshti te cilido prej këtyre raporteve dhe klikoni mbi ikonën e tranzicionit %s për ta vënë në punë.",
"FromCampaigns": "Prej Fushatash",
"FromPreviousPages": "Prej Faqesh të Brendshme",
"FromPreviousPagesInline": "%s prej faqesh të brendshme",
@@ -24,17 +19,24 @@
"LoopsInline": "%s ringarkime faqesh",
"NoDataForAction": "S’ka të dhëna për %s",
"NoDataForActionDetails": "Ose veprimi nuk ka parje faqesh gjatë periudhës %s, ose është i pavlefshëm.",
+ "NumDownloads": "%s shkarkime",
+ "NumOutlinks": "%s lidhje për jashtë",
+ "NumPageviews": "%s parje faqesh",
"OutgoingTraffic": "Trafik ikës",
+ "PageURLTransitions": "Tranzicione URL-je Faqeje",
+ "PeriodNotAllowed": "Periudhë kohe jo e lejuar",
+ "PeriodNotAllowedDetails": "Kjo veçori s’është e passhme për këtë periudhë, provoni të përzgjidhni një periudhë me më pak ditë",
"PluginDescription": "Raporton, në një raport të ri Tranzicionesh, veprime të mëparshme dhe në vijim për çdo URL faqeje, i passhëm te raportet mbi Veprimet përmes një ikone të re.",
"ShareOfAllPageviews": "Kjo faqe pati %1$s parje faqesh (%2$s e krejt parjeve të faqeve)",
"ToFollowingPages": "Te Faqe të Brendshme",
"ToFollowingPagesInline": "%s te faqe të brendshme",
"ToFollowingSiteSearches": "Kërkime të Brendshme",
"ToFollowingSiteSearchesInline": "%s kërkime të brendshme",
- "XOfAllPageviews": "%s e krejt parjeve të kësaj faqeje",
- "XOutOfYVisits": "%1$s (nga %2$s gjithsej)",
- "PageURLTransitions": "Tranzicione URL-je Faqeje",
+ "TopX": "%s etiketat kryesuese",
+ "Transitions": "Tranzicione",
"TransitionsSubcategoryHelp1": "Tranzicionet ju japin një raport që tregon gjëra që vizitorët tuaj bënë fill para dhe pas parjes së një faqeje të dhënë. Kjo faqe do të shpjegojë si të hyhet, të kuptohet dhe të përdoret raporti i fuqishëm Tranzicione.",
- "TransitionsSubcategoryHelp2": "Më Tepër Hollësi"
+ "TransitionsSubcategoryHelp2": "Më Tepër Hollësi",
+ "XOfAllPageviews": "%s e krejt parjeve të kësaj faqeje",
+ "XOutOfYVisits": "%1$s (nga %2$s gjithsej)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization
-Subproject f47d4c0597e348c0d4a37a0bac1c4460107a041
+Subproject 67705b593133a99e4ac6bb1ee77a80262db7619
diff --git a/plugins/TwoFactorAuth/Controller.php b/plugins/TwoFactorAuth/Controller.php
index 3ff82ac44c..ebf85de377 100644
--- a/plugins/TwoFactorAuth/Controller.php
+++ b/plugins/TwoFactorAuth/Controller.php
@@ -7,8 +7,6 @@
*/
namespace Piwik\Plugins\TwoFactorAuth;
-use Endroid\QrCode\QrCode;
-use Piwik\API\Request;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\IP;
diff --git a/plugins/TwoFactorAuth/SystemSettings.php b/plugins/TwoFactorAuth/SystemSettings.php
index 1fd6619ee9..8e2060a967 100644
--- a/plugins/TwoFactorAuth/SystemSettings.php
+++ b/plugins/TwoFactorAuth/SystemSettings.php
@@ -14,7 +14,6 @@ use Piwik\Settings\Setting;
use Piwik\Settings\FieldConfig;
use Piwik\Url;
use Piwik\Plugins\TwoFactorAuth\TwoFactorAuthentication;
-use Piwik\Container\StaticContainer;
class SystemSettings extends \Piwik\Settings\Plugin\SystemSettings
{
diff --git a/plugins/TwoFactorAuth/lang/ca.json b/plugins/TwoFactorAuth/lang/ca.json
index 0967ef424b..f0c56bdfea 100644
--- a/plugins/TwoFactorAuth/lang/ca.json
+++ b/plugins/TwoFactorAuth/lang/ca.json
@@ -1 +1,51 @@
-{}
+{
+ "TwoFactorAuth": {
+ "AskSuperUserResetAuthenticationCode": "Demaneu al superusuari que restableixi el vostre codi d'autenticació",
+ "AuthenticationCode": "Codi d'autenticació",
+ "ConfigureDifferentDevice": "Configura un dispositiu diferent",
+ "ConfirmDisableTwoFA": "Esteu segur que voleu desactivar l'autenticació de dos factors per al vostre compte? Tenir activada l'autenticació de dos factors augmenta la seguretat del vostre compte.",
+ "ConfirmSetup": "Confirmeu la configuració",
+ "DisableTwoFA": "Desactiva l'autenticació de dos factors",
+ "DontHaveYourMobileDevice": "No tens el teu dispositiu mòbil?",
+ "EnableTwoFA": "Activa l'autenticació de dos factors",
+ "EnterRecoveryCodeInstead": "Introduïu un dels vostres codis de recuperació",
+ "GenerateNewRecoveryCodes": "Generar nous codis de recuperació",
+ "GenerateNewRecoveryCodesInfo": "Quan genereu codis de recuperació nous, els codis antics ja no funcionaran. Assegureu-vos de descarregar o imprimir els vostres codis nous.",
+ "InvalidAuthCode": "El codi d'autenticació de dos factors no és correcte.",
+ "LostAuthenticationDevice": "Bones, %1$stinc l'autenticació de dos factors activada i he perdut el meu dispositiu d'autenticació. Podries restablir l'autenticació de dos factors per al meu nom d'usuari %5$s? Podeu trobar les instruccions per a això aquí: %6$s.%2$sL'URL de Matomo és %3$s.%4$sGràcies",
+ "MissingAuthCodeAPI": "Si us plau especifiqueu el codi d'autenticació de dos factors.",
+ "NotPossibleToLogIn": "No es pot iniciar la sessió a Matomo Analytics",
+ "RecoveryCodes": "Codis de recuperació",
+ "RecoveryCodesAllUsed": "S'han utilitzat tots els codis de recuperació, és molt recomanable que regenereu els codis de recuperació.",
+ "RecoveryCodesExplanation": "Podeu utilitzar codis de recuperació per accedir al vostre compte si no podeu rebre codis d'autenticació de dos factors, per exemple, quan no teniu el dispositiu mòbil a mà.",
+ "RecoveryCodesRegenerated": "S'han regenerat els codis de recuperació. Assegureu-vos de descarregar o imprimir els codis generats recentment.",
+ "RecoveryCodesSecurity": "Tracteu els vostres codis de recuperació amb el mateix nivell de seguretat que la vostra contrasenya!",
+ "RequireTwoFAForAll": "Dema l'autenticació de dos factors per a tothom",
+ "RequireTwoFAForAllInformation": "Quan està activat, cada usuari ha d'habilitar l'autenticació de dos factors. L'aplicació de 2FA requerirà que tots els usuaris tinguin accés a un dispositiu on puguin instal·lar una aplicació d'autenticació. Només podeu activar-ho si ja teniu configurada l'autenticació de dos factors.",
+ "RequiredAuthCodeNotConfiguredAPI": "Heu de configurar l'autenticació de dos factors. Si us plau inicieu sessió al vostre compte.",
+ "RequiredToSetUpTwoFactorAuthentication": "Heu de configurar l'autenticació de dos factors abans de poder iniciar sessió",
+ "SetUpTwoFactorAuthentication": "Configura l'autenticació de dos factors (2FA)",
+ "SetupAuthenticatorOnDevice": "Configura l'autenticador al teu dispositiu",
+ "SetupAuthenticatorOnDeviceStep1": "Instal·leu una aplicació d'autenticació, per exemple:",
+ "SetupAuthenticatorOnDeviceStep2": "A continuació obriu l'aplicació i escanegeu el codi de barres següent amb l'aplicació d'autenticació de dos factors al vostre telèfon. Si no podeu escanejar el codi de barres, %1$senvieu aquest codi%2$s.",
+ "SetupBackupRecoveryCodes": "Si us plau feu una còpia de seguretat dels vostres codis de recuperació mitjançant un dels mètodes anteriors abans de continuar amb la configuració de l'autenticació de dos factors.",
+ "SetupFinishedSubtitle": "Heu configurat correctament l'autenticació de dos factors. La propera vegada que inicieu sessió, també haureu d'introduir el codi d'autenticació. Assegureu-vos que teniu el vostre dispositiu mòbil o els vostres codis de seguretat a mà.",
+ "SetupFinishedTitle": "Felicitats! El vostre compte és ara més segur.",
+ "SetupIntroFollowSteps": "Si us plau seguiu aquests passos per configurar l'autenticació de dos factors:",
+ "ShowRecoveryCodes": "Mostra els codis de recuperació",
+ "StepX": "Pas %s",
+ "TwoFAShort": "2FA",
+ "TwoFactorAuthentication": "Autenticació de dos factors",
+ "TwoFactorAuthenticationIntro": "%1$sL'autenticació de dos factors%2$s augmenta la seguretat del vostre compte afegint una capa addicional de verificació quan inicieu sessió. Cada vegada que inicieu sessió, no només se us demanarà que proporcioneu el vostre inici de sessió i contrasenya, sinó també una autenticació addicional testimoni que canvia periòdicament i es genera, per exemple, al vostre dispositiu mòbil. Això vol dir que fins i tot quan algú conegui el vostre nom d'usuari i contrasenya, no podrà iniciar sessió tret que tingui accés al vostre dispositiu mòbil, per exemple.",
+ "TwoFactorAuthenticationIsDisabled": "Actualment l'autenticació de dos factors està desactivada.",
+ "TwoFactorAuthenticationIsEnabled": "Actualment l'autenticació de dos factors està activada.",
+ "TwoFactorAuthenticationRequired": "Cal que l'autenticació de dos factors estigui activada per a tothom, no la podeu desactivar.",
+ "Verify": "Verificar",
+ "VerifyAuthCodeHelp": "Introduïu el codi de sis dígits que s'ha generat al vostre dispositiu mòbil després d'escanejar el codi de barres.",
+ "VerifyAuthCodeIntro": "Introduïu el codi de sis dígits de la vostra aplicació d'autenticació a continuació per confirmar que us heu configurat correctament al vostre dispositiu.",
+ "VerifyIdentifyExplanation": "Obriu l'aplicació d'autenticació de dos factors al vostre dispositiu per veure el vostre codi d'autenticació i així verificar la vostra identitat.",
+ "WarningChangingConfiguredDevice": "Esteu a punt de canviar el dispositiu d'autenticació de dos factors configurat. Això invalidarà qualsevol dispositiu configurat prèviament.",
+ "WrongAuthCodeTryAgain": "S'ha introduït un codi d'autenticació incorrecte. Siusplau torna-ho a provar.",
+ "Your2FaAuthSecret": "El vostre secret d'autenticació de dos factors"
+ }
+}
diff --git a/plugins/TwoFactorAuth/lang/nb.json b/plugins/TwoFactorAuth/lang/nb.json
index c4e249caa3..8147b580a7 100644
--- a/plugins/TwoFactorAuth/lang/nb.json
+++ b/plugins/TwoFactorAuth/lang/nb.json
@@ -3,22 +3,32 @@
"AskSuperUserResetAuthenticationCode": "Spør en superbruker om å tilbakestille identitetbekreftelseskoden din",
"AuthenticationCode": "Identitetsbekreftelseskode",
"ConfigureDifferentDevice": "Sett opp en annen enhet",
+ "ConfirmDisableTwoFA": "Er du sikker på at du vil skru av to-faktoridentitetsbekreftelse for kontoen din? Å ha to-faktoridentitetsbekreftelse påskrudd øker kontosikkerheten din.",
"ConfirmSetup": "Bekreft oppsett",
"DisableTwoFA": "Skru av to-faktoridentitetsbekreftelse",
"DontHaveYourMobileDevice": "Har du ingen mobilenhet?",
"EnableTwoFA": "Skru på to-faktoridentitetsbekreftelse",
"EnterRecoveryCodeInstead": "Skriv inn én av gjenopprettelseskodene dine",
"GenerateNewRecoveryCodes": "Generer nye gjenopprettelseskoder",
+ "GenerateNewRecoveryCodesInfo": "Når du genererer nye gjenopprettelseskoder vil de gamle slutte å fungere. Sørg for å laste ned eller skrive ut dine nye koder.",
"InvalidAuthCode": "To-faktoridentitetsbekreftelseskoden stemmer ikke.",
+ "LostAuthenticationDevice": "Hei %1$s. Jeg har to-faktoridentitetsbekreftelse påslått og har mistet min identitetbekreftelsesenhet. Kan du tilbakestille to-faktoridentitetsbekreftelse for brukernavnet mitt «%5$s»? Du finner instruks for dette her: %6$s. %2$sMatomo-nettadressen er %3$s.%4$s Takk.",
"MissingAuthCodeAPI": "Angi din to-faktoridentitetsbekreftelseskode.",
"NotPossibleToLogIn": "Kan ikke logge inn på Matomo Analytics",
"RecoveryCodes": "Gjenopprettelseskoder",
+ "RecoveryCodesAllUsed": "Alle gjenopprettelseskoder har blitt brukt. Det anbefales sterkt at du genererer nye.",
+ "RecoveryCodesExplanation": "Du kan bruke gjenopprettingskoder for å få tilgang til kontoen din når du ikke kan generere to-faktoridentitetsbekreftelseskoder, for eksempel når du ikke har mobilenheten med deg.",
+ "RecoveryCodesRegenerated": "Gjenopprettelseskoder har blitt regenerert. Forsikre deg om at du laster ned eller skriver ut de nylig genererte kodene.",
+ "RecoveryCodesSecurity": "Behandle gjenopprettingskodene dine med samme omhu som du har for passordet ditt.",
"RequireTwoFAForAll": "Krev to-faktoridentitetsbekreftelse for alle",
+ "RequireTwoFAForAllInformation": "Når påskrudd må hver bruker skru på to-faktoridentitetsbekreftelse. Å skru på 2FA krever at alle brukere har tilgang til en enhet de kan installere et identitetbekreftelsesprogram på. Du kan kun skru på dette hvis du allerede har to-faktoridentitetsbekreftelse påskrudd for deg selv.",
"RequiredAuthCodeNotConfiguredAPI": "Det kreves at du setter opp to-faktoridentitetsbekreftelse. Logg inn på kontoen din.",
"RequiredToSetUpTwoFactorAuthentication": "Det kreves at du setter opp to-faktoridentitetsbekreftelse før du kan logge inn",
"SetUpTwoFactorAuthentication": "Sett opp to-faktoridentitetsbekreftelse (2FA)",
"SetupAuthenticatorOnDevice": "Sett opp identitetbekreftelsesprogram på enheten din",
"SetupAuthenticatorOnDeviceStep1": "Installer et identitetbekreftelsesprogram, for eksempel:",
+ "SetupAuthenticatorOnDeviceStep2": "Så åpner du programmet og skanner strekkoden nedenfor med to-faktoridentitetbekreftelsesprogrammet på telefonen din. Hvis du ikke kan skanne strekkoden kan du skrive inn %1$sdenne koden%2$s istedenfor.",
+ "SetupBackupRecoveryCodes": "Sikkerhetskopier gjenopprettingskodene dine med én av metodene før du fortsetter oppsettet av to-faktoridentitetsbekreftelse.",
"SetupFinishedSubtitle": "Du har satt opp to-faktoridentitetsbekreftelse. Neste gang du logger inn må du også skrive inn en identitetbekreftelseskode. Forsikre deg om at du har mobilenheten din eller sikkerhetskopikodene dine med deg.",
"SetupFinishedTitle": "Gratulerer. Kontoen din er nå sikrere.",
"SetupIntroFollowSteps": "Følg disse stegene for å sette opp to-faktoridentitetsbekreftelse:",
@@ -31,7 +41,10 @@
"TwoFactorAuthenticationIsEnabled": "To-faktoridentitetsbekreftelse er for tiden påskrudd.",
"TwoFactorAuthenticationRequired": "To-faktoridentitetsbekreftelse kreves påslått for alle, du kan ikke skru det av.",
"Verify": "Bekreft",
+ "VerifyAuthCodeHelp": "Skriv inn den sekssifrede koden som ble generert på mobilenheten din etter at du har skannet strekkoden.",
+ "VerifyAuthCodeIntro": "Skriv inn den sekssifrede koden fra ditt identitetbekreftelsesprogram nedenfor for å bekrefte at du har satt opp enheten din rett.",
"VerifyIdentifyExplanation": "Åpne To-faktoridentitetsbekreftelsesprogrammet på enheten din for å vise to-faktoridentitetsbekreftelseskoden din og bekrefte identiteten din.",
+ "WarningChangingConfiguredDevice": "Du er i ferd med å endre oppsatt to-faktoridentitetsenhet. Dette invaliderer tidligere oppsatt enhet.",
"WrongAuthCodeTryAgain": "Feil identitetbekreftelseskode innskrevet. Prøv igjen.",
"Your2FaAuthSecret": "Din to-faktoridentitetsbekreftelseshemmeldighet"
}
diff --git a/plugins/TwoFactorAuth/lang/sq.json b/plugins/TwoFactorAuth/lang/sq.json
index 1757dd2e7f..6686095105 100644
--- a/plugins/TwoFactorAuth/lang/sq.json
+++ b/plugins/TwoFactorAuth/lang/sq.json
@@ -1,51 +1,51 @@
{
"TwoFactorAuth": {
- "TwoFactorAuthentication": "Mirëfilltësim dyfaktorësh",
- "TwoFAShort": "2FA",
- "TwoFactorAuthenticationIntro": "%1$sMirëfilltësimi dyfaktorësh%2$s rrit sigurinë e llogarisë tuaj duke shtuar një shtresë ekstra verifikimi gjatë hyrjeve në llogarinë tuaj. Sa herë që bëni hyrjen, s’do t’ju kërkohet të jepni vetëm emër përdoruesi dhe fjalëkalim, por edhe një kod shtesë mirëfilltësimi, i cili ndryshon në mënyrë periodike, për shembull, në celularin tuaj. Kjo do të thotë që edhe kur dikush di emrin tuaj të përdoruesit dhe fjalëkalimin, prapëseprapë s’do të jenë në gjendje të bëjnë hyrjen, veç në paçin hyrje te telefoni juaj celular, për shembull.",
- "TwoFactorAuthenticationIsEnabled": "Mirëfilltësimi dyfaktorësh është i aktivizuar.",
- "TwoFactorAuthenticationIsDisabled": "Mirëfilltësimi dyfaktorësh është i çaktivizuar.",
- "TwoFactorAuthenticationRequired": "Mirëfilltësimi dyfaktorësh lypset të jetë i aktivizuar për gjithkënd, s’mund ta çaktivizoni.",
- "ConfigureDifferentDevice": "Formësoni një pajisje tjetër",
- "SetUpTwoFactorAuthentication": "Rregulloni mirëfilltësim dyfaktorësh",
- "RequiredToSetUpTwoFactorAuthentication": "Lypset ta rregulloni mirëfilltësimin dyfaktorësh përpara se të mund të bëni hyrjen",
- "AuthenticationCode": "Kod mirëfilltësimi",
- "Verify": "Verifikoje",
- "StepX": "Hapi %s",
- "MissingAuthCodeAPI": "Ju lutemi, specifikoni kod mirëfilltësim dyfaktorësh.",
- "InvalidAuthCode": "Kodi i mirëfilltësimit dyfaktorësh s’është i saktë.",
- "RequiredAuthCodeNotConfiguredAPI": "Lypset të rregulloni mirëfilltësimin dyfaktorësh. Ju lutemi, bëni hyrjen te llogaria juaj.",
- "VerifyIdentifyExplanation": "Që të shihni kodin tuaj për mirëfilltësimin dhe të verifikoni identitetin tuaj, hapeni aplikacionin e mirëfilltësimit dyfaktorësh që nga pajisja juaj.",
- "DontHaveYourMobileDevice": "S’keni pajisje celulare?",
- "EnterRecoveryCodeInstead": "Jepni një kodet tuaj të rimarrjeve",
"AskSuperUserResetAuthenticationCode": "Kërkojini superpërdoruesit të ricaktojë kodin tuaj të mirëfilltësimit",
- "SetupIntroFollowSteps": "Ju lutemi, që të rregulloni mirëfilltësimin dyfaltorësh, ndiqni këto hapa:",
- "SetupFinishedTitle": "Përgëzime! Llogaria juaj tani është më e sigurt.",
- "SetupFinishedSubtitle": "E rregulluat me sukses mirëfilltësimin dyfaktorësh. Herës tjetër që bëni hyrjen, do t’ju duhet të jepni edhe kodin e mirëfilltësimit. Sigurohuni të keni me vete pajisjen tuaj celulare ose kodet tuaj të kopjeruajtjeve.",
- "WarningChangingConfiguredDevice": "Ju ndan një hap nga ndryshimi i pajisjes së formësuar për mirëfilltësim dyfaktorësh. Kjo do të nxjerrë jashtë loje çfarëdo pajisje të formësuar më herët.",
- "ShowRecoveryCodes": "Shfaq kode rimarrjesh",
+ "AuthenticationCode": "Kod mirëfilltësimi",
+ "ConfigureDifferentDevice": "Formësoni një pajisje tjetër",
+ "ConfirmDisableTwoFA": "Jeni i sigurt se doni të çaktivizohet mirëfilltësimi dyfaktorësh për llogarinë tuaj? Pasja të aktivizuar e mirëfilltësimit dyfaktorësh rrit sigurinë e llogarisë tuaj.",
"ConfirmSetup": "Ripohoni rregullimin",
- "NotPossibleToLogIn": "S’bëhet dot hyrja te Matomo Analytics",
- "LostAuthenticationDevice": "Njatjeta,%1$sE kam të aktivizuar mirëfilltësimin dyfaktorësh dhe humba pajisjen nga bëja mirëfilltësime. A mundeni, ju lutem, ta ktheni mirëfilltësimin dyfaktorësh te parazgjedhjet, për emrin tim të përdoruesit %5$s? Udhëzime për këtë mund të gjeni këtu: %6$s.%2$sURL-ja në Matomo është %3$s.%4$sFaleminderit",
- "WrongAuthCodeTryAgain": "U dha kod i gabuar mirëfilltësimi. Ju lutemi, riprovoni.",
"DisableTwoFA": "Çaktivizo mirëfilltësimin dyfaktorësh",
+ "DontHaveYourMobileDevice": "S’keni pajisje celulare?",
"EnableTwoFA": "Aktivizo mirëfilltësimin dyfaktorësh",
- "ConfirmDisableTwoFA": "Jeni i sigurt se doni të çaktivizohet mirëfilltësimi dyfaktorësh për llogarinë tuaj? Pasja të aktivizuar e mirëfilltësimit dyfaktorësh rrit sigurinë e llogarisë tuaj.",
- "VerifyAuthCodeIntro": "Që të ripohoni se e keni rregulluar me sukses në pajisjen tuaj, ju lutemi, jepni më poshtë kodin me gjashtë shifra nga aplikacioni juaj i mirëfilltësimeve.",
- "VerifyAuthCodeHelp": "Ju lutemi, jepni kodin me gjashtë shifra që është prodhuar te te pajisja juaj celulare pas skanimit të kodit me vija.",
- "Your2FaAuthSecret": "E fshehta juaj e mirëfilltësimit dyfaktorësh",
- "SetupAuthenticatorOnDevice": "Rregulloni mirëfilltësimin te pajisja juaj",
- "SetupAuthenticatorOnDeviceStep1": "Instaloni një aplikacion mirëfilltësimi, për shembull:",
- "SetupAuthenticatorOnDeviceStep2": "Në vijim, hapeni aplikacionin dhe skanoni kodin me vija më poshtë përmes aplikacionit për mirëfilltësim dyfaktorësh në celularin tuaj. Nëse s’e skanoni dot kodin me vija, %1$sjepni këtë kod%2$s.",
- "SetupBackupRecoveryCodes": "Ju lutemi, përpara se të vazhdoni rregullimin e mirëfilltësimit dy hapësh, bëni një kopjeruajtje të kodeve tuaj të rimarrjeve.",
+ "EnterRecoveryCodeInstead": "Jepni një nga kodet tuaj të rimarrjeve",
+ "GenerateNewRecoveryCodes": "Prodhoni kode të rinj rimarrjesh",
+ "GenerateNewRecoveryCodesInfo": "Kur prodhoni kode të rinj rimarrjesh, kodet tuaj të dikurshëm s’do të funksionojnë më. Sigurohuni se i shkarkuat ose i shtypët kodet tuaj të rinj.",
+ "InvalidAuthCode": "Kodi i mirëfilltësimit dyfaktorësh s’është i saktë.",
+ "LostAuthenticationDevice": "Njatjeta,%1$sE kam të aktivizuar mirëfilltësimin dyfaktorësh dhe humba pajisjen nga bëja mirëfilltësime. A mundeni, ju lutem, ta ktheni mirëfilltësimin dyfaktorësh te parazgjedhjet, për emrin tim të përdoruesit %5$s? Udhëzime për këtë mund të gjeni këtu: %6$s.%2$sURL-ja në Matomo është %3$s.%4$sFaleminderit",
+ "MissingAuthCodeAPI": "Ju lutemi, specifikoni kod mirëfilltësim dyfaktorësh.",
+ "NotPossibleToLogIn": "S’bëhet dot hyrja te Matomo Analytics",
"RecoveryCodes": "Kode rimarrjesh",
+ "RecoveryCodesAllUsed": "Janë përdorur krejt kodet e rimarrjeve, këshillohet me forcë të riprodhoni kode rimarrjesh.",
"RecoveryCodesExplanation": "Për të hyrë te llogaria juaj kur s’merrni dot kode mirëfilltësimi dyfaktorësh, për shembull kur s’e keni pajisjen celulare me vete, mund të përdorni kodet e rimarrjeve.",
- "RecoveryCodesSecurity": "Ju lutemi, trajtojini kodet tuaj të rimarrjeve me të njëjtën shkallë sigurie si do të bëni me fjalëkalimet tuaj!",
- "RecoveryCodesAllUsed": "Janë përdorur krejt kodet e rimarrjeve. Këshillohet me forcë të riprodhoni kode rimarrjesh.",
"RecoveryCodesRegenerated": "U riprodhuan kode rimarrjesh. Sigurohuni se i shkarkuat ose i shtypët kodet e rinj të prodhuar.",
- "GenerateNewRecoveryCodes": "Prodhoni kode të rinj rimarrjesh",
- "GenerateNewRecoveryCodesInfo": "Kur prodhoni kode të rinj rimarrjesh, kodet tuaj të dikurshëm s’do të funksionojnë më. Sigurohuni se i shkarkuat ose i shtypët kodet tuaj të rinj.",
+ "RecoveryCodesSecurity": "Ju lutemi, trajtojini kodet tuaj të rimarrjeve me të njëjtën shkallë sigurie si do të bëni me fjalëkalimet tuaj!",
"RequireTwoFAForAll": "Kërko doemos mirëfilltësim dyfaktorësh për këdo",
- "RequireTwoFAForAllInformation": "Në u aktivizoftë, çdo përdoruesi do t’i duhet të aktivizojë mirëfilltësimin dyfaktorësh. Përdorimi i detyrueshëm i 2FA-së do të dojë që krejt përdoruesit të mund të përdorin një pajisje ku mund të instalojnë një aplikacion mirëfilltësues. Këtë mund ta aktivizoni vetëm nëse e keni ujdisur tashmë mirëfilltësimin dyfaktorësh."
+ "RequireTwoFAForAllInformation": "Në u aktivizoftë, çdo përdoruesi do t’i duhet të aktivizojë mirëfilltësimin dyfaktorësh. Përdorimi i detyrueshëm i 2FA-së do të dojë që krejt përdoruesit të mund të përdorin një pajisje ku mund të instalojnë një aplikacion mirëfilltësues. Këtë mund ta aktivizoni vetëm nëse e keni ujdisur tashmë mirëfilltësimin dyfaktorësh.",
+ "RequiredAuthCodeNotConfiguredAPI": "Lypset të rregulloni mirëfilltësimin dyfaktorësh. Ju lutemi, bëni hyrjen te llogaria juaj.",
+ "RequiredToSetUpTwoFactorAuthentication": "Lypset ta rregulloni mirëfilltësimin dyfaktorësh përpara se të mund të bëni hyrjen",
+ "SetUpTwoFactorAuthentication": "Ujdisni mirëfilltësim dyfaktorësh (2FA)",
+ "SetupAuthenticatorOnDevice": "Ujdisni mirëfilltësues te pajisja juaj",
+ "SetupAuthenticatorOnDeviceStep1": "Instaloni një aplikacion mirëfilltësimi, për shembull:",
+ "SetupAuthenticatorOnDeviceStep2": "Në vijim, hapeni aplikacionin dhe skanoni kodin me vija më poshtë, përmes aplikacionit për mirëfilltësim dyfaktorësh në celularin tuaj. Nëse s’e skanoni dot kodin me vija, %1$sjepni këtë kod%2$s.",
+ "SetupBackupRecoveryCodes": "Ju lutemi, përpara se të vazhdoni rregullimin e mirëfilltësimit dy hapësh, bëni një kopjeruajtje të kodeve tuaj të rimarrjeve.",
+ "SetupFinishedSubtitle": "E rregulluat me sukses mirëfilltësimin dyfaktorësh. Herës tjetër që bëni hyrjen, do t’ju duhet të jepni edhe kodin e mirëfilltësimit. Sigurohuni të keni me vete pajisjen tuaj celulare, ose kodet tuaj të kopjeruajtjeve.",
+ "SetupFinishedTitle": "Përgëzime! Llogaria juaj tani është më e sigurt.",
+ "SetupIntroFollowSteps": "Ju lutemi, që të ujdisni mirëfilltësimin dyfaktorësh, ndiqni këto hapa:",
+ "ShowRecoveryCodes": "Shfaq kode rimarrjesh",
+ "StepX": "Hapi %s",
+ "TwoFAShort": "2FA",
+ "TwoFactorAuthentication": "Mirëfilltësim dyfaktorësh",
+ "TwoFactorAuthenticationIntro": "%1$sMirëfilltësimi dyfaktorësh%2$s rrit sigurinë e llogarisë tuaj duke shtuar një shtresë ekstra verifikimi gjatë hyrjeve në llogarinë tuaj. Sa herë që bëni hyrjen, s’do t’ju kërkohet të jepni vetëm emër përdoruesi dhe fjalëkalim, por edhe një kod shtesë mirëfilltësimi, i cili ndryshon në mënyrë periodike dhe prodhohet, për shembull, në pajisjen tuaj celulare. Kjo do të thotë që edhe kur dikush di emrin tuaj të përdoruesit dhe fjalëkalimin, prapëseprapë s’do të jetë në gjendje të bëjnë hyrjen, veç në paçin hyrje te telefoni juaj celular, për shembull.",
+ "TwoFactorAuthenticationIsDisabled": "Mirëfilltësimi dyfaktorësh është i çaktivizuar.",
+ "TwoFactorAuthenticationIsEnabled": "Mirëfilltësimi dyfaktorësh është i aktivizuar.",
+ "TwoFactorAuthenticationRequired": "Mirëfilltësimi dyfaktorësh lypset të jetë i aktivizuar për gjithkënd, s’mund ta çaktivizoni.",
+ "Verify": "Verifikoje",
+ "VerifyAuthCodeHelp": "Ju lutemi, jepni kodin me gjashtë shifra që është prodhuar te pajisja juaj celulare pas skanimit të kodit me vija.",
+ "VerifyAuthCodeIntro": "Që të ripohoni se e keni ujdisur me sukses në pajisjen tuaj, ju lutemi, jepni më poshtë kodin me gjashtë shifra nga aplikacioni juaj i mirëfilltësimeve.",
+ "VerifyIdentifyExplanation": "Që të shihni kodin tuaj për mirëfilltësimin dhe të verifikoni identitetin tuaj, hapeni aplikacionin e mirëfilltësimit dyfaktorësh që nga pajisja juaj.",
+ "WarningChangingConfiguredDevice": "Ju ndan një hap nga ndryshimi i pajisjes së formësuar për mirëfilltësim dyfaktorësh. Kjo do të nxjerrë jashtë loje çfarëdo pajisje të formësuar më herët.",
+ "WrongAuthCodeTryAgain": "U dha kod i gabuar mirëfilltësimi. Ju lutemi, riprovoni.",
+ "Your2FaAuthSecret": "E fshehta juaj e mirëfilltësimit dyfaktorësh"
}
-} \ No newline at end of file
+}
diff --git a/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php b/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
index 46b7ec2844..605d098351 100644
--- a/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
+++ b/plugins/TwoFactorAuth/tests/Fixtures/SimpleFixtureTrackFewVisits.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Plugins\TwoFactorAuth\tests\Fixtures;
-use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
index d47292d09c..959ca78ac6 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeRandomGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeRandomGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
index a5668ebb17..753f7099f1 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/RecoveryCodeStaticGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeStaticGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php b/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
index 6f04416457..d6c610d344 100644
--- a/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/Dao/TwoFaSecretRandomGeneratorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration\Dao;
-use Piwik\Common;
use Piwik\Plugins\TwoFactorAuth\Dao\TwoFaSecretRandomGenerator;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php b/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
index b4ede7e6ab..045266a0b5 100644
--- a/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
+++ b/plugins/TwoFactorAuth/tests/Integration/TwoFactorAuthenticationTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\TwoFactorAuth\tests\Integration;
-use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Option;
use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeDao;
diff --git a/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php b/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
index f2398a0856..db4f069566 100644
--- a/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
+++ b/plugins/TwoFactorAuth/tests/System/TwoFactorAuthTest.php
@@ -16,9 +16,6 @@ use Piwik\Plugins\TwoFactorAuth\Dao\RecoveryCodeDao;
use Piwik\Plugins\TwoFactorAuth\Dao\TwoFaSecretRandomGenerator;
use Piwik\Plugins\TwoFactorAuth\SystemSettings;
use Piwik\Plugins\TwoFactorAuth\TwoFactorAuthentication;
-use Piwik\Plugins\UsersManager\API;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
/**
* @group TwoFactorAuth
diff --git a/plugins/TwoFactorAuth/tests/UI/TwoFactorAuthUsersManager_spec.js b/plugins/TwoFactorAuth/tests/UI/TwoFactorAuthUsersManager_spec.js
index 30b2e8a6e6..dc3b9b4bad 100644
--- a/plugins/TwoFactorAuth/tests/UI/TwoFactorAuthUsersManager_spec.js
+++ b/plugins/TwoFactorAuth/tests/UI/TwoFactorAuthUsersManager_spec.js
@@ -48,10 +48,10 @@ describe("TwoFactorAuthUsersManager", function () {
});
it('should be possible to confirm the reset', async function () {
- await page.type('.twofa-confirm-modal input[name=currentUserPassword]', 'superUserPass');
+ await page.type('.twofa-confirm-modal input[name=currentUserPasswordTwoFa]', 'superUserPass');
await page.click('.twofa-confirm-modal .modal-close:not(.modal-no)');
await page.waitForTimeout(500); // wait for modal to close
expect(await page.screenshotSelector('#content,#notificationContainer')).to.matchImage('edit_with_2fa_reset_confirmed');
});
-}); \ No newline at end of file
+});
diff --git a/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa.png b/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa.png
index 58301d5a17..00b3177b19 100644
--- a/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa.png
+++ b/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3f70e02e38226f862c215f56b8f408eb734b8ca6da8e76927ae4b1a997eafa7a
-size 30426
+oid sha256:dfb6da1208f08bbde331b2574b7d39e945fdee4875f700eea6bccfd088ba0798
+size 30272
diff --git a/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa_reset_confirmed.png b/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa_reset_confirmed.png
index 56d0d93cc5..ce0f28d108 100644
--- a/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa_reset_confirmed.png
+++ b/plugins/TwoFactorAuth/tests/UI/expected-screenshots/TwoFactorAuthUsersManager_edit_with_2fa_reset_confirmed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d06d1f9ba15fd36394441fd8f34eb559cd1ae29f30327715adbb644f2856a7a5
-size 34034
+oid sha256:cb7e81d0f1a1e4e227d81839ae30c46d8c52907ab18b1bf413f34958ee479617
+size 33937
diff --git a/plugins/UserCountry/Controller.php b/plugins/UserCountry/Controller.php
index 1001108a64..6bbce30544 100644
--- a/plugins/UserCountry/Controller.php
+++ b/plugins/UserCountry/Controller.php
@@ -14,10 +14,8 @@ use Piwik\IP;
use Piwik\Notification;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
-use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Plugins\UserCountry\LocationProvider\DisabledProvider;
-use Piwik\SettingsPiwik;
use Piwik\View;
/**
diff --git a/plugins/UserCountry/LocationProvider/DisabledProvider.php b/plugins/UserCountry/LocationProvider/DisabledProvider.php
index d5444a2c02..2adb74d001 100644
--- a/plugins/UserCountry/LocationProvider/DisabledProvider.php
+++ b/plugins/UserCountry/LocationProvider/DisabledProvider.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Plugins\UserCountry\LocationProvider;
-use Piwik\Common;
-use Piwik\Config;
use Piwik\Piwik;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/plugins/UserCountry/VisitorGeolocator.php b/plugins/UserCountry/VisitorGeolocator.php
index b5725d5188..35a95e8a2a 100644
--- a/plugins/UserCountry/VisitorGeolocator.php
+++ b/plugins/UserCountry/VisitorGeolocator.php
@@ -11,13 +11,10 @@ namespace Piwik\Plugins\UserCountry;
use Matomo\Cache\Cache;
use Matomo\Cache\Transient;
use Piwik\Common;
-use Piwik\Config\GeneralConfig;
use Piwik\Container\StaticContainer;
use Piwik\DataAccess\RawLogDao;
use Matomo\Network\IPUtils;
-use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider;
use Piwik\Plugins\UserCountry\LocationProvider\DisabledProvider;
-use Piwik\Tracker\TrackerConfig;
use Piwik\Tracker\Visit;
use Psr\Log\LoggerInterface;
diff --git a/plugins/UserCountry/functions.php b/plugins/UserCountry/functions.php
index 67eadf56ec..b99473f8dd 100644
--- a/plugins/UserCountry/functions.php
+++ b/plugins/UserCountry/functions.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\UserCountry;
use Piwik\DataTable;
use Piwik\Piwik;
-use Piwik\Plugin\Manager;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Tracker\Visit;
diff --git a/plugins/UserCountry/lang/ca.json b/plugins/UserCountry/lang/ca.json
index d6d7a24205..88c66a0899 100644
--- a/plugins/UserCountry/lang/ca.json
+++ b/plugins/UserCountry/lang/ca.json
@@ -2,31 +2,50 @@
"UserCountry": {
"CannotLocalizeLocalIP": "L'adreça IP %s és una adreça local i no pot ser Geolocalitzada.",
"City": "Ciutat",
+ "CityAndCountry": "%1$s, %2$s",
"Continent": "Continent",
+ "Continents": "Continents",
"Country": "País",
- "country_a1": "Proxy Anònim",
- "country_a2": "Proveïdor per satelit",
- "country_cat": "Comunitats catalano-parlants",
- "country_o1": "Un altre pais",
+ "CountryCode": "Codi del país",
"CurrentLocationIntro": "Segons el proveïdor, la vostra localització actual és",
"DefaultLocationProviderDesc1": "El proveïdor de localització per defecte suposa el país del visitant en funció del llenguatge que fan servir.",
+ "DefaultLocationProviderDesc2": "Això no és molt precís, així que %1$srecomanem instal·lar i utilitzar %2$sbase de dades de geolocalització%3$s.%4$s",
+ "DefaultLocationProviderExplanation": "Esteu utilitzant el proveïdor d'ubicació predeterminat, el que significa que Matomo endevinarà la ubicació del visitant en funció de l'idioma que utilitzi. %1$sLlegiu això%2$s per saber com configurar una geolocalització més precisa.",
+ "DisabledLocationProvider": "Desactiva la geolocalització.",
"DistinctCountries": "Hi ha %s països diferents",
+ "FromDifferentCities": "ciutats diferents",
"GeoIPDocumentationSuffix": "Per a veure informació d'aquest informe, heu de configurar la GeoIP a la pestanya Geolocalització. Les bases de dades comercials de %1$sMaxmind%2$s són més acurades que les gratuïtes. Podeu veure com són d'acurades fent click %3$saquí%4$s.",
+ "GeoIpDbIpAccuracyNote": "Nota: les bases de dades DBIP són gratuïtes i es poden descarregar automàticament, però els resultats de geolocalització (específicament els resultats de ciutats) no són tan precisos com els de MaxMind. Però MaxMind requereix que creeu un compte fins i tot per a la base de dades gratuïta. Si voleu utilitzar la base de dades de geolocalització de MaxMind %1$spodeu iniciar el procés aquí%2$s",
"Geolocation": "Geolocalització",
"GeolocationPageDesc": "En aquesta pàgina podeu canviar com el Matomo determina la localització dels vostres visitants.",
- "getCityDocumentation": "Aquest informe mostra les ciutats on estaven els vostres visitants quan van accedir el vostre lloc web.",
- "getContinentDocumentation": "Aquest informe mostra el continent on eren els vostres visitants quan van accedir al vostre lloc web.",
- "getCountryDocumentation": "Aquest informe mostra el país on estaven els vostres visitants quan van accedir al vostre lloc web.",
- "getRegionDocumentation": "Aquest informe mostra la regió on estaven els vostres visitants quan van accedir al vostre lloc web.",
+ "GeolocationProviderBroken": "El proveïdor de geolocalització configurat %1$s no funciona. Corregiu el proveïdor o configureu-ne un altre perquè la geolocalització torni a funcionar.",
+ "GeolocationProviderUnavailable": "El proveïdor de geolocalització configurat %1$s ja no està disponible, si us plau configureu-ne un altre.",
+ "HowToInstallGeoIPDatabases": "Com puc obtenir bases de dades de geolocalització?",
"Latitude": "Latitud",
+ "Latitudes": "Latituds",
"Location": "Ubicació",
"LocationProvider": "Proveïdor de localitzacions",
+ "LocationsSubcategoryHelp": "La secció Ubicacions és la millor manera d'esbrinar on són les persones quan visiten el vostre lloc. Revela els països, continents, regions i ciutats d'on provenen els visitants, en forma de taules i mapes. A més podeu veure en quin idioma està configurat el seu navegador, ajudant a identificar visitants internacionals en ubicacions alternatives.",
"Longitude": "Longitud",
+ "Longitudes": "Longituds",
+ "MaxMindLinkExplanation": "Si utilitzeu les bases de dades de geolocalització de MaxMind i encara no sabeu com generar l'URL de descàrrega, %1$s feu clic aquí per saber com%2$s.",
"NoDataForGeoIPReport1": "No hi ha informació per aquest informe perquè la informació de localització no esta disponible o l'adreça IP del visitant no pot ser geolocalitzada.",
"NoDataForGeoIPReport2": "Per activar la geolocalització acurada, canvieu les preferències %1$saquí%2$s i utilitzeu una %3$sbase de dades a nivell de ciutat%4$s.",
+ "NoProviders": "Actualment no hi ha proveïdors de geolocalització addicionals disponibles. Matomo recomana utilitzar les bases de dades %1$sdbip%2$s, però això requereix activar el connector GeoIp2. (Alternativament podeu instal·lar un connector de tercers que proporcioni la seva pròpia funcionalitat de geolocalització des del mercat.)",
+ "PluginDescription": "Informa de la ubicació dels vostres visitants: país, regió, ciutat i coordenades geogràfiques (latitud/longitud).",
"Region": "Regió",
"SubmenuLocations": "Localització",
+ "TestIPLocatorFailed": "Matomo ha provat de comprovar la ubicació d'una adreça IP coneguda (%1$s), però el vostre servidor no ha retornat cap informació. És possible que aquest proveïdor no estigui configurat correctament (la base de dades de geolocalització pot tenir un nom incorrecte o ubicar-se al directori equivocat, per exemple).",
"ToGeolocateOldVisits": "Per obtenir la localització de les visites anteriors, utilitzeu el script descrit %1$saquí%2$s.",
- "WidgetLocation": "Ubicació del visitant"
+ "VisitLocation": "Visita el lloc",
+ "WidgetLocation": "Ubicació del visitant",
+ "country_a1": "Proxy Anònim",
+ "country_a2": "Proveïdor per satelit",
+ "country_cat": "Comunitats catalano-parlants",
+ "country_o1": "Un altre pais",
+ "getCityDocumentation": "Aquest informe mostra les ciutats on estaven els vostres visitants quan van accedir el vostre lloc web.",
+ "getContinentDocumentation": "Aquest informe mostra el continent on eren els vostres visitants quan van accedir al vostre lloc web.",
+ "getCountryDocumentation": "Aquest informe mostra el país on estaven els vostres visitants quan van accedir al vostre lloc web.",
+ "getRegionDocumentation": "Aquest informe mostra la regió on estaven els vostres visitants quan van accedir al vostre lloc web."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountry/lang/it.json b/plugins/UserCountry/lang/it.json
index ea39cb12cf..0f39ea96a6 100644
--- a/plugins/UserCountry/lang/it.json
+++ b/plugins/UserCountry/lang/it.json
@@ -7,44 +7,44 @@
"Continents": "Continenti",
"Country": "Paese",
"CountryCode": "Codice nazione",
- "country_a1": "Proxy Anonimo",
- "country_a2": "Satellite Provider",
- "country_cat": "Comunità che parlano catalano",
- "country_o1": "Altri Paesi",
- "VisitLocation": "Località della Visita",
"CurrentLocationIntro": "In base a questo provider, la tua posizione attuale è",
"DefaultLocationProviderDesc1": "L'individuatore di posizione predefinito desume il paese di un visitatore dalla lingua utilizzata.",
- "DefaultLocationProviderDesc2": "Questo non è molto accurato, dunque %1$sconsigliamo di installare e di utilizzare%2$sun database di geolocalizzazione%3$s.%4$s",
+ "DefaultLocationProviderDesc2": "Questo non è molto accurato, dunque %1$sconsigliamo di installare e di utilizzare %2$sun database di geolocalizzazione%3$s.%4$s",
"DefaultLocationProviderExplanation": "Stai utilizzando il provier di posizione predefinito ciò significa che Matomo, presumibilmente, individuerà la posizione dei visitatori in base lingua che utilizzano. %1$sLeggi qui%2$s per capire come impostare una geolocalizzazione più accurata",
"DistinctCountries": "%s continenti differenti",
"FromDifferentCities": "città diverse",
"GeoIPDocumentationSuffix": "Per vedere i dati di questo report è necessario impostare GeoIP nella scheda Amministrazione Geolocation. I database GeoIP commerciali%1$sMaxmind%2$s sono più accurati di quelli gratuiti. Per vedere come sono precisi, clicca %3$squi%4$s.",
+ "GeoIpDbIpAccuracyNote": "Nota: i database DBIP sono gratuiti e possono essere scaricati automaticamente, ma i risultati della geolocalizzazione (in particolare i risultati delle città) non sono accurati come quelli di MaxMind. MaxMind, tuttavia, richiede la creazione di un account anche per il database gratuito. Se si desidera utilizzare il database di geolocalizzazione di MaxMind, è possibile avviare il procedimento %1$squi%2$s",
"Geolocation": "Geolocalizzazione",
"GeolocationPageDesc": "In questa pagina puoi cambiare le impostazioni di come Matomo determina la località dei visitatori.",
"GeolocationProviderBroken": "Il provider di geolocalizzazione configurato %1$s non funziona. Correggi il provider o configurane un altro per ripristinare il funzionamento della geolocalizzazione.",
"GeolocationProviderUnavailable": "Il provider di geolocalizzazione configurato %1$s non è più disponibile, configurane un altro.",
- "getCityDocumentation": "Questo report mostra le città in cui si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
- "getContinentDocumentation": "Questo report mostra in quale continente si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
- "getCountryDocumentation": "Questo report mostra in quale nazione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
- "getRegionDocumentation": "Questo report mostra in quale regione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
"HowToInstallGeoIPDatabases": "Come mi procuro un database di geolocalizzazione?",
"Latitude": "Latitudine",
"Latitudes": "Latitudini",
"Location": "Posizione",
"LocationProvider": "Localizzatore di Posizione",
+ "LocationsSubcategoryHelp": "La sezione Località è il modo migliore per scoprire dove si trovano le persone quando visitano il tuo sito. Rivela i paesi, i continenti, le regioni, le città da cui provengono i visitatori, in tabelle e in forma di mappa. Inoltre, puoi vedere in quale lingua è impostato il loro browser, aiutando a identificare i visitatori internazionali che si trovano in località alternative.",
"Longitude": "Longitudine",
"Longitudes": "Longitudini",
+ "MaxMindLinkExplanation": "Se stai utilizzando i database di geolocalizzazione di MaxMind e non sai già come generare l'URL di download, %1$sclicca qui per sapere come%2$s.",
"NoDataForGeoIPReport1": "Non vi sono dati per questo report perché non vi sono dati di localizzazione disponibili o gli indirizzi IP dei visitatori non possono essere geolocalizzati.",
"NoDataForGeoIPReport2": "Per abilitare la geolocalizzazione accurata cambia le impostazioni %1$squi%2$s e usa un %3$sdatabase a livello città%4$s.",
"NoProviders": "Al momento non sono disponibili altri provider di geolocalizzazione. Matomo raccomanda di usare i database %1$sdbip%2$s, ma questo richiede l'attivazione del plugin GeoIp2. (In alternativa puoi installare dal marketplace un plugin di terze parti che fornisca una sua funzione di geolocalizzazione).",
- "PluginDescription": "Restituisce la provenienza dei tuoi visitatori: nazione, regione, città e coordinate geografiche (latitudine\/longitudine).",
+ "PluginDescription": "Restituisce la provenienza dei tuoi visitatori: nazione, regione, città e coordinate geografiche (latitudine/longitudine).",
"Region": "Regione",
"SubmenuLocations": "Località",
"TestIPLocatorFailed": "Matomo ha provato a controllare la posizione di un indirizzo IP noto (%1$s), ma il server non ha restituito informazioni. Questo provider potrebbe non essere configurato correttamente (il database di geolocalizzazione potrebbe essere nominato in modo errato o situato nella directory sbagliata, per esempio).",
"ToGeolocateOldVisits": "Per avere i dati di localizzazione delle tue vecchie visite, usa lo script descritto %1$squi%2$s.",
+ "VisitLocation": "Località della Visita",
"WidgetLocation": "Posizione Visitatore",
- "GeoIpDbIpAccuracyNote": "Nota: i database DBIP sono gratuiti e possono essere scaricati automaticamente, ma i risultati della geolocalizzazione (in particolare i risultati delle città) non sono accurati come quelli di MaxMind. MaxMind, tuttavia, richiede la creazione di un account anche per il database gratuito. Se si desidera utilizzare il database di geolocalizzazione di MaxMind, è possibile avviare il procedimento %1$squi%2$s",
- "MaxMindLinkExplanation": "Se stai utilizzando i database di geolocalizzazione di MaxMind e non sai già come generare l'URL di download, %1$sclicca qui per sapere come%2$s.",
- "LocationsSubcategoryHelp": "La sezione Località è il modo migliore per scoprire dove si trovano le persone quando visitano il tuo sito. Rivela i paesi, i continenti, le regioni, le città da cui provengono i visitatori, in tabelle e in forma di mappa. Inoltre, puoi vedere in quale lingua è impostato il loro browser, aiutando a identificare i visitatori internazionali che si trovano in località alternative."
+ "country_a1": "Proxy Anonimo",
+ "country_a2": "Satellite Provider",
+ "country_cat": "Comunità che parlano catalano",
+ "country_o1": "Altri Paesi",
+ "getCityDocumentation": "Questo report mostra le città in cui si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
+ "getContinentDocumentation": "Questo report mostra in quale continente si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
+ "getCountryDocumentation": "Questo report mostra in quale nazione si trovavano i tuoi visitatori quando sono entrati nel tuo sito.",
+ "getRegionDocumentation": "Questo report mostra in quale regione si trovavano i tuoi visitatori quando sono entrati nel tuo sito."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountry/lang/nb.json b/plugins/UserCountry/lang/nb.json
index 50039090bf..3f14e31b92 100644
--- a/plugins/UserCountry/lang/nb.json
+++ b/plugins/UserCountry/lang/nb.json
@@ -9,9 +9,11 @@
"CountryCode": "Landskode",
"CurrentLocationIntro": "Ifølge denne leverandøren, er din nåværende posisjon",
"DefaultLocationProviderDesc2": "Dette er ikke veldig nøyaktig, så %1$s det anbefales å installere og bruke %2$sen geoposisjonsdatabase%3$s. %4$s",
+ "DefaultLocationProviderExplanation": "Du bruker forvalgt posisjonstilbyder, noe som betyr at Matomo gjetter den besøkendes posisjon basert på språket de bruker. %1$sLes dette%2$s for å lære mer om hvordan du setter opp mer nøyaktig geoposisjonering.",
"DisabledLocationProvider": "Skrur av geolokaliseringen.",
"DistinctCountries": "%s bestemte land",
"FromDifferentCities": "forskjellige byer",
+ "GeoIPDocumentationSuffix": "For å kunne se data for denne rapporten, må du sette opp GeoIP i administratorfanen for geoposisjonering. De kommersielle %1$sMaxMind%2$sGeoIP-databasene er mer nøyaktige enn dem som er gratis. For å se hvor nøyaktige de er kan du klikke %3$sher%4$s.",
"Geolocation": "Geoposisjonering",
"GeolocationPageDesc": "På denne siden kan du endre hvordan Matomo bestemmer posisjon for besøk.",
"GeolocationProviderBroken": "Oppsatt %1$s-geoposisjonstilbyder er ødelagt. Fiks tilbyderen eller sett opp en annen for å få geoposisjonering til å virke igjen.",
@@ -29,6 +31,7 @@
"country_a2": "Satellitt-tilbyder",
"country_cat": "Områder som snakker katalansk",
"country_o1": "Annet land",
- "getContinentDocumentation": "Denne rapporten viser hvilket kontinent dine besøkende var i da de besøkte nettsiden din."
+ "getContinentDocumentation": "Denne rapporten viser hvilket kontinent dine besøkende var i da de besøkte nettsiden din.",
+ "getCountryDocumentation": "Denne rapporten viser hvilket land dine besøkende var i da de besøkte nettsiden din."
}
}
diff --git a/plugins/UserCountry/lang/pt-br.json b/plugins/UserCountry/lang/pt-br.json
index 39ae415ec3..4c91c18f62 100644
--- a/plugins/UserCountry/lang/pt-br.json
+++ b/plugins/UserCountry/lang/pt-br.json
@@ -11,6 +11,7 @@
"DefaultLocationProviderDesc1": "Detecta a localização padrão de um visitante baseando-se no idioma que ele usa.",
"DefaultLocationProviderDesc2": "Isto não é muito preciso, então %1$srecomendamos instalar e usar %2$suma base de dados de geolocalização%3$s.%4$s",
"DefaultLocationProviderExplanation": "Você está usando o provedor de localização padrão, que significa que o Matomo irá supor a localização do visitante, baseado no idioma que eles usam. %1$sLeia isso%2$s para aprender como configurar uma geolocalização mais precisa.",
+ "DisabledLocationProvider": "Desabilitar a geolocalização.",
"DistinctCountries": "%s países distintos",
"FromDifferentCities": "cidades diferentes",
"GeoIPDocumentationSuffix": "Para ver os dados para este relatório, você deve configurar GeoIP na guia de administração de Geolocalização. Os %1$s banco de dados GeoIP Maxmind comerciais %2$s são mais precisos que os livres. Para ver como são precisos, clique %3$saqui%4$s.",
diff --git a/plugins/UserCountry/lang/ru.json b/plugins/UserCountry/lang/ru.json
index 1bd1582c6a..81365f28a0 100644
--- a/plugins/UserCountry/lang/ru.json
+++ b/plugins/UserCountry/lang/ru.json
@@ -6,35 +6,46 @@
"Continent": "Континент",
"Continents": "Континент",
"Country": "Страна",
- "country_a1": "Анонимный прокси",
- "country_a2": "Спутниковый провайдер",
- "country_cat": "Каталаноязычные общества",
- "country_o1": "Другая страна",
- "VisitLocation": "Местоположение посещения",
+ "CountryCode": "Код страны",
"CurrentLocationIntro": "Согласно используемому способу отслеживания вы находитесь здесь",
"DefaultLocationProviderDesc1": "Этот способ отслеживания определяет местоположение на основе языка, которым пользователи пользуются в браузере и системе.",
+ "DefaultLocationProviderDesc2": "Это не очень точно, поэтому %1$sмы рекомендуем установить и использовать %2$sбазу данных геолокации%3$s.%4$s",
"DefaultLocationProviderExplanation": "Вы используете провайдер определения местоположения по умолчанию. Это означает, что Matomo будет судить о местоположении посетителя по используемому им языку. %1$sПрочтите здесь%2$s о том, как устанавливать местоположение более точно.",
+ "DisabledLocationProvider": "Отключает геолокацию.",
"DistinctCountries": "%s уникальных стран",
"FromDifferentCities": "разные города",
"GeoIPDocumentationSuffix": "Чтобы увидеть данные по этому отчету вы должны установить GeoIP в секции Geolocation, которая находится в панели администрирования. Платные базы данных GeoIP %1$sMaxmind%2$s более точны, чем бесплатные. Насколько именно они точные, вы можете посмотреть %3$sздесь%4$s.",
+ "GeoIpDbIpAccuracyNote": "Примечание: базы данных DBIP бесплатны и могут быть загружены автоматически, но результаты геолокации (в частности, результаты по городам) не так точны, как у MaxMind. Однако, MaxMind, требует, чтобы вы создали учетную запись даже для бесплатной базы данных. Если вы хотите использовать базу данных геолокации MaxMind, вы можете начать процесс %1$sтут%2$s",
"Geolocation": "Геолокация",
"GeolocationPageDesc": "На этой странице вы можете изменить способ определения местоположения посетителей.",
- "getCityDocumentation": "Этот отчет показывает города посетителей вашего сайта.",
- "getContinentDocumentation": "Этот отчет показывает континенты посетителей вашего сайта.",
- "getCountryDocumentation": "Этот отчет показывает страны посетителей вашего сайта.",
- "getRegionDocumentation": "Этот отчет показывает регионы посетителей вашего сайта.",
+ "GeolocationProviderBroken": "Настроенный провайдер геолокации %1$s неисправен. Пожалуйста, исправьте провайдера или настройте другого, чтобы геолокация снова работала.",
+ "GeolocationProviderUnavailable": "Настроенный поставщик геолокации %1$s больше не доступен, пожалуйста, настройте другого.",
+ "HowToInstallGeoIPDatabases": "Как получить базы данных геолокации?",
"Latitude": "Широта",
"Latitudes": "Широта",
"Location": "Локация",
"LocationProvider": "Способ определения локации пользователя",
+ "LocationsSubcategoryHelp": "Раздел Locations — это лучший способ узнать, где находятся люди, посещающие ваш сайт. Он показывает страны, континенты, регионы, города, из которых приходят ваши посетители, в виде таблиц и карт. Кроме того, вы можете увидеть, на какой язык настроен их браузер, что поможет определить иностранных посетителей в других местах.",
"Longitude": "Долгота",
"Longitudes": "Долгота",
+ "MaxMindLinkExplanation": "Если вы используете геолокационные базы данных MaxMind и еще не знаете, как генерировать URL-адрес загрузки, %1$sнажмите здесь, чтобы узнать как%2$s.",
"NoDataForGeoIPReport1": "Не существует данных для этого отчета, потому что либо нет данных о местоположении или IP адрес посетителя не может быть определён географически.",
"NoDataForGeoIPReport2": "Для обеспечения точной геолокации, изменить параметры %1$sтут%2$s и используйте %3$sбазу данных городов%4$s.",
- "PluginDescription": "Сообщает местонахождение посетителей: страна, регион, город и географические координаты (широта\/долгота).",
+ "NoProviders": "В настоящее время не существует дополнительных провайдеров геолокации. Matomo рекомендует использовать базы данных %1$sdbip%2$s, но для этого необходимо активировать плагин GeoIp2. (В качестве альтернативы вы можете установить плагин стороннего производителя, который предоставляет свои собственные функции геолокации из маректплейса).",
+ "PluginDescription": "Сообщает местонахождение посетителей: страна, регион, город и географические координаты (широта/долгота).",
"Region": "Регион",
"SubmenuLocations": "Локации",
- "ToGeolocateOldVisits": "Для того чтобы получить информацию о местоположении для предыдущих посетителей, воспользуйтесь скриптом, о котором написано %1$sтут%2$s.",
- "WidgetLocation": "Местонахождение посетителя"
+ "TestIPLocatorFailed": "Matomo попытался проверить местоположение известного IP-адреса (%1$s), но ваш сервер не вернул никакой информации. Возможно, этот провайдер настроен неправильно (например, база данных геолокации может быть названа неверно или расположена в неправильном каталоге).",
+ "ToGeolocateOldVisits": "Чтобы получить данные о местоположении для старых посещений, используйте скрипт, описанный %1$sтут%2$s.",
+ "VisitLocation": "Местоположение посещения",
+ "WidgetLocation": "Местонахождение посетителя",
+ "country_a1": "Анонимный прокси",
+ "country_a2": "Спутниковый провайдер",
+ "country_cat": "Каталаноязычные общества",
+ "country_o1": "Другая страна",
+ "getCityDocumentation": "Этот отчет показывает города посетителей вашего сайта.",
+ "getContinentDocumentation": "Этот отчет показывает континенты посетителей вашего сайта.",
+ "getCountryDocumentation": "Этот отчет показывает страны посетителей вашего сайта.",
+ "getRegionDocumentation": "Этот отчет показывает регионы посетителей вашего сайта."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountry/lang/sq.json b/plugins/UserCountry/lang/sq.json
index 5606cc7c42..fcb7987785 100644
--- a/plugins/UserCountry/lang/sq.json
+++ b/plugins/UserCountry/lang/sq.json
@@ -1,50 +1,51 @@
{
"UserCountry": {
- "CannotLocalizeLocalIP": "Adresa IP %s është një adresë vendore dhe s’gjeolokalizohet dot.",
+ "CannotLocalizeLocalIP": "Adresa IP %s është një adresë vendore dhe s’mund të gjeolokalizohet.",
"City": "Qytet",
"CityAndCountry": "%1$s, %2$s",
"Continent": "Kontinent",
"Continents": "Kontinente",
"Country": "Vend",
"CountryCode": "Kod vendi",
- "country_a1": "Ndërmjetës Anonim",
- "country_a2": "Furnizues Satelitor",
- "country_cat": "Bashkësi që flasin Katalançe",
- "country_o1": "Vend Tjetër",
- "VisitLocation": "Vend Vizite",
- "CurrentLocationIntro": "Sipas këtij furnizuesi, gjendeni në",
+ "CurrentLocationIntro": "Sipas këtij furnizuesi, vendndodhja juaj aktuale është",
"DefaultLocationProviderDesc1": "Furnizuesi parazgjedhje i vendeve e hamendëson vendin e një vizitori bazuar në gjuhën e përdorur prej tyre.",
- "DefaultLocationProviderDesc2": "Kjo s’është shumë e saktë, ndaj %1$skëshillojmë instalimin dhe përdorimin e %2$snjë baze të dhënash gjeovendëzimi%3$s.%4$s",
- "DefaultLocationProviderExplanation": "Po përdorni furnizuesin parazgjedhje të vendeve, që do të thotë se Matomo do ta hamendësojë vendin e vizitorit bazuar në gjuhën që ky përdor. %1$sLexoni këtë%2$s që të mësoni se si të rregulloni gjeovendëzim më të saktë.",
+ "DefaultLocationProviderDesc2": "Kjo s’është shumë e saktë, ndaj %1$skëshillojmë instalimin dhe përdorimin e %2$snjë baze të dhënash gjeolokalizimi%3$s.%4$s",
+ "DefaultLocationProviderExplanation": "Po përdorni furnizuesin parazgjedhje të vendeve, që do të thotë se Matomo do ta hamendësojë vendin e vizitorit bazuar në gjuhën që ky përdor. Që të mësoni se si të rregulloni gjeolokalizim më të saktë, %1$sLexoni këtë%2$s.",
+ "DisabledLocationProvider": "Çaktivizon gjeolokalizimin.",
"DistinctCountries": "%s vende ndaras",
"FromDifferentCities": "qytete të ndryshme",
"GeoIPDocumentationSuffix": "Që të mund të shihni të dhëna për këtë raport, duhet të rregulloni GeoIP-në te skeda e përgjegjësit për Gjeovendëzimin. Bazat komerciale të të dhënave GeoIP %1$sMaxmind%2$s janë më të sakta se sa ato falas. Që të shihni se sa të sakta janë, klikoni %3$skëtu%4$s.",
+ "GeoIpDbIpAccuracyNote": "Shënim: Bazat e të dhënave DBIP janë falas dhe mund të shkarkohen automatikisht, por përfundimet e gjeolokalizimit (posaçërisht përfundimet për qytete) s’janë aq të përpikta sa të MaxMind-it. MaxMind, nga ana tjetër, lyp të krijoni një llogari madje edhe për bazën falas të të dhënave. Nëse doni të përdorni bazën e të dhënave MaxMind për gjeolokalizime, procesin mund ta filloni %1$skëtu%2$s",
"Geolocation": "Gjeovendëzim",
"GeolocationPageDesc": "Në këtë faqe mund të ndryshoni mënyrën se si përcakton Matomo vendndodhjet e vizitorëve.",
- "GeolocationProviderBroken": "Furnizuesi i formësuar për gjeovendëzim, %1$s, është i dëmtuar. Ju lutemi, që gjeovendëzimi të punojë sërish, ndreqni furnizuesin ose formësoni një tjetër.",
- "GeolocationProviderUnavailable": "Furnizuesi i formësuar për gjeovendëzim, %1$s s’është më i passshëm. Ju lutemi, formësoni një tjetër.",
- "getCityDocumentation": "Ky raport shfaq qytetet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
- "getContinentDocumentation": "Ky raport shfaq kontinentet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
- "getCountryDocumentation": "Ky raport shfaq vendet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
- "getRegionDocumentation": "Ky raport shfaq rajonet ku gjendeshin vizitorët tuaj kur përdorën sajtin tuaj.",
- "HowToInstallGeoIPDatabases": "Si të marr baza të dhënash gjeovendëzimi?",
+ "GeolocationProviderBroken": "Furnizuesi i formësuar për gjeolokalizim, %1$s, është i dëmtuar. Ju lutemi, që gjeolokalizimi të punojë sërish, ndreqni furnizuesin ose formësoni një tjetër.",
+ "GeolocationProviderUnavailable": "Furnizuesi i formësuar për gjeolokalizim, %1$s s’është më i passshëm, ju lutemi, formësoni një tjetër.",
+ "HowToInstallGeoIPDatabases": "Si të marr baza të dhënash gjeolokalizimi?",
"Latitude": "Gjerësi gjeografike",
"Latitudes": "Gjerësi gjeografike",
"Location": "Vend",
"LocationProvider": "Furnizues Vendesh",
+ "LocationsSubcategoryHelp": "Ndarja Vendndodhje është rruga më e mirë për të mësuar se ku gjenden personat, kur vizitojnë sajtin tuaj. Shfaq vendet, kontinentet, rajonet, qytetet prej nga vijnë vizitorët tuaj, në formë tabelash dhe harte. Më tej, mund të shihni se në ç’gjuhë është vënë shfletuesi i tyre, për t’ju ndihmuar të identifikoni vizitorë ndërkombëtarë në vendndodhje të ndryshme.",
"Longitude": "Gjatësi gjeografike",
"Longitudes": "Gjatësi gjeografike",
- "NoDataForGeoIPReport1": "S’ka të dhëna për këtë raport, ngaqë s’ka të dhëna vendesh ose adresat IP të vizitorëve s’gjeovendëzohen dot.",
- "NoDataForGeoIPReport2": "Që të aktivizoni gjeovendëzim të saktë, ndryshoni rregullimet %1$skëtu%2$s dhe përdorni një %3$sbazë të dhënash në nivel qytetesh%4$s.",
- "NoProviders": "Hëpërhë s’ka furnizues shtesë gjeovendëzimi. Matomo këshillon përdorimin e bazave të dhënave %1$sdbip%2$s, por kjo lyp aktivizimin e shtojcës GeoIp2. (Ndryshe, mund të instaloni që nga tregu një shtojcë pale të tretë që furnizon funksionet e veta të gjeovendëzimit.)",
- "PluginDescription": "Raporton vendndodhjen e vizitorëve tuaj: vend, rajon, qytet dhe koordinata gjeografike (gjerësi gjeografike\/gjatësi gjeografike).",
+ "MaxMindLinkExplanation": "Nëse përdorni baza të dhënash MaxMind për gjeolokalizim dhe s’dini tashmë si të prodhoni URL-në tuaj të shkarkimit, %1$sklikoni këtu që të mësoni se si%2$s.",
+ "NoDataForGeoIPReport1": "S’ka të dhëna për këtë raport, ngaqë s’ka të dhëna vendesh, ose adresat IP të vizitorëve s’gjeolokalizohen dot.",
+ "NoDataForGeoIPReport2": "Që të aktivizoni gjeolokalizim të saktë, ndryshoni rregullimet %1$skëtu%2$s dhe përdorni një %3$sbazë të dhënash në nivel qytetesh%4$s.",
+ "NoProviders": "Hëpërhë s’ka furnizues shtesë gjeolokalizimi. Matomo këshillon përdorimin e bazave të dhënave %1$sdbip%2$s, por kjo lyp aktivizimin e shtojcës GeoIp2. (Ndryshe, mund të instaloni që nga tregu një shtojcë pale të tretë që furnizon funksionet e veta të gjeolokalizimit.)",
+ "PluginDescription": "Raporton vendndodhjen e vizitorëve tuaj: vend, rajon, qytet dhe koordinata gjeografike (gjerësi gjeografike/gjatësi gjeografike).",
"Region": "Rajon",
"SubmenuLocations": "Vende",
- "TestIPLocatorFailed": "Matomo provoi të kontrollojë vendin e një adrese të njohur IP (%1$s), por shërbyesi juaj s’u përgjigj me ndonjë të dhënë. Ky furnizues mund të mos jetë formësuar si duhet (baza e të dhënave për gjeovendëzim mund të jetë emërtuar jo saktë ose të gjendet në drejtori të gabuar, për shembull).",
+ "TestIPLocatorFailed": "Matomo provoi të kontrollojë vendin e një adrese të njohur IP (%1$s), por shërbyesi juaj s’u përgjigj me ndonjë të dhënë. Ky furnizues mund të mos jetë formësuar si duhet (baza e të dhënave për gjeolokalizim mund të jetë emërtuar jo saktë, ose të gjendet në drejtori të gabuar, për shembull).",
"ToGeolocateOldVisits": "Që të kini të dhëna vendesh për vizitat tuaja të vjetra, përdorni programthin e përshkruar %1$skëtu%2$s.",
+ "VisitLocation": "Vend Vizite",
"WidgetLocation": "Vend Vizitori",
- "GeoIpDbIpAccuracyNote": "Shënim: Bazat e të dhënave DBIP janë falas dhe mund të shkarkohen automatikisht, por përfundimet e gjeovendëzimit (posaçërisht përfundimet për qytete) s’janë aq të përpikta sa të MaxMind-it. MaxMind, nga ana tjetër, lyp të krijoni një llogari madje edhe për bazën falas të të dhënave. Nëse doni të përdorni bazën e të dhënave MaxMind për gjeovendëzime, procesin mund ta filloni %1$skëtu%2$s",
- "MaxMindLinkExplanation": "Nëse përdorni baza të dhënash MaxMind për gjeovendëzime dhe nuk dini tashmë si si të prodhoni URL-në tuaj të shkarkimit, %1$sklikoni këtu që të mësoni se si%2$s.",
- "LocationsSubcategoryHelp": "Ndarja Vendndodhje është rruga më e mirë për të mësuar se ku gjenden personat, kur vizitojnë sajtin tuaj. Shfaq vendet, kontinentet, rajonet, qytetet prej nga vijnë vizitorët tuaj, në formë tabelash dhe harte. Më tej, mund të shihni se në ç’gjuhë është caktuar shfletuesi i tyre, për t’ju ndihmuar të identifikoni vizitorë ndërkombëtarë në vendndodhje të ndryshme."
+ "country_a1": "Ndërmjetës Anonim",
+ "country_a2": "Furnizues Satelitor",
+ "country_cat": "Bashkësi që flasin katalançe",
+ "country_o1": "Vend Tjetër",
+ "getCityDocumentation": "Ky raport shfaq qytetet ku gjendeshin vizitorët tuaj, kur përdorën sajtin tuaj.",
+ "getContinentDocumentation": "Ky raport shfaq kontinentet ku gjendeshin vizitorët tuaj, kur përdorën sajtin tuaj.",
+ "getCountryDocumentation": "Ky raport shfaq vendet ku gjendeshin vizitorët tuaj, kur përdorën sajtin tuaj.",
+ "getRegionDocumentation": "Ky raport shfaq rajonet ku gjendeshin vizitorët tuaj, kur përdorën sajtin tuaj."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php
index 36920a51b4..8bfdabbe04 100644
--- a/plugins/UserCountryMap/Controller.php
+++ b/plugins/UserCountryMap/Controller.php
@@ -14,9 +14,6 @@ use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Piwik;
-use Piwik\Plugins\Goals\API as APIGoals;
-use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI;
-use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
use Piwik\View;
diff --git a/plugins/UserCountryMap/lang/ca.json b/plugins/UserCountryMap/lang/ca.json
index 27debbc17e..134b578808 100644
--- a/plugins/UserCountryMap/lang/ca.json
+++ b/plugins/UserCountryMap/lang/ca.json
@@ -1,6 +1,28 @@
{
"UserCountryMap": {
- "map": "mapa",
- "ShowingVisits": "Visites geolocalitzades des de l'última vegada"
+ "AndNOthers": "i %s altres",
+ "Cities": "Ciutats",
+ "Countries": "Països",
+ "DaysAgo": "fa %s dies",
+ "GoalConversions": "%s conversió d'objectius",
+ "HoursAgo": "fa %s hores",
+ "MinutesAgo": "fa %s minuts",
+ "NoVisit": "Cap visita",
+ "NoVisitsInfo": "No hi ha visites mostrades actualment, perquè cap visita d'aquest període té la informació de geolocalització correcta (latitud i longitud).",
+ "NoVisitsInfo2": "Per resoldre aquest problema assegureu-vos que feu servir un proveïdor de geolocalització GeoIP amb una base de dades de ciutat GeoIP. Si això no resol el vostre problema, és possible (encara que poc probable) que les vostres visites tinguin adreces IP que simplement no es poden geolocalitzar.",
+ "None": "Cap",
+ "PluginDescription": "Aquest connector proporciona els widgets Mapa de visitants i Mapa en temps real. Nota: requereix que el connector UserCountry estigui habilitat.",
+ "RealTimeMap": "Mapa en temps real",
+ "RealTimeMapHelp": "El mapa en temps real mostra la ubicació dels visitants al vostre lloc durant els darrers 30 minuts. Les bombolles taronges grans representen visites més recents, mentre que les bombolles grises més petites representen visites més antigues. Aquestes dades s'actualitzen cada cinc segons i apareixen nous visitants amb un efecte intermitent.",
+ "Regions": "Regions",
+ "Searches": "%s cerques",
+ "SecondsAgo": "fa %s segons",
+ "ShowingVisits": "Visites geolocalitzades des de l'última vegada",
+ "Unlocated": "<b>%1$s</b> %2$s de les visites de %3$s no s'han pogut geolocalitzar.",
+ "VisitorMap": "Mapa de visitants",
+ "WithUnknownCity": "%s amb ciutat desconeguda",
+ "WithUnknownRegion": "%s amb ciutat desconeguda",
+ "WorldWide": "Mundial",
+ "map": "mapa"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountryMap/lang/id.json b/plugins/UserCountryMap/lang/id.json
index 86852fa8d9..42cc55e63a 100644
--- a/plugins/UserCountryMap/lang/id.json
+++ b/plugins/UserCountryMap/lang/id.json
@@ -1,16 +1,19 @@
{
"UserCountryMap": {
"AndNOthers": "dan %s lain",
- "Cities": "Kita",
+ "Cities": "Kota",
"Countries": "Negara",
"DaysAgo": "%s hari lalu",
"GoalConversions": "%s konversi tujuan",
"HoursAgo": "%s jam lalu",
"MinutesAgo": "%s menit lalu",
"NoVisit": "Tidak ada kunjungan",
+ "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",
+ "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",
diff --git a/plugins/UserCountryMap/lang/lv.json b/plugins/UserCountryMap/lang/lv.json
index 5db0379f93..415bb79511 100644
--- a/plugins/UserCountryMap/lang/lv.json
+++ b/plugins/UserCountryMap/lang/lv.json
@@ -1,5 +1,6 @@
{
"UserCountryMap": {
+ "AndNOthers": "u.c. %s",
"map": "karte"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountryMap/lang/ms.json b/plugins/UserCountryMap/lang/ms.json
index 0967ef424b..34803061ba 100644
--- a/plugins/UserCountryMap/lang/ms.json
+++ b/plugins/UserCountryMap/lang/ms.json
@@ -1 +1,6 @@
-{}
+{
+ "UserCountryMap": {
+ "Cities": "Bandar",
+ "Countries": "Negara"
+ }
+}
diff --git a/plugins/UserCountryMap/lang/sq.json b/plugins/UserCountryMap/lang/sq.json
index 8ea3536bdb..6064756b99 100644
--- a/plugins/UserCountryMap/lang/sq.json
+++ b/plugins/UserCountryMap/lang/sq.json
@@ -8,17 +8,17 @@
"HoursAgo": "%s orë më parë",
"MinutesAgo": "%s minuta më parë",
"NoVisit": "Pa vizita",
- "NoVisitsInfo": "Hëpërhë s’ka vizita të shfaqura, ngaqë për këtë periudhë asnjë vizitë nuk ka të dhëna të sakta gjeolokalizimi (gjerësi & gjatësi gjeografike).",
+ "NoVisitsInfo": "Hëpërhë s’ka vizita të shfaqura, ngaqë për këtë periudhë asnjë vizitë nuk ka të dhëna të sakta gjeolokalizimi (gjerësi &amp; gjatësi gjeografike).",
"NoVisitsInfo2": "Për ta zgjidhur këtë problem, sigurohuni që po përdorni një shërbim gjeolokalizimi GeoIP me një bazë të dhënash GeoIP qytetesh. Nëse kjo nuk e zgjidh problemin tuaj, atëherë ka mundësi (edhe pse zor) që vizitat tuaja të kenë adresa IP që nuk gjeolokalizohen dot.",
"None": "Asnjë",
- "PluginDescription": "Kjo shtojcë ofron widget-et Hartë Vizitorësh dhe Hartë Në Kohë Reale. Shënim: Lyp shtojcën UserCountry të aktivizuar.",
+ "PluginDescription": "Kjo shtojcë ofron widget-et Hartë Vizitorësh dhe Hartë e Atypëratyshme. Shënim: Lyp shtojcën UserCountry të aktivizuar.",
"RealTimeMap": "Hartë e Atypëratyshme",
- "RealTimeMapHelp": "Harta Aty Për Aty shfaq vendndodhjen e vizitorëve tuaj në sajt brenda 30 minutave të fundit. Flluskat e mëdha portokalli përfaqësojnë vizitat më të freskëta, ndërsa flluskat më të vogla gri përfaqësojnë vizita më të vjetra. Këto të dhëna rifreskohen çdo pesë sekonda, dhe vizitorët e rinj shfaqen me një efekt xixëllimi.",
+ "RealTimeMapHelp": "Harta e Atypëratyshme shfaq vendndodhjen e vizitorëve tuaj në sajt brenda 30 minutave të fundit. Flluskat e mëdha portokalli përfaqësojnë vizitat më të freskëta, ndërsa flluskat më të vogla gri përfaqësojnë vizita më të vjetra. Këto të dhëna rifreskohen çdo pesë sekonda dhe vizitorët e rinj shfaqen me një efekt xixëllimi.",
"Regions": "Rajone",
"Searches": "%s kërkime",
"SecondsAgo": "%s sekonda më parë",
- "ShowingVisits": "Vizita të gjeovendëzuara, për pjesën e fundit të",
- "Unlocated": "<b>%1$s</b> %2$s e vizitës prej %3$s s’u gjeovendëzua dot.",
+ "ShowingVisits": "Vizita të gjeolokalizuara, për pjesën e fundit të",
+ "Unlocated": "<b>%1$s</b> %2$s e vizitave prej %3$s s’u gjeolokalizuan dot.",
"VisitorMap": "Hartë Vizitorësh",
"WithUnknownCity": "%s me qytet të panjohur",
"WithUnknownRegion": "%s me rajon të panjohur",
diff --git a/plugins/UserId/API.php b/plugins/UserId/API.php
index 92dc26e4b1..1b2bc52655 100644
--- a/plugins/UserId/API.php
+++ b/plugins/UserId/API.php
@@ -9,10 +9,8 @@
namespace Piwik\Plugins\UserId;
use Piwik\Archive;
-use Piwik\Metrics;
use Piwik\Piwik;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* API for plugin UserId. Allows to get User IDs table.
diff --git a/plugins/UserId/Categories/VisitorsUserSubcategory.php b/plugins/UserId/Categories/VisitorsUserSubcategory.php
index 628a9b941f..99f61e22f2 100644
--- a/plugins/UserId/Categories/VisitorsUserSubcategory.php
+++ b/plugins/UserId/Categories/VisitorsUserSubcategory.php
@@ -21,7 +21,7 @@ class VisitorsUserSubcategory extends Subcategory
public function getHelp()
{
return '<p>' . Piwik::translate('UserId_VisitorsUserSubcategoryHelp') . '</p>'.
- '<p><a target="_blank" rel="noopener noreferrer" href="https://matomo.org/docs/user-id/"><span class="icon-info"></span> ' . Piwik::translate('CoreAdminHome_LearnMore') . '</a></p>';
+ '<p><a target="_blank" rel="noopener noreferrer" href="https://matomo.org/docs/user-id/?mtm_campaign=App_Help&mtm_source=Matomo_App&mtm_keyword=UserGuides"><span class="icon-info"></span> ' . Piwik::translate('CoreAdminHome_LearnMore') . '</a></p>';
;
}
}
diff --git a/plugins/UserId/Columns/UserId.php b/plugins/UserId/Columns/UserId.php
index ec53be2426..9a282d1e6e 100644
--- a/plugins/UserId/Columns/UserId.php
+++ b/plugins/UserId/Columns/UserId.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\UserId\Columns;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
/**
diff --git a/plugins/UserId/Reports/GetUsers.php b/plugins/UserId/Reports/GetUsers.php
index 24d0320157..8abf20a33a 100644
--- a/plugins/UserId/Reports/GetUsers.php
+++ b/plugins/UserId/Reports/GetUsers.php
@@ -12,8 +12,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
use Piwik\Plugins\UserId\Columns\UserId;
-use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetsList;
/**
* A report showing all unique user IDs and some aggregated information about them. It also allows
diff --git a/plugins/UserId/UserId.php b/plugins/UserId/UserId.php
index b56fa25590..75aa2ae10f 100644
--- a/plugins/UserId/UserId.php
+++ b/plugins/UserId/UserId.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId;
-use Piwik\Db;
/**
* Plugin adds a new Users report showing all unique user IDs and some aggregated data
diff --git a/plugins/UserId/lang/ca.json b/plugins/UserId/lang/ca.json
index ef7056f9df..80ab40ec59 100644
--- a/plugins/UserId/lang/ca.json
+++ b/plugins/UserId/lang/ca.json
@@ -1,5 +1,10 @@
{
"UserId": {
- "UserReportTitle": "Usuaris"
+ "PluginDescription": "Mostra els informes d'usuari",
+ "ThereIsNoDataForThisReportHelp": "%1$sObteniu més informació sobre com generar dades per a aquest informe a la nostra guia d'usuari.%2$s",
+ "UserId": "Id d'usuari",
+ "UserReportDocumentation": "Aquest informe mostra les visites i altres mètriques generals per a cada identificador d'usuari individual.",
+ "UserReportTitle": "Usuaris",
+ "VisitorsUserSubcategoryHelp": "L'informe d'identificacions d'usuari mostra les visites associades a tots els usuaris registrats i connectats. Podeu utilitzar aquesta secció per entendre l'ús del lloc web per part d'usuaris específics i identificar quins són els vostres usuaris més i menys actius."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserId/lang/id.json b/plugins/UserId/lang/id.json
index 2ec10bf809..1df67f5be8 100644
--- a/plugins/UserId/lang/id.json
+++ b/plugins/UserId/lang/id.json
@@ -1,7 +1,10 @@
{
"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",
+ "UserReportDocumentation": "Laporan ini menunjukkan kunjungan dan metrik umum lainnya untuk setiap ID Pengguna individual.",
"UserReportTitle": "ID pengguna",
- "PluginDescription": "Tampilkan laporan 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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserId/lang/sq.json b/plugins/UserId/lang/sq.json
index ab6db85dd3..7db69f9bec 100644
--- a/plugins/UserId/lang/sq.json
+++ b/plugins/UserId/lang/sq.json
@@ -1,9 +1,10 @@
{
"UserId": {
+ "PluginDescription": "Shfaq raporte përdoruesi",
+ "ThereIsNoDataForThisReportHelp": "%1$sMësoni më tepër rreth se si të prodhohen të dhëna për këtë raport, te udhërrëfyesi ynë për përdorues.%2$s",
"UserId": "ID përdoruesi",
- "UserReportTitle": "ID-ra përdoruesish",
"UserReportDocumentation": "Ky raport shfaq vizita dhe vlera të tjera të përgjithshme për çdo ID individuale Përdoruesi.",
- "PluginDescription": "Shfaq raporte përdoruesi",
+ "UserReportTitle": "ID-ra përdoruesish",
"VisitorsUserSubcategoryHelp": "Raporti i ID-ve të Përdoruesve shfaq vizitat e përshoqëruara me krejt përdoruesit tuaj të regjistruar dhe të futur në llogaritë e tyre. Këtë ndarje mund ta përdorni për të kuptuar përdorimin e sajtit sipas përdoruesish të dhënë dhe të identifikoni se cilët janë përdoruesit tuaj më aktivë dhe më pak aktivë."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserId/lang/tl.json b/plugins/UserId/lang/tl.json
index 9c7f9b544f..fa335aee91 100644
--- a/plugins/UserId/lang/tl.json
+++ b/plugins/UserId/lang/tl.json
@@ -1,5 +1,6 @@
{
"UserId": {
+ "UserId": "UserID",
"UserReportTitle": "Users"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php b/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
index 5c1a16650d..733af46946 100644
--- a/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
+++ b/plugins/UserId/tests/Fixtures/OverwriteUserIdFixture.php
@@ -7,9 +7,7 @@
*/
namespace Piwik\Plugins\UserId\tests\Fixtures;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Plugins\UserId\API;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
index 43fb36f482..ff29a592e6 100644
--- a/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
+++ b/plugins/UserId/tests/Fixtures/TrackFewVisitsAndCreateUsers.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\Fixtures;
use Piwik\Date;
-use Piwik\Plugins\UserId\API;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/plugins/UserId/tests/System/ApiTest.php b/plugins/UserId/tests/System/ApiTest.php
index 3d626944f1..82f1079d71 100644
--- a/plugins/UserId/tests/System/ApiTest.php
+++ b/plugins/UserId/tests/System/ApiTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\System;
-use Piwik\Config;
use Piwik\Plugins\UserId\tests\Fixtures\TrackFewVisitsAndCreateUsers;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/UserId/tests/System/OverwriteUserIdTest.php b/plugins/UserId/tests/System/OverwriteUserIdTest.php
index 6b018d3749..6f6c0ba7af 100644
--- a/plugins/UserId/tests/System/OverwriteUserIdTest.php
+++ b/plugins/UserId/tests/System/OverwriteUserIdTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Plugins\UserId\tests\System;
-use Piwik\Config;
use Piwik\Plugins\UserId\tests\Fixtures\OverwriteUserIdFixture;
use Piwik\Plugins\UserId\tests\Fixtures\TrackFewVisitsAndCreateUsers;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/plugins/UserLanguage/API.php b/plugins/UserLanguage/API.php
index e924500a8b..756330f647 100644
--- a/plugins/UserLanguage/API.php
+++ b/plugins/UserLanguage/API.php
@@ -9,8 +9,6 @@
namespace Piwik\Plugins\UserLanguage;
use Piwik\Archive;
-use Piwik\DataTable;
-use Piwik\Metrics;
use Piwik\Piwik;
/**
diff --git a/plugins/UserLanguage/Reports/Base.php b/plugins/UserLanguage/Reports/Base.php
index 00d21dd7cc..87a98e780b 100644
--- a/plugins/UserLanguage/Reports/Base.php
+++ b/plugins/UserLanguage/Reports/Base.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\UserLanguage\Reports;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
abstract class Base extends \Piwik\Plugin\Report
{
diff --git a/plugins/UserLanguage/lang/ca.json b/plugins/UserLanguage/lang/ca.json
index 925027d210..17610b3548 100644
--- a/plugins/UserLanguage/lang/ca.json
+++ b/plugins/UserLanguage/lang/ca.json
@@ -1,5 +1,9 @@
{
"UserLanguage": {
- "LanguageCode": "Codi de l'idioma"
+ "BrowserLanguage": "Idioma del navegador",
+ "LanguageCode": "Codi de l'idioma",
+ "PluginDescription": "Informa de l'idioma utilitzat pels navegadors dels vostres visitants.",
+ "getLanguageCodeDocumentation": "Aquest informe mostra en quin codi d'idioma exacte està configurat el navegador del visitant. (p. ex., \"Alemany - Àustria (de-at)\")",
+ "getLanguageDocumentation": "Aquest informe mostra quin idioma utilitza el navegador del visitant. (p. ex., \"anglès\")"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserLanguage/lang/id.json b/plugins/UserLanguage/lang/id.json
index 8d359ebf78..32665124ae 100644
--- a/plugins/UserLanguage/lang/id.json
+++ b/plugins/UserLanguage/lang/id.json
@@ -2,6 +2,8 @@
"UserLanguage": {
"BrowserLanguage": "Bahasa Peramban",
"LanguageCode": "Kode Bahasa",
- "PluginDescription": "Laporan bahasa yang digunakan oleh peramban pengguna"
+ "PluginDescription": "Laporan bahasa yang digunakan oleh peramban 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\")"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserLanguage/lang/lv.json b/plugins/UserLanguage/lang/lv.json
index 1c8476a528..603ceb1c28 100644
--- a/plugins/UserLanguage/lang/lv.json
+++ b/plugins/UserLanguage/lang/lv.json
@@ -1,5 +1,6 @@
{
"UserLanguage": {
+ "BrowserLanguage": "Pārlūkprogrammas valoda",
"LanguageCode": "Valodas kods"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserLanguage/lang/sq.json b/plugins/UserLanguage/lang/sq.json
index 7a84d9c0ca..828f72e607 100644
--- a/plugins/UserLanguage/lang/sq.json
+++ b/plugins/UserLanguage/lang/sq.json
@@ -3,7 +3,7 @@
"BrowserLanguage": "Gjuhë shfletuesi",
"LanguageCode": "Kod gjuhe",
"PluginDescription": "Raporton gjuhën e përdorur nga shfletuesit e vizitorëve tuaj.",
- "getLanguageDocumentation": "Ky raport shfaq ç’gjuhëpo përdorin shfletuesit e vizitorëve (p.sh., \"Anglisht\")",
- "getLanguageCodeDocumentation": "Ky raport shfaq kodin e saktë të gjuhës të ujdisur për shfletuesit e vizitorëve. (p.sh., \"Gjermanishte - Austri (de-at)\")"
+ "getLanguageCodeDocumentation": "Ky raport shfaq kodin e saktë të gjuhës të ujdisur për shfletuesit e vizitorëve. (p.sh., “Gjermanisht - Austri (de-at)”)",
+ "getLanguageDocumentation": "Ky raport shfaq ç’gjuhë po përdorin shfletuesit e vizitorëve (p.sh., “Anglisht”)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php
index 5c258b54e4..b3efa63712 100644
--- a/plugins/UsersManager/API.php
+++ b/plugins/UsersManager/API.php
@@ -709,7 +709,7 @@ class API extends \Piwik\Plugin\API
* @see isValidPasswordString()
* @see isValidEmailString()
*
- * @exception in case of an invalid parameter
+ * @throws Exception in case of an invalid parameter
*/
public function addUser($userLogin, $password, $email, $_isPasswordHashed = false, $initialIdSite = null)
{
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index c67e9b9e1b..559ffd4324 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -23,16 +23,12 @@ use Piwik\Plugin\ControllerAdmin;
use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\Login\PasswordVerifier;
-use Piwik\Plugins\TagManager\Validators\TriggerIds;
use Piwik\Plugins\UsersManager\API as APIUsersManager;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Tracker\IgnoreCookie;
use Piwik\Translation\Translator;
use Piwik\Url;
-use Piwik\Validators\BaseValidator;
-use Piwik\Validators\CharacterLength;
-use Piwik\Validators\NotEmpty;
use Piwik\View;
use Piwik\Session\SessionInitializer;
use Piwik\Plugins\CoreAdminHome\Emails\TokenAuthCreatedEmail;
@@ -68,11 +64,6 @@ class Controller extends ControllerAdmin
parent::__construct();
}
- static function orderByName($a, $b)
- {
- return strcmp($a['name'], $b['name']);
- }
-
/**
* The "Manage Users and Permissions" Admin UI screen
*/
diff --git a/plugins/UsersManager/Model.php b/plugins/UsersManager/Model.php
index 6d38068274..915adf8767 100644
--- a/plugins/UsersManager/Model.php
+++ b/plugins/UsersManager/Model.php
@@ -10,16 +10,13 @@ namespace Piwik\Plugins\UsersManager;
use Piwik\Auth\Password;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\Db;
use Piwik\Option;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Plugins\UsersManager\Sql\SiteAccessFilter;
use Piwik\Plugins\UsersManager\Sql\UserTableFilter;
use Piwik\SettingsPiwik;
-use Piwik\SettingsServer;
use Piwik\Validators\BaseValidator;
use Piwik\Validators\CharacterLength;
use Piwik\Validators\NotEmpty;
diff --git a/plugins/UsersManager/NewsletterSignup.php b/plugins/UsersManager/NewsletterSignup.php
index ab8739570b..3e8be85a89 100644
--- a/plugins/UsersManager/NewsletterSignup.php
+++ b/plugins/UsersManager/NewsletterSignup.php
@@ -15,7 +15,6 @@ use Piwik\Container\StaticContainer;
use Piwik\Http;
use Piwik\Option;
use Piwik\SettingsPiwik;
-use Piwik\Url;
class NewsletterSignup
{
diff --git a/plugins/UsersManager/Sql/UserTableFilter.php b/plugins/UsersManager/Sql/UserTableFilter.php
index 3ff916772b..4743d17755 100644
--- a/plugins/UsersManager/Sql/UserTableFilter.php
+++ b/plugins/UsersManager/Sql/UserTableFilter.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\UsersManager\Sql;
-use Piwik\Access;
use Piwik\Common;
use Piwik\Piwik;
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index bc218a7158..13c65cb315 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -12,13 +12,10 @@ use Exception;
use Piwik\Access\Role\Admin;
use Piwik\Access\Role\Write;
use Piwik\API\Request;
-use Piwik\Auth\Password;
-use Piwik\Common;
use Piwik\Config;
use Piwik\Option;
use Piwik\Piwik;
use Piwik\Plugins\CoreHome\SystemSummary;
-use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
use Piwik\SettingsPiwik;
/**
@@ -36,7 +33,6 @@ class UsersManager extends \Piwik\Plugin
public function registerEvents()
{
return array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'SitesManager.deleteSite.end' => 'deleteSite',
'Tracker.Cache.getSiteAttributes' => 'recordAdminUsersInCache',
@@ -122,25 +118,13 @@ class UsersManager extends \Piwik\Plugin
}
/**
- * Return list of plug-in specific JavaScript files to be imported by the asset manager
- *
- * @see \Piwik\AssetManager
- */
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/UsersManager/angularjs/users-manager/users-manager.component.js";
- $jsFiles[] = "plugins/UsersManager/angularjs/personal-settings/personal-settings.controller.js";
- $jsFiles[] = "plugins/UsersManager/angularjs/personal-settings/anonymous-settings.controller.js";
- }
-
- /**
* Get CSS files
*/
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/UsersManager/stylesheets/usersManager.less";
- $stylesheets[] = "plugins/UsersManager/angularjs/users-manager/users-manager.component.less";
+ $stylesheets[] = "plugins/UsersManager/vue/src/UsersManager/UsersManager.less";
$stylesheets[] = "plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less";
$stylesheets[] = "plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less";
$stylesheets[] = "plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.less";
@@ -331,5 +315,15 @@ class UsersManager extends \Piwik\Plugin
$translationKeys[] = 'UsersManager_NewsletterSignupFailureMessage';
$translationKeys[] = 'UsersManager_NewsletterSignupSuccessMessage';
$translationKeys[] = 'UsersManager_FirstWebsitePermission';
+ $translationKeys[] = 'UsersManager_YourUsernameCannotBeChanged';
+ $translationKeys[] = 'General_Language';
+ $translationKeys[] = 'LanguagesManager_AboutPiwikTranslations';
+ $translationKeys[] = 'General_TimeFormat';
+ $translationKeys[] = 'UsersManager_ReportToLoadByDefault';
+ $translationKeys[] = 'UsersManager_ReportDateToLoadByDefault';
+ $translationKeys[] = 'UsersManager_NewsletterSignupTitle';
+ $translationKeys[] = 'UsersManager_NewsletterSignupMessage';
+ $translationKeys[] = 'UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess';
+ $translationKeys[] = 'UsersManager_ForAnonymousUsersReportDateToLoadByDefault';
}
}
diff --git a/plugins/UsersManager/angularjs/personal-settings/anonymous-settings.controller.js b/plugins/UsersManager/angularjs/personal-settings/anonymous-settings.controller.js
deleted file mode 100644
index 076afef752..0000000000
--- a/plugins/UsersManager/angularjs/personal-settings/anonymous-settings.controller.js
+++ /dev/null
@@ -1,47 +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('AnonymousSettingsController', AnonymousSettingsController);
-
- AnonymousSettingsController.$inject = ['piwikApi'];
-
- function AnonymousSettingsController(piwikApi) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
-
- function updateSettings(postParams)
- {
- self.loading = true;
-
- piwikApi.withTokenInUrl();
- piwikApi.post({
- module: 'UsersManager', action: 'recordAnonymousUserSettings', format: 'json'
- }, postParams).then(function (success) {
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {
- id: 'anonymousUserSettings', context: 'success'});
- notification.scrollToNotification();
-
- self.loading = false;
- }, function (errorMessage) {
- self.loading = false;
- });
- }
-
- this.save = function () {
-
- var postParams = {
- anonymousDefaultReport: this.defaultReport == '1' ? this.defaultReportWebsite : this.defaultReport,
- anonymousDefaultDate: this.defaultDate
- };
-
- updateSettings(postParams);
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/UsersManager/angularjs/personal-settings/personal-settings.controller.js b/plugins/UsersManager/angularjs/personal-settings/personal-settings.controller.js
deleted file mode 100644
index 2cc4b83045..0000000000
--- a/plugins/UsersManager/angularjs/personal-settings/personal-settings.controller.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').controller('PersonalSettingsController', PersonalSettingsController);
-
- PersonalSettingsController.$inject = ['piwikApi', '$filter', '$window', 'piwik'];
-
- function PersonalSettingsController(piwikApi, $filter, $window, piwik) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var translate = $filter('translate');
-
- var self = this;
-
- this.newsletterSignupButtonTitle = translate('General_Save');
- this.doesRequirePasswordConfirmation = false;
- this.showNewsletterSignup = true;
-
- function updateSettings(postParams)
- {
- self.loading = true;
-
- piwikApi.withTokenInUrl();
- piwikApi.post({
- module: 'UsersManager', action: 'recordUserSettings', format: 'json'
- }, postParams).then(function (success) {
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {
- id: 'PersonalSettingsSuccess', context: 'success'});
- notification.scrollToNotification();
-
- self.doesRequirePasswordConfirmation = false;
- self.passwordCurrent = '';
- self.loading = false;
- }, function (errorMessage) {
- self.loading = false;
- self.passwordCurrent = '';
- });
- }
-
- this.requirePasswordConfirmation = function () {
- this.doesRequirePasswordConfirmation = true;
- };
-
- this.signupForNewsletter = function () {
- var signupBtn = $('#newsletterSignupBtn');
- signupBtn.html(translate('General_Loading'));
- this.isProcessingNewsletterSignup = true;
-
- piwikApi.withTokenInUrl();
- piwikApi.fetch({module: 'API', method: 'UsersManager.newsletterSignup'}).then(function () {
- self.isProcessingNewsletterSignup = false;
- self.showNewsletterSignup = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(translate('UsersManager_NewsletterSignupSuccessMessage'), { id: 'newslettersignup', context: 'success'});
- notification.scrollToNotification();
-
- }, function () {
- self.isProcessingNewsletterSignup = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(translate('UsersManager_NewsletterSignupFailureMessage'), { id: 'newslettersignup', context: 'error' });
- notification.scrollToNotification();
-
- self.newsletterSignupButtonTitle = translate('General_PleaseTryAgain');
- });
- };
-
- this.cancelSave = function () {
- this.passwordCurrent = '';
- };
-
- this.save = function () {
-
- if (this.doesRequirePasswordConfirmation && !this.passwordCurrent) {
- angular.element('#confirmChangesWithPassword').modal({ dismissible: false, ready: function () {
- $('.modal.open #currentPassword').focus();
- }}).modal('open');
- return;
- }
-
- var modal = M.Modal.getInstance(angular.element('#confirmChangesWithPassword'));
-
- if (modal) {
- modal.close();
- }
-
- var postParams = {
- email: this.email,
- defaultReport: this.defaultReport == 'MultiSites' ? this.defaultReport : this.site.id,
- defaultDate: this.defaultDate,
- language: this.language,
- timeformat: this.timeformat,
- };
-
- if (this.passwordCurrent) {
- postParams.passwordConfirmation = this.passwordCurrent;
- }
-
- updateSettings(postParams);
- };
- }
-})();
diff --git a/plugins/UsersManager/angularjs/users-manager/users-manager.component.html b/plugins/UsersManager/angularjs/users-manager/users-manager.component.html
deleted file mode 100644
index 2aa773d9b7..0000000000
--- a/plugins/UsersManager/angularjs/users-manager/users-manager.component.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<div class="usersManager">
- <div ng-show="!$ctrl.isEditing">
- <div piwik-content-intro>
- <h2
- piwik-enriched-headline
- help-url="https://matomo.org/docs/manage-users/"
- feature-name="Users Management"
- >
- {{:: 'UsersManager_ManageUsers'|translate }}
- </h2>
-
- <p ng-if="$ctrl.currentUserRole==='superuser'">
- {{:: 'UsersManager_ManageUsersDesc'|translate }}
- </p>
- <p ng-if="$ctrl.currentUserRole==='admin'">
- {{:: 'UsersManager_ManageUsersAdminDesc'|translate }}
- </p>
-
- <div class="row add-user-container">
- <div class="col s12">
- <div class="input-field">
- <a class="btn add-new-user" ng-click="$ctrl.isEditing = true; $ctrl.userBeingEdited = null;">
- {{:: 'UsersManager_AddUser'|translate }}
- </a>
- </div>
- <div class="input-field" ng-if="$ctrl.currentUserRole !== 'superuser'">
- <a class="btn add-existing-user" ng-click="$ctrl.showAddExistingUserModal();">
- {{:: 'UsersManager_AddExistingUser'|translate }}
- </a>
- </div>
- </div>
- </div>
-
- <piwik-paged-users-list
- on-edit-user="$ctrl.onEditUser(user)"
- on-change-user-role="$ctrl.onChangeUserRole(users, role)"
- on-delete-user="$ctrl.onDeleteUser(users)"
- on-search-change="$ctrl.searchParams = params; $ctrl.fetchUsers();"
- initial-site-id="$ctrl.initialSiteId"
- initial-site-name="$ctrl.initialSiteName"
- is-loading-users="$ctrl.isLoadingUsers"
- current-user-role="$ctrl.currentUserRole"
- access-levels="$ctrl.accessLevels"
- filter-access-levels="$ctrl.filterAccessLevels"
- search-params="$ctrl.searchParams"
- users="$ctrl.users"
- total-entries="$ctrl.totalEntries"
- ></piwik-paged-users-list>
- </div>
- </div>
-
- <!-- TODO: whether a user is being edited should be part of the URL -->
- <div ng-if="$ctrl.isEditing">
- <piwik-user-edit-form
- on-done-editing="$ctrl.onDoneEditing(isUserModified);"
- user="$ctrl.userBeingEdited"
- current-user-role="$ctrl.currentUserRole"
- allow-superuser-edit="$ctrl.isCurrentUserSuperUser"
- access-levels="$ctrl.accessLevels"
- filter-access-levels="$ctrl.filterAccessLevels"
- initial-site-id="$ctrl.initialSiteId"
- initial-site-name="$ctrl.initialSiteName"
- on-updated="$ctrl.userBeingEdited = user"
- ></piwik-user-edit-form>
- </div>
-
- <div class="add-existing-user-modal modal">
- <div class="modal-content">
- <h3>{{:: 'UsersManager_AddExistingUser'|translate }}</h3>
- <p>{{:: 'UsersManager_EnterUsernameOrEmail'|translate }}:</p>
- <div
- piwik-field
- name="add-existing-user-email"
- uicontrol="text"
- ng-model="$ctrl.addNewUserLoginEmail"
- >
- </div>
- </div>
- <div class="modal-footer">
- <a href="" class="modal-action modal-close btn" ng-click="$ctrl.addExistingUser()">{{:: 'General_Add'|translate }}</a>
- <a href="" class="modal-action modal-close modal-no" ng-click="$ctrl.addNewUserLoginEmail = null;">{{:: 'General_Cancel'|translate }}</a>
- </div>
- </div>
-</div>
diff --git a/plugins/UsersManager/angularjs/users-manager/users-manager.component.js b/plugins/UsersManager/angularjs/users-manager/users-manager.component.js
deleted file mode 100644
index 9cdf402e83..0000000000
--- a/plugins/UsersManager/angularjs/users-manager/users-manager.component.js
+++ /dev/null
@@ -1,223 +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:
- * <piwik-users-manager>
- */
-(function () {
- angular.module('piwikApp').component('piwikUsersManager', {
- templateUrl: 'plugins/UsersManager/angularjs/users-manager/users-manager.component.html?cb=' + piwik.cacheBuster,
- bindings: {
- currentUserRole: '<',
- initialSiteName: '@',
- initialSiteId: '@',
- accessLevels: '<',
- filterAccessLevels: '<'
- },
- controller: UsersManagerController
- });
-
- UsersManagerController.$inject = ['$element', 'piwik', 'piwikApi', '$q', '$timeout'];
-
- function UsersManagerController($element, piwik, piwikApi, $q, $timeout) {
- var vm = this;
-
- var search = String(window.location.search);
- vm.isEditing = !!piwik.helper.getArrayFromQueryString(search).showadduser;
-
- vm.isCurrentUserSuperUser = true;
-
- // search state
- vm.users = [];
- vm.totalEntries = null;
- vm.searchParams = {};
- vm.isLoadingUsers = false;
-
- vm.$onInit = $onInit;
- vm.$onChanges = $onChanges;
- vm.$onDestroy = $onDestroy;
- vm.onEditUser = onEditUser;
- vm.onDoneEditing = onDoneEditing;
- vm.showAddExistingUserModal = showAddExistingUserModal;
- vm.onChangeUserRole = onChangeUserRole;
- vm.onDeleteUser = onDeleteUser;
- vm.fetchUsers = fetchUsers;
- vm.addExistingUser = addExistingUser;
-
- function onChangeUserRole(users, role) {
- vm.isLoadingUsers = true;
-
- $q.resolve().then(function () {
- if (users === 'all') {
- return getAllUsersInSearch();
- }
- return users;
- }).then(function (users) {
- return users.filter(function (user) {
- return user.role !== 'superuser';
- }).map(function (user) {
- return user.login;
- });
- }).then(function (userLogins) {
- var requests = userLogins.map(function (login) {
- return {
- method: 'UsersManager.setUserAccess',
- userLogin: login,
- access: role,
- idSites: vm.searchParams.idSite,
- ignoreSuperusers: 1
- };
- });
- return piwikApi.bulkFetch(requests, { createErrorNotification: true });
- }).catch(function (e) {
- // ignore (errors will still be displayed to the user)
- }).then(function () {
- return fetchUsers();
- });
- }
-
- function onDeleteUser(users) {
- vm.isLoadingUsers = true;
-
- $q.resolve().then(function () {
- if (users === 'all') {
- return getAllUsersInSearch();
- }
- return users;
- }).then(function (users) {
- return users.map(function (user) { return user.login; });
- }).then(function (userLogins) {
- var requests = userLogins.map(function (login) {
- return {
- method: 'UsersManager.deleteUser',
- userLogin: login
- };
- });
- return piwikApi.bulkFetch(requests, { createErrorNotification: true });
- }).catch(function () {
- // ignore (errors will still be displayed to the user)
- }).then(function () {
- return fetchUsers();
- });
- }
-
- function $onInit() {
- // TODO: maybe this should go in another directive...
- $element.tooltip({
- track: true,
- content: function() {
- var title = $(this).attr('title');
- return piwikHelper.escape(title.replace(/\n/g, '<br />'));
- },
- show: false,
- hide: false
- });
-
- if (vm.currentUserRole === 'superuser') {
- vm.filterAccessLevels.push({ key: 'superuser', value: 'Superuser' });
- }
-
- vm.searchParams = {
- offset: 0,
- limit: 20,
- filter_search: '',
- filter_access: '',
- idSite: vm.initialSiteId
- };
-
- fetchUsers();
- }
-
- function $onChanges(changes) {
- if (changes.limit) {
- fetchUsers();
- }
- }
-
- function $onDestroy() {
- try {
- $element.tooltip('destroy');
- } catch (e) {
- // empty
- }
- }
-
- function fetchUsers() {
- vm.isLoadingUsers = true;
- return piwikApi.fetch($.extend({}, vm.searchParams, {
- method: 'UsersManager.getUsersPlusRole'
- }), { includeHeaders: true }).then(function (result) {
- vm.totalEntries = parseInt(result.headers('x-matomo-total-results')) || 0;
- vm.users = result.response;
-
- vm.isLoadingUsers = false;
- }).catch(function () {
- vm.isLoadingUsers = false;
- });
- }
-
- function getAllUsersInSearch() {
- return piwikApi.fetch({
- method: 'UsersManager.getUsersPlusRole',
- filter_search: vm.searchParams.filter_search,
- filter_access: vm.searchParams.filter_access,
- idSite: vm.searchParams.idSite,
- filter_limit: '-1'
- });
- }
-
- function onEditUser(user) {
- piwik.helper.lazyScrollToContent();
- vm.isEditing = true;
- vm.userBeingEdited = user;
- }
-
- function onDoneEditing(isUserModified) {
- vm.isEditing = false;
- if (isUserModified) { // if a user was modified, we must reload the users list
- fetchUsers();
- }
- }
-
- function showAddExistingUserModal() {
- $element.find('.add-existing-user-modal').modal({ dismissible: false }).modal('open');
- }
-
- function addExistingUser() {
- vm.isLoadingUsers = true;
- return piwikApi.fetch({
- method: 'UsersManager.userExists',
- userLogin: vm.addNewUserLoginEmail
- }).then(function (response) {
- if (response && response.value) {
- return vm.addNewUserLoginEmail;
- }
-
- return piwikApi.fetch({
- method: 'UsersManager.getUserLoginFromUserEmail',
- userEmail: vm.addNewUserLoginEmail
- }).then(function (response) {
- return response.value;
- });
- }).then(function (login) {
- return piwikApi.post({
- method: 'UsersManager.setUserAccess'
- }, {
- userLogin: login,
- access: 'view',
- idSites: vm.searchParams.idSite
- });
- }).catch(function (error) {
- vm.isLoadingUsers = false;
- throw error;
- }).then(function () {
- return fetchUsers();
- });
- }
- }
-})();
diff --git a/plugins/UsersManager/lang/ar.json b/plugins/UsersManager/lang/ar.json
index c19f19d748..3f59e1302e 100644
--- a/plugins/UsersManager/lang/ar.json
+++ b/plugins/UsersManager/lang/ar.json
@@ -1,7 +1,6 @@
{
"UsersManager": {
"2FA": "مث",
- "TwoFactorAuthentication": "المصادقة الثنائية",
"AddUser": "أضف مستخدم جديد",
"AllWebsites": "كافة المواقع",
"ApplyToAllWebsites": "تطبيق على كافة المواقع",
@@ -18,8 +17,8 @@
"ForAnonymousUsersReportDateToLoadByDefault": "للمستخدمين المجهولين، حدد تاريخ التقرير",
"ManageAccess": "إدارة صلاحيات الوصول",
"MenuAnonymousUserSettings": "إعدادات المستخدمين المجهولين",
- "MenuUsers": "المستخدمون",
"MenuUserSettings": "إعدادات المستخدم",
+ "MenuUsers": "المستخدمون",
"PrivAdmin": "إشراف",
"PrivNone": "بدون وصول",
"PrivView": "مشاهدة",
@@ -27,14 +26,14 @@
"ReportToLoadByDefault": "التقرير الافتراضي",
"TheLoginScreen": "شاشة تسجيل الدخول",
"ThereAreCurrentlyNRegisteredUsers": "يوجد حالياً %s مستخدم مسجل.",
+ "TwoFactorAuthentication": "المصادقة الثنائية",
"TypeYourPasswordAgain": "اكتب كلمة المرور الجديدة مرة أخرى.",
"User": "المستخدم",
+ "Username": "اسم المستخدم",
"UsersManagement": "إدارة المستخدمين",
"UsersManagementMainDescription": "أنشئ متسخدم جديد أو قم بتحديث مستخدم قائم. يمكنك أن تضبط صلاحياتهم بالأعلى.",
"YourUsernameCannotBeChanged": "لا يمكن تغيير اسم المستخدم الخاص بك.",
"YourVisitsAreIgnoredOnDomain": "%1$s زياراتك يتم تجاهلها في Matomo%2$s %3$s(تم العثور على كوكيز التجاهل في متصفحك).",
- "YourVisitsAreNotIgnored": "%1$s لا يتم تجاهل زياراتك في Matomo%2$s (كوكيز التجاهل غير موجودة في متصفحك).",
- "ShowAll": "عرض الكل",
- "Username": "اسم المستخدم"
+ "YourVisitsAreNotIgnored": "%1$s لا يتم تجاهل زياراتك في Matomo%2$s (كوكيز التجاهل غير موجودة في متصفحك)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/az.json b/plugins/UsersManager/lang/az.json
index 22bc6a575d..6ceeee9f8a 100644
--- a/plugins/UsersManager/lang/az.json
+++ b/plugins/UsersManager/lang/az.json
@@ -1,6 +1,5 @@
{
"UsersManager": {
- "MenuUsers": "İstifadəçilər",
- "ShowAll": "Hamısını göstər"
+ "MenuUsers": "İstifadəçilər"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/bg.json b/plugins/UsersManager/lang/bg.json
index 9000b40e0f..4681e875b0 100644
--- a/plugins/UsersManager/lang/bg.json
+++ b/plugins/UsersManager/lang/bg.json
@@ -24,11 +24,12 @@
"InjectedHostCannotChangePwd": "В момента вие посещавате страница от неизвестен хост(%1$s). Не можете да смените паролата, преди да отстраните този проблем.",
"LastSeen": "Последно видяно",
"ManageAccess": "Управление на правата",
+ "ManageUsers": "Управление на потребители",
"MenuAnonymousUserSettings": "Настройки на анонимните потребители",
- "MenuUsers": "Потребители",
"MenuUserSettings": "Потребителски настройки",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Бележка: Не можете да променяте настройките в тази секция, защото нямате никакви сайтове с разрешен достъп за анонимни потребители.",
+ "MenuUsers": "Потребители",
"NoUsersExist": "Не са налични потребители, все още.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Бележка: Не можете да променяте настройките в тази секция, защото нямате никакви сайтове с разрешен достъп за анонимни потребители.",
"PrivAdmin": "Админ",
"PrivNone": "Без права",
"PrivView": "Преглед",
@@ -41,13 +42,11 @@
"ThereAreCurrentlyNRegisteredUsers": "Има %s регистрирани потребители.",
"TypeYourPasswordAgain": "Вашата нова парола отново.",
"User": "Потребител",
+ "Username": "Потребител",
"UsersManagement": "Управление на потребители",
"UsersManagementMainDescription": "Създайте нови потребители или управлявайте вече съществуващи. Също така и можете да задавате правата за достъп.",
"YourUsernameCannotBeChanged": "Потребителското име не може да се променя.",
"YourVisitsAreIgnoredOnDomain": "%1$sВашите посещения са игнорирани от Matomo в %2$s %3$s (Matomo игнорира бисквитката, намерена във Вашият браузър).",
- "YourVisitsAreNotIgnored": "%1$sВашите посещения не се игнорират от Matomo %2$s(Бисквитката за игнориране на Вашите посещения, не е открита във Вашият браузър).",
- "ManageUsers": "Управление на потребители",
- "ShowAll": "Покажи всички",
- "Username": "Потребител"
+ "YourVisitsAreNotIgnored": "%1$sВашите посещения не се игнорират от Matomo %2$s(Бисквитката за игнориране на Вашите посещения, не е открита във Вашият браузър)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ca.json b/plugins/UsersManager/lang/ca.json
index 8f1cb572b8..69abd06bfb 100644
--- a/plugins/UsersManager/lang/ca.json
+++ b/plugins/UsersManager/lang/ca.json
@@ -1,41 +1,191 @@
{
"UsersManager": {
+ "2FA": "2FA",
+ "AddExistingUser": "Afegeix un usuari existent",
+ "AddNewUser": "Afegeix un usuari nou",
+ "AddSuperuserAccessConfirm": "Donar accés de superusuari a un usuari permetrà que l'usuari tingui un control total sobre Matomo i s'hauria de fer amb moderació. Introduïu la vostra contrasenya per continuar.",
"AddUser": "Afegeix un usuari nou",
- "AllWebsites": "Tots els llocs",
- "ApplyToAllWebsites": "Aplica a tots els llocs",
- "ClickHereToDeleteTheCookie": "Feu click aquí per eliminar la galeta i permetre al Matomo rastrejar les vostres visites.",
- "ClickHereToSetTheCookieOnDomain": "Feu click aquí per guardar una galeta que exclourà les vostres visitis al Matomo de %s",
- "DeleteConfirm": "Esteu segur que voleu eliminar l'usuari %s?",
- "Email": "Correu-e",
- "EmailYourAdministrator": "%1$sEnvieu un email al vostre administrador explicant el problema%2$s.",
- "ExceptionDeleteDoesNotExist": "L'usuari '%s' no existeix i, per tant, no es pot esborrar.",
- "ExceptionEditAnonymous": "L'usuari anònim no es pot editar o esborrar. El Matomo el fa servir per als usuaris que no han iniciat encara la sessió. Per exemple, podeu fer públiques les vostres estadístiques garantint el permís 'vista' a l'usuari 'anonymous' (anònim).",
- "ExceptionEmailExists": "La direcció de correu-e '%s' ja està en un altre compte.",
- "ExceptionInvalidEmail": "La direcció de correu-e no té un format vàlid.",
+ "AddUserNoInitialAccessError": "Els usuaris nous han de tenir accés a un lloc web; si us plau, configureu el paràmetre 'initialIdSite'.",
+ "AllUsersAreSelected": "Tots els %1$s usuaris estan seleccionats.",
+ "AllWebsites": "Tots els llocs web",
+ "AllWebsitesAreSelected": "Tots els %1$s llocs web estan seleccionats.",
+ "AnonymousAccessConfirmation": "Esteu a punt de concedir a l'usuari anònim l'accés \"visualització\" a aquest lloc web. Això significa que els vostres informes d'anàlisi i la informació dels vostres visitants seran visibles públicament per tothom, fins i tot sense iniciar sessió. Esteu segur que voleu continuar?",
+ "AnonymousUser": "Usuari anònim",
+ "AnonymousUserHasViewAccess": "Nota: l'usuari de %1$s té accés de %2$s a aquest lloc web.",
+ "AnonymousUserHasViewAccess2": "Els vostres informes d'anàlisi i la informació dels vostres visitants es poden veure públicament.",
+ "AnonymousUserRoleChangeWarning": "Donar a l'usuari %1$s el rol %2$s farà que les dades d'aquest lloc web siguin públiques i estiguin disponibles per a tothom, encara que no tinguin un inici de sessió a Matomo.",
+ "ApplyToAllWebsites": "Aplicar a tots els llocs web",
+ "AreYouSure": "N'esteu segur?",
+ "AreYouSureAddCapability": "Esteu segur que voleu donar a %1$s la capacitat de %2$s per a %3$s?",
+ "AreYouSureChangeDetails": "Esteu segur que voleu canviar la informació de l'usuari per %s?",
+ "AreYouSureRemoveCapability": "Esteu segur que voleu eliminar la capacitat %1$s de %2$s per a %3$s?",
+ "AtLeastView": "Almenys veure",
+ "AuthTokenPurpose": "Per a què fas servir aquest testimoni?",
+ "AuthTokens": "Testimonis d'autenticació",
+ "BasicInformation": "Informació bàsica",
+ "BulkActions": "Accions massives",
+ "Capabilities": "Capacitats",
+ "CapabilitiesHelp": "Les capacitats són habilitats individuals que es poden concedir als usuaris. Els rols poden, per defecte, atorgar determinades capacitats. Per exemple, la funció d'administrador permetrà automàticament als usuaris editar etiquetes al Gestor d'etiquetes. Tanmateix, per als usuaris menys potents, podeu oferir-los de manera explícita les capacitats.",
+ "Capability": "Capacitat",
+ "ChangeAllConfirm": "Esteu segur que voleu donar accés \"%s\" a tots els llocs web?",
+ "ChangePermToAllSitesConfirm": "Esteu segur que voleu donar accés a l'usuari %1$s l'accés %2$s per a tots els llocs web als quals teniu actualment accés d'administrador?",
+ "ChangePermToAllSitesConfirm2": "Nota: això només afectarà els llocs web existents actualment. Els llocs web nous que podeu crear no seran accessibles automàticament per a aquest usuari.",
+ "ChangePermToSiteConfirmMultiple": "Esteu segur que voleu canviar el rol de %1$s als %2$s llocs web seleccionats a %3$s?",
+ "ChangePermToSiteConfirmSingle": "Esteu segur que voleu canviar la funció de %1$s a %2$s a %3$s?",
+ "ClickHereToDeleteTheCookie": "Feu clic aquí per eliminar la galeta i que Matomo faci un seguiment de les vostres visites",
+ "ClickHereToSetTheCookieOnDomain": "Feu clic aquí per configurar una galeta que exclou les vostres visites als llocs web seguits per Matomo a %s",
+ "ClickToSelectAll": "Feu clic per seleccionar tots els %1$s.",
+ "ClickToSelectDisplayedUsers": "Feu clic per seleccionar els %1$s usuaris que es mostren.",
+ "ClickToSelectDisplayedWebsites": "Feu clic per seleccionar els %1$s llocs web que es mostren.",
+ "ConfirmGrantSuperUserAccess": "Realment voleu concedir accés de superusuari a '%s'? Avís: l'usuari tindrà accés a tots els llocs web i podrà realitzar tasques administratives.",
+ "ConfirmProhibitMySuperUserAccess": "%s, realment vols eliminar el teu propi accés de superusuari? Perdràs tots els permisos i l'accés a tots els llocs web i es tancarà la sessió de Matomo.",
+ "ConfirmProhibitOtherUsersSuperUserAccess": "Realment voleu eliminar l'accés de superusuari de '%s'? L'usuari perdrà tots els permisos i l'accés a tots els llocs web. Assegureu-vos de donar accés als llocs web necessaris després si cal.",
+ "ConfirmTokenCopied": "Confirmo que he copiat el testimoni i entenc que no hauria de compartir aquest testimoni amb ningú més.",
+ "ConfirmWithPassword": "Introduïu la vostra contrasenya per confirmar aquest canvi.",
+ "CreateNewToken": "Crea un testimoni nou",
+ "CreateUser": "Crear usuari",
+ "CurrentPasswordNotCorrect": "La contrasenya actual que heu introduït no és correcta.",
+ "DeleteAllTokens": "Suprimeix tots els testimonis",
+ "DeleteConfirm": "Esteu segur que voleu suprimir l'usuari %s?",
+ "DeletePermConfirmMultiple": "Esteu segur que voleu eliminar l'accés de %1$s als%2$s llocs web seleccionats?",
+ "DeletePermConfirmSingle": "Esteu segur que voleu eliminar l'accés de %1$s a %2$s?",
+ "DeleteUserConfirmMultiple": "Esteu segur que voleu suprimir els %1$s usuaris seleccionats?",
+ "DeleteUserConfirmSingle": "Esteu segur que voleu suprimir %1$s?",
+ "DeleteUserPermConfirmMultiple": "Esteu segur que voleu canviar el rol dels %1$s usuaris seleccionats a %2$s per a %3$s?",
+ "DeleteUserPermConfirmSingle": "Esteu segur que voleu canviar el rol de %1$s a %2$s per a %3$s?",
+ "DeleteUsers": "Eliminar usuaris",
+ "DoNotStoreToken": "No compartiu aquest testimoni amb ningú més, ja que és tan secret com el vostre inici de sessió i contrasenya.",
+ "EditUser": "Edita l'usuari",
+ "Email": "Correu electrònic",
+ "EmailChangeNotificationSubject": "S'acaba de canviar l'adreça de correu electrònic del vostre compte de Matomo",
+ "EmailChangedEmail1": "L'adreça electrònica associada al vostre compte s'ha canviat a %1$s",
+ "EmailChangedEmail2": "Aquest canvi s'ha iniciat des del dispositiu següent: %1$s (adreça IP = %2$s).",
+ "EmailYourAdministrator": "%1$sEnvieu un correu electrònic al vostre administrador sobre aquest problema%2$s.",
+ "EnterUsernameOrEmail": "Introduïu un nom d'usuari o una adreça de correu electrònic",
+ "ExceptionAccessValues": "El paràmetre \"access\" ha de contenir un dels valors següents: [ %1$s ], actualment \"%2$s\".",
+ "ExceptionAnonymousAccessNotPossible": "Només podeu configurar l'accés %1$s o l'accés %2$s a l'usuari \"anònim\".",
+ "ExceptionAnonymousNoCapabilities": "No podeu concedir cap capacitat a l'usuari \"anònim\".",
+ "ExceptionDeleteDoesNotExist": "L'usuari '%s' no existeix i per tant no es pot suprimir.",
+ "ExceptionDeleteOnlyUserWithSuperUserAccess": "No és possible suprimir l'usuari '%s'.",
+ "ExceptionEditAnonymous": "L'usuari anònim no es pot editar ni esborrar. El Matomo l'utilitza per definir un usuari que encara no ha iniciat sessió. Per exemple, podeu fer públiques les vostres estadístiques concedint l'accés \"visualització\" a l'usuari \"anònim\".",
+ "ExceptionEmailExists": "L'usuari amb el correu electrònic '%s' ja existeix.",
+ "ExceptionEmailExistsAsLogin": "El correu electrònic '%s' ja s'utilitza com a nom d'usuari.",
+ "ExceptionInvalidEmail": "El correu electrònic no té un format vàlid.",
+ "ExceptionInvalidLoginFormat": "El nom d'usuari ha de tenir entre %1$s i %2$s caràcters i contenir només lletres, números o els caràcters '_', '-' o '.' o '@' o '+'",
+ "ExceptionInvalidPassword": "La longitud de la contrasenya ha de ser superior a %1$s caràcters.",
+ "ExceptionInvalidPasswordTooLong": "La longitud de la contrasenya ha de ser inferior a %1$s caràcters.",
+ "ExceptionLoginExists": "El nom d'usuari '%s' ja existeix.",
+ "ExceptionLoginExistsAsEmail": "El nom d'usuari '%s' ja s'utilitza com a correu electrònic.",
+ "ExceptionMultipleRoleSet": "Només es pot establir un rol, però se n'han establert diversos. Utilitzeu només un de: %s",
+ "ExceptionNoRoleSet": "No s'ha definit cap rol, però cal definir un d'aquests: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Introduïu un nom d'usuari o una adreça de correu electrònic.",
+ "ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth espera una contrasenya amb hash MD5 (cadena de 32 caràcters). Si us plau crideu la funció md5() de la contrasenya abans d'invocar aquest mètode.",
+ "ExceptionRemoveSuperUserAccessOnlySuperUser": "No és possible eliminar l'accés de superusuari de l'usuari '%s'.",
+ "ExceptionSuperUserAccess": "Aquest usuari té accés de superusuari i ja té permís per accedir i modificar tots els llocs web de Matomo. Podeu eliminar l'accés de superusuari d'aquest usuari i tornar-ho a provar.",
"ExceptionUserDoesNotExist": "L'usuari '%s' no existeix.",
- "ExcludeVisitsViaCookie": "Exclou les teues visites utilitzant cookies",
- "ForAnonymousUsersReportDateToLoadByDefault": "Pels usuaris anònims, introduïu la data dels informes per defecte",
- "InjectedHostCannotChangePwd": "Actualment esteu visitan amb un host desconegut (%1$s). No podeu canviar la vostra contrasenya fins que corregiu aquest problema.",
- "ManageAccess": "Gestiona els permisos",
- "MenuAnonymousUserSettings": "Preferències de l'usuari anònim",
+ "ExceptionUserHasSuperUserAccess": "L'usuari '%s' té accés de superusuari i ja té permís per accedir i modificar tots els llocs web de Matomo. Podeu eliminar l'accés de superusuari d'aquest usuari i tornar-ho a provar.",
+ "ExceptionUserHasViewAccessAlready": "Aquest usuari ja té accés a aquest lloc web.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Hi ha d'haver almenys un usuari amb accés de superusuari. Concediu primer l'accés de superusuari a un altre usuari.",
+ "ExcludeVisitsViaCookie": "Excloeu les vostres visites mitjançant una galeta",
+ "ExpireDate": "Data d'expiració",
+ "ExpiredTokensDeleteAutomatically": "Els testimonis amb data de caducitat s'eliminaran automàticament.",
+ "FilterByAccess": "Filtrar per accés",
+ "FilterByWebsite": "Filtrar per lloc web",
+ "FirstSiteInlineHelp": "Cal donar a un usuari nou una funció de visualització per a un lloc web en crear-lo. Si no es dóna accés, l'usuari veurà un error en iniciar sessió. Podeu donar més permisos després de crear l'usuari a la pestanya \"Permisos\" que apareixerà a l'esquerra.",
+ "FirstWebsitePermission": "Primer permís del lloc web",
+ "ForAnonymousUsersReportDateToLoadByDefault": "Per als usuaris anònims, la data de l'informe per carregar de manera predeterminada",
+ "GiveAccessToAll": "Doneu a aquest usuari accés a tots els llocs web",
+ "GiveUserAccess": "Doneu accés %2$s a \"%1$s\" per a %3$s.",
+ "GiveViewAccess": "Doneu accés de visualització a %1$s",
+ "GiveViewAccessInstructions": "Per donar accés de visualització a %s per a un usuari existent introduïu el nom d'usuari o l'adreça de correu electrònic d'un usuari existent",
+ "GiveViewAccessTitle": "Doneu accés a un usuari existent per veure els informes de %s",
+ "GoBackSecurityPage": "Torna a la pàgina de seguretat.",
+ "HasSuperUserAccess": "Té accés de superusuari",
+ "IfThisWasYouIgnoreIfNot": "Si heu estat vos, podeu ignorar aquest correu electrònic. Si no ereu vos, inicieu sessió, corregiu la vostra adreça de correu electrònic, canvieu la contrasenya i contacteu amb el vostre administrador de Matomo.",
+ "IfThisWasYouPasswordChange": "Si heu estat vos podeu ignorar aquest correu electrònic. Si no heu etsta vos, contacteu immediatament amb el vostre administrador de Matomo, ja que el vostre compte podria haver estat compromès!",
+ "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Si voleu canviar la contrasenya, introduïu-ne una de nova. En cas contrari, deixeu-ho en blanc.",
+ "IncludedInUsersRole": "Inclosa en el rol d'aquest usuari.",
+ "InjectedHostCannotChangePwd": "Actualment esteu visitant des d'un hoste desconegut (%1$s). No podeu canviar la contrasenya fins que no s'hagi solucionat aquest problema.",
+ "LastSeen": "Vist per últim cop",
+ "LastUsed": "Últim utilitzat",
+ "MainDescription": "Decidiu quins usuaris tenen accés als vostres llocs web. També podeu donar accés a tots els llocs web alhora escollint \"Aplica a tots els llocs web\" al selector de llocs web.",
+ "ManageAccess": "Gestionar l'accés",
+ "ManageUsers": "Gestionar Usuaris",
+ "ManageUsersAdminDesc": "Creeu usuaris nous o actualitzeu els usuaris existents. Aquí també podeu establir els seus permisos. Tingueu en compte que heu iniciat sessió com a administrador. Això vol dir que només veieu i gestioneu els usuaris que tenen accés als llocs web específics on teniu permisos \"administrador\". Només un usuari amb accés de superusuari pot veure i gestionar tots els usuaris de tots els llocs web.",
+ "ManageUsersDesc": "Creeu usuaris nous o actualitzeu els usuaris existents. Aquí també podeu establir els seus permisos.",
+ "MenuAnonymousUserSettings": "Configuració d'usuari anònim",
+ "MenuPersonal": "Personal",
+ "MenuUserSettings": "Configuració d'usuari",
"MenuUsers": "Usuaris",
- "MenuUserSettings": "Preferències d'usuari",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: No podeu canviar la configuració en aquest secció, perquè no teniu cap lloc web que pot ser visitat per usuaris anònims.",
- "PrivAdmin": "Administració",
+ "NewsletterSignupFailureMessage": "Vaja, alguna cosa ha fallat. No us hem pogut subscriure al butlletí.",
+ "NewsletterSignupMessage": "Subscriviu-vos al nostre butlletí per rebre informació regular sobre Matomo. Podeu donar-vos de baixa en qualsevol moment. Aquest servei utilitza MadMimi. Més informació al respecte a la %1$spàgina de política de privadesa de Matomo%2$s.",
+ "NewsletterSignupSuccessMessage": "Fantàstic, ja esteu inscrit! Ens posarem en contacte aviat.",
+ "NewsletterSignupTitle": "Inscripció al butlletí",
+ "NoAccessWarning": "Aquest usuari no té accés a cap lloc web. Quan iniciïn sessió veuran un missatge d'error. Per evitar-ho, afegiu accés a un lloc web a continuació.",
+ "NoTokenCreatedYetCreateNow": "Encara no s'ha creat cap testimoni, %1$screeu un testimoni nou ara%2$s.",
+ "NoUsersExist": "Encara no hi ha usuaris.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: no podeu canviar la configuració d'aquesta secció, perquè no teniu cap lloc web al qual pugui accedir l'usuari anònim.",
+ "OrManageIndividually": "O gestioneu l'accés d'aquest usuari a cada lloc web de manera individual",
+ "PasswordChangeNotificationSubject": "S'acaba de canviar la contrasenya del vostre compte de Matomo",
+ "PasswordChangedEmail": "S'acaba de canviar la teva contrasenya. El canvi s'ha iniciat des del dispositiu següent: %1$s (adreça IP = %2$s).",
+ "Permissions": "Permisos",
+ "PersonalSettings": "Configuració personal",
+ "PleaseStoreToken": "Si us plau emmagatzemeu el vostre testimoni de manera segura, ja que no podreu accedir-hi ni tornar-lo a veure.",
+ "PluginDescription": "La gestió d'usuaris us permet afegir nous usuaris, editar usuaris existents i donar-los accés per veure o administrar llocs web.",
+ "PrivAdmin": "Administrador",
+ "PrivAdminDescription": "Els usuaris amb aquest rol poden gestionar un lloc web i donar accés al lloc web a d'altres usuaris. També poden fer tot el que el rol de %s pot fer.",
"PrivNone": "Sense accés",
"PrivView": "Vista",
- "ReportDateToLoadByDefault": "Data dels informes per defecte",
- "ReportToLoadByDefault": "Informe per defecte",
- "TheLoginScreen": "Pàgina d'entrada",
- "ThereAreCurrentlyNRegisteredUsers": "Actualment hi ha %s usuaris registrats",
- "TypeYourPasswordAgain": "Introduïu de nou la nova contrasenya.",
+ "PrivViewDescription": "Un usuari amb aquest rol pot veure tots els informes.",
+ "PrivWrite": "Escriure",
+ "PrivWriteDescription": "Els usuaris amb aquest rol poden veure tot el contingut a més de crear, gestionar i suprimir entitats com ara objectius, embuts, mapes de calor, enregistraments de sessions i formularis per a aquest lloc web.",
+ "RemoveAllAccessToThisSite": "Elimina tots els accessos a aquest lloc web",
+ "RemovePermissions": "Elimina els permisos",
+ "RemoveSuperuserAccessConfirm": "L'eliminació de l'accés de superusuari deixarà l'usuari sense permisos (haureu d'afegir-los després). Introduïu la vostra contrasenya per continuar.",
+ "RemoveUserAccess": "Suprimeix l'accés a \"%1$s\" a %2$s.",
+ "ReportDateToLoadByDefault": "Data de l'informe per carregar de manera predeterminada",
+ "ReportToLoadByDefault": "Informe per carregar per defecte",
+ "ResetTwoFactorAuthentication": "Restableix l'autenticació de dos factors",
+ "ResetTwoFactorAuthenticationInfo": "Si l'usuari ja no pot iniciar sessió a causa de la pèrdua de codis de recuperació o d'un dispositiu d'autenticació perdut, podeu restablir l'autenticació de dos factors per a l'usuari perquè pugui tornar a iniciar la sessió.",
+ "Role": "Rol",
+ "RoleFor": "Rol per a",
+ "RolesHelp": "Els rols determinen què pot fer un usuari a Matomo en relació a un lloc web específic. Més informació sobre les funcions %1$sLectura%2$s i %3$sAdministració%4$s.",
+ "SaveBasicInfo": "Desa la informació bàsica",
+ "SetPermission": "Estableix el permís",
+ "SuperUserAccess": "Accés superusuari",
+ "SuperUserAccessManagement": "Gestiona l'accés de superusuari",
+ "SuperUserAccessManagementGrantMore": "Aquí podeu concedir accés de superusuari a d'altres usuaris de Matomo. Si us plau utilitzeu aquesta funció amb cura.",
+ "SuperUserAccessManagementMainDescription": "Els superusuaris tenen els permisos més elevats. Poden realitzar totes les tasques administratives, com ara afegir nous llocs web per supervisar, afegir usuaris, canviar els permisos d'usuari, activar i desactivar connectors i fins i tot instal·lar connectors nous des del Marketplace.",
+ "SuperUserIntro1": "Els superusuaris tenen els permisos més elevats. Poden realitzar totes les tasques administratives, com ara afegir nous llocs web per supervisar, afegir usuaris, canviar els permisos d'usuari, activar i desactivar connectors i fins i tot instal·lar connectors nous des del Marketplace. Podeu concedir accés de superusuari a d'altres usuaris de Divezone aquí.",
+ "SuperUserIntro2": "Si us plau utilitzeu aquesta funció amb cura.",
+ "SuperUsersPermissionsNotice": "Els superusuaris tenen accés d'administrador a tots els llocs web, de manera que no cal gestionar els seus permisos per cada lloc web.",
+ "TheDisplayedUsersAreSelected": "S'han seleccionat els %1$s usuaris que es mostren.",
+ "TheDisplayedWebsitesAreSelected": "Els %1$s llocs web que es mostren estan seleccionats.",
+ "TheLoginScreen": "La pantalla d'inici de sessió",
+ "ThereAreCurrentlyNRegisteredUsers": "Actualment hi ha %s usuaris registrats.",
+ "TokenAuth": "Testimoni d'autenticació de l'API",
+ "TokenAuthIntro": "Els testimonis que heu generat es poden utilitzar per accedir a l'API d'informes de Matomo, a l'API de seguiment de Matomo i als ginys de Matomo exportats i tenen els mateixos permisos que el vostre inici de sessió d'usuari habitual. També podeu utilitzar aquests testimonis per a l'aplicació Matomo Mobile.",
+ "TokenRegenerateConfirmSelf": "Si canvieu el testimoni d'autenticació de l'API, invalidarà el vostre propi testimoni. Si el testimoni actual està en ús, heu d'actualitzar tots els clients de l'API amb el testimoni generat de nou. Realment voleu canviar el vostre testimoni d'autenticació?",
+ "TokenRegenerateTitle": "Regenerar",
+ "TokenSuccessfullyDeleted": "El testimoni s'ha suprimit correctament",
+ "TokenSuccessfullyGenerated": "El testimoni s'ha generat correctament",
+ "TokensSuccessfullyDeleted": "Tots els testimonis s'han suprimit correctament",
+ "TokensWithExpireDateCreationBySystem": "Actualment només el sistema pot crear testimonis amb data de caducitat",
+ "TwoFactorAuthentication": "Autenticació de dos factors",
+ "TypeYourCurrentPassword": "Escriviu la vostra contrasenya actual per confirmar el canvi de contrasenya.",
+ "TypeYourPasswordAgain": "Torna a escriure la teva nova contrasenya.",
"User": "Usuari",
- "UsersManagement": "Gestiona els usuaris",
- "UsersManagementMainDescription": "Creeu nous usuaris o actualitzeu els existents. Podeu configurar els seus permisos a dalt.",
- "YourUsernameCannotBeChanged": "No es pot canviar el vostre nom d'usuari",
- "YourVisitsAreIgnoredOnDomain": "%1$sLes vostres visites són ignorades pel Matomo %2$s %3$s (la galeta d'ignorància del Matomo s'ha trobat al vostre navegador).",
- "YourVisitsAreNotIgnored": "%1$sLes vostres visites no són ignorades pel Matomo%2$s (la galeta d'ignorància del Matomo no s'ha trobat al vostre navegador).",
- "ShowAll": "Mostra-ho tot",
- "Username": "Usuari"
+ "UserHasNoPermission": "%1$s actualment té %2$s a %3$s",
+ "UserHasPermission": "%1$s té accés %2$s a %3$s.",
+ "UserSearch": "Cerca d'usuaris",
+ "Username": "Nom d'usuari",
+ "UsersManagement": "Gestió d'usuaris",
+ "UsersManagementMainDescription": "Creeu usuaris nous o actualitzeu els usuaris existents. Tot seguit podeu establir els seus permisos a dalt.",
+ "UsesTwoFactorAuthentication": "Utilitza l'autenticació de dos factors",
+ "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quan els usuaris no han iniciat sessió i visiten Matomo, haurien de veure inicialment",
+ "YourCurrentPassword": "La vostra contrasenya actual",
+ "YourUsernameCannotBeChanged": "El vostre nom d'usuari no es pot canviar.",
+ "YourVisitsAreIgnoredOnDomain": "%1$sMatomo ignora les vostres visites a %2$s %3$s (la galeta d'ignorar Matomo s'ha trobat al vostre navegador).",
+ "YourVisitsAreNotIgnored": "%1$sMatomo no ignora les vostres visites%2$s (la galeta d'ignorar Matomo no s'ha trobat al vostre navegador)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/cs.json b/plugins/UsersManager/lang/cs.json
index b4c6c1a86e..fe9bb900f1 100644
--- a/plugins/UsersManager/lang/cs.json
+++ b/plugins/UsersManager/lang/cs.json
@@ -1,24 +1,25 @@
{
"UsersManager": {
- "AddUser": "Přidat nového uživatele",
"AddExistingUser": "Přidat existujícího uživatele",
"AddNewUser": "Přidat novéhoho uživatele",
- "EditUser": "Upravit uživatele",
- "CreateUser": "Vytvořit uživatele",
- "SaveBasicInfo": "Uložit základní info",
+ "AddUser": "Přidat nového uživatele",
"AllWebsites": "Všechny weby",
"AnonymousAccessConfirmation": "Chystáte anonymnímu uživateli poskytnout přístup k tomuto webu. Znamená to, že vaše analytické přehledy a informace o vašich návštěvnících budou veřejně viditelné i bez přihlášení. Opravdu chcete pokračovat?",
"AnonymousUser": "Anonymní uživatel",
"AnonymousUserHasViewAccess": "Poznámka: %1$s uživatel má právo k přístupu k %2$s",
"AnonymousUserHasViewAccess2": "Vaše analytická hlášení a informace o návštěvnících jsou veřejně dostupná.",
"ApplyToAllWebsites": "Použít na všechny weby",
+ "AreYouSure": "Jste si jisti?",
+ "BasicInformation": "Základní informace",
"ChangeAllConfirm": "Opravdu chcete uživateli '%s' povolit přístup ke všem webům?",
"ClickHereToDeleteTheCookie": "Klinětě zde pro vymazání cookie a zaznamenávání vaších návštěv",
"ClickHereToSetTheCookieOnDomain": "Klikněte zde pro nastavení cookie, která vynechá vaše návštěvy na webech monitorováných Matomoem na %s",
"ConfirmGrantSuperUserAccess": "Opravdu chcete uživateli %s povolit super-uživatelský přístup?",
"ConfirmProhibitMySuperUserAccess": "%s, opravdu chcete odstranit svůjvlastn í super-uživatelský přístup? Přijdete o všechna oprávnění a o přístup k datům stránek a budete odhlášen z Matomou.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Opravdu chcete odstranit super-uživatelský přístup pro '%s'? Tento uživatel přijde o všechna práva a o přístup ke všem stránkám. Nezapomeňte mu poté povolit přístup k těm které potřebuje, je-li to nutné.",
+ "CreateUser": "Vytvořit uživatele",
"DeleteConfirm": "Jste si jistí, že chcete vymazat uživatele %s?",
+ "EditUser": "Upravit uživatele",
"Email": "E-mail",
"EmailYourAdministrator": "%1$sPošlete administrátorovi email o tomto problému%2$s.",
"EnterUsernameOrEmail": "Zadejte uživatelské jméno nebo emailovou adresu",
@@ -30,38 +31,44 @@
"ExceptionInvalidLoginFormat": "Uživatelské jméno musí být v rozmezí %1$s až %2$s znaků a obsahovat pouze písmena, čísla, či následující znaky '_' '-' '.' '@' '+'",
"ExceptionInvalidPassword": "Délka hesla msí být větší, než %1$s znaků.",
"ExceptionLoginExists": "Uživatel '%s' již existuje.",
+ "ExceptionNoValueForUsernameOrEmail": "Zadejte prosím uživatelské jméno nebo emailovou adresu.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth očekává heslo v podobě MD5 hashe (32 znaků dlouhého řetězce). Prosím nejprve zavoltejte metodu md5() na tomto hesle.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Odebrání super-uživatelského přístupu uživateli %s není možné.",
"ExceptionSuperUserAccess": "Tento uživatel již má super-uživatelský přístup, takže má přístup k datům všech stránek. Můžete super uživatelský přístup odstranit a zkusit to znovu.",
"ExceptionUserDoesNotExist": "Uživatel '%s' neexistuje.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Musí zůstat alespoň jeden uživatel se super-uživatelským přístupem. Nejdříve ho někomu přidělte.",
"ExceptionUserHasViewAccessAlready": "Tento uživatel má již přístup k této webové stránce.",
- "ExceptionNoValueForUsernameOrEmail": "Zadejte prosím uživatelské jméno nebo emailovou adresu.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Musí zůstat alespoň jeden uživatel se super-uživatelským přístupem. Nejdříve ho někomu přidělte.",
"ExcludeVisitsViaCookie": "Vynechat vaše navštěvy pomocí cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Datum hlášení, které se má načíst jako výchozí pro anonymní uživatele",
"GiveUserAccess": "Dát '%1$s' %2$s přístup pro %3$s.",
"GiveViewAccess": "Povolit práva prohlížení pro %1$s",
- "GiveViewAccessTitle": "Povolí existujícímu uživateli zobrazování hlášení pro %s",
"GiveViewAccessInstructions": "Pro přiřazení práv k zobrazení %s existujícímu uživateli, zadejte jeho uživatelské jméno nebo emailovou adresu",
+ "GiveViewAccessTitle": "Povolí existujícímu uživateli zobrazování hlášení pro %s",
"InjectedHostCannotChangePwd": "Aktuálně navštěvujete Matomo s neznámým hostitelem %1$s. Dokud tento problém nevyřešíte, nemůžete změnit heslo.",
"LastSeen": "Naposledy spatřen",
"MainDescription": "Rozhodněte, kteří uživatelé mají přístup k vašim webům. Můžete také povolit přístup ke všem webům najednou volbou \"Použít na všechny weby\" z výběru webů.",
"ManageAccess": "Správa přístupu",
+ "ManageUsers": "Spravovat uživatele",
"MenuAnonymousUserSettings": "Nastavení anonymního uživatele",
- "MenuUsers": "Uživatelé",
- "MenuUserSettings": "Nastavení uživatele",
"MenuPersonal": "Osobní",
- "PersonalSettings": "Osobní nastavení",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Poznámka: Nemůžete měnit nastavení v této sekci, protože žádná z vašich stránek nemůže být zobrazena anonymním uživatelem.",
+ "MenuUserSettings": "Nastavení uživatele",
+ "MenuUsers": "Uživatelé",
"NoUsersExist": "Zatím nejsou žádní uživatelé.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Poznámka: Nemůžete měnit nastavení v této sekci, protože žádná z vašich stránek nemůže být zobrazena anonymním uživatelem.",
+ "Permissions": "Oprávnění",
+ "PersonalSettings": "Osobní nastavení",
"PluginDescription": "Správa uživatelů vám umožňuje přidávat nové uživatele, upravovat existující a přidávat oprávnění k zobrazování nebo správě webových stránek.",
"PrivAdmin": "Administrátor",
- "PrivWrite": "Zapsat",
"PrivNone": "Žádné oprávnění",
"PrivView": "Zobrazit",
+ "PrivWrite": "Zapsat",
+ "RemovePermissions": "Odebrat oprávnění",
"RemoveUserAccess": "Odebrat '%1$s' přístup k %2$s.",
"ReportDateToLoadByDefault": "Datum hlášení, které se má načíst jako výchozí",
"ReportToLoadByDefault": "Hlášení, které se má načíst jako výchozí",
+ "Role": "Role",
+ "SaveBasicInfo": "Uložit základní info",
+ "SetPermission": "Nastavit oprávnění",
"SuperUserAccessManagement": "Spravovat super-uživatelský přístup",
"SuperUserAccessManagementGrantMore": "Zde můžete přidělovat super-uživatelský přístup jiným uživatelům Matomou. Používejte tuto funkci opatrně.",
"SuperUserAccessManagementMainDescription": "Super-uživatelé mají nejvyšší oprávnění. Mohou vykonávat všechny administrativní operace, jako je přidávání stránek k monitorování, přidávání uživatelů, změna uživatelských oprávnění, povolování a zakazování zásuvných modulů a dokonce jejich instalace z obchodu.",
@@ -71,21 +78,13 @@
"TokenRegenerateTitle": "Obnovit",
"TypeYourPasswordAgain": "Zapiště vaše nové heslo znova",
"User": "Uživatel",
- "UserHasPermission": "%1$s má nyní %2$s přístup pro %3$s.",
"UserHasNoPermission": "%1$s aktuálně má %2$s pro %3$s",
+ "UserHasPermission": "%1$s má nyní %2$s přístup pro %3$s.",
+ "Username": "Uživatelské jméno",
"UsersManagement": "Správa uživatelů",
"UsersManagementMainDescription": "Vytvořte nové uživatele, nebo aktualizujte existující. Níže můžete nastavit jejich oprávnění.",
"YourUsernameCannotBeChanged": "Vaše uživatelské jméno nemůže být změněno",
"YourVisitsAreIgnoredOnDomain": "%1$sVaše návštěvy jsou vynechávány Matomoem na %2$s %3$s (cookie pro vynechání byla nalezena ve vašem prohlížeči).",
- "YourVisitsAreNotIgnored": "%1$sVaše návštěvy nejsou vynechávány Matomoem%2$s (cookie pro vynechání nebyla nalezena ve vašem prohlížeči).",
- "ManageUsers": "Spravovat uživatele",
- "SetPermission": "Nastavit oprávnění",
- "RemovePermissions": "Odebrat oprávnění",
- "Role": "Role",
- "BasicInformation": "Základní informace",
- "Permissions": "Oprávnění",
- "AreYouSure": "Jste si jisti?",
- "ShowAll": "Zobrazit vše",
- "Username": "Uživatelské jméno"
+ "YourVisitsAreNotIgnored": "%1$sVaše návštěvy nejsou vynechávány Matomoem%2$s (cookie pro vynechání nebyla nalezena ve vašem prohlížeči)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/da.json b/plugins/UsersManager/lang/da.json
index aa96d5248b..39b6b37eef 100644
--- a/plugins/UsersManager/lang/da.json
+++ b/plugins/UsersManager/lang/da.json
@@ -1,27 +1,24 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Benytter tofaktorgodkendelse",
- "TwoFactorAuthentication": "Tofaktorgodkendelse",
- "ResetTwoFactorAuthentication": "Nulstil tofaktorgodkendelse",
- "ResetTwoFactorAuthenticationInfo": "Hvis en bruger ikke længere kan logge ind pga. mistede genskabelseskoder eller mistet tofaktorgodkendelsesenhed, kan du nulstille tofaktorgodkendelse for brugeren, så de kan logge ind igen.",
- "AddUser": "Opret ny bruger",
"AddExistingUser": "Tilføj en eksisterende bruger",
"AddNewUser": "Tilføj ny bruger",
- "EditUser": "Rediger bruger",
- "CreateUser": "Opret bruger",
- "SaveBasicInfo": "Gem basisoplysninger",
+ "AddUser": "Opret ny bruger",
"AllWebsites": "Alle hjemmesider",
"AnonymousUser": "Anonym bruger",
"AnonymousUserHasViewAccess": "Bemærk: %1$s bruger har %2$s adgang til hjemmesiden.",
"AnonymousUserHasViewAccess2": "Analyserapporter og besøgendes oplysninger er offentligt tilgængelige.",
"ApplyToAllWebsites": "Tilføj til alle hjemmesider",
+ "BasicInformation": "Basisoplysninger",
"ClickHereToDeleteTheCookie": "Klik her for at slette cookie og få Matomo til at spore dine besøg",
"ClickHereToSetTheCookieOnDomain": "Klik her for at sætte en cookie og udeluk egne besøg på hjemmesider der spores af Matomo på %s",
"ConfirmGrantSuperUserAccess": "Vil du at give '%s' Superbruger adgang? Advarsel: brugeren vil have adgang til alle hjemmesider og vil være i stand til at udføre administrative opgaver.",
"ConfirmProhibitMySuperUserAccess": "%s, vil du virkelig fjerne din egen superbruger adgang? Du mister alle tilladelser og adgang til alle hjemmesider og vil blive logget ud af Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Vil du virkelig fjerne superbrugeradgang fra '%s'? Brugeren vil miste alle retigheder og adgang til alle hjemmesider. Sørg om nødvendigt for at give adgang til relevante hjemmesider efterfølgende.",
+ "ConfirmWithPassword": "Indtast din adgangskode for at bekræfte denne ændring.",
+ "CreateUser": "Opret bruger",
"DeleteConfirm": "Bekræft sletning af bruger %s?",
+ "EditUser": "Rediger bruger",
"Email": "E-mail",
"EmailYourAdministrator": "%1$sE-mail din administrator om dette problem%2$s.",
"EnterUsernameOrEmail": "Indtast brugernavn eller e-mailadresse",
@@ -32,54 +29,56 @@
"ExceptionInvalidEmail": "E-mailadressen er ikke i gyldigt format.",
"ExceptionInvalidLoginFormat": "Brugernavnet skal være på mellem %1$s og %2$s tegn og må kun indeholde bogstaver, tal samt tegnene “_”, “-”, “.” , “@”  eller “+”.",
"ExceptionLoginExists": "Brugernavn “%s” findes allerede.",
+ "ExceptionNoValueForUsernameOrEmail": "Indtast et brugernavn eller en e-mailadresse.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth forventer et MD5-hashet kodeord (32 tegn lang streng). Kald md5() funktionen på kodeordet, før denne metode kaldes.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Det er ikke muligt at fjerne superbruger adgang f0r brugeren '%s'.",
"ExceptionSuperUserAccess": "Brugeren har superbrugeradgang og har allerede tilladelse til at få adgang til og ændre alle hjemmesider i Matomo. Du kan fjerne superbrugeradgang fra brugeren, og prøve igen.",
"ExceptionUserDoesNotExist": "Bruger '%s' findes ikke.",
"ExceptionYouMustGrantSuperUserAccessFirst": "Der skal være mindst én bruger med superbruger adgang. Give superbrugeren adgang til en anden bruger først.",
- "ExceptionNoValueForUsernameOrEmail": "Indtast et brugernavn eller en e-mailadresse.",
"ExcludeVisitsViaCookie": "Udeluk egne besøg ved hjælp af en cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Standard rapport dato for anonyme brugere",
- "ConfirmWithPassword": "Indtast din adgangskode for at bekræfte denne ændring.",
+ "HasSuperUserAccess": "Har superbrugeradgang",
"InjectedHostCannotChangePwd": "Du besøger med en ukendt vært (%1$s). Du kan ikke ændre din adgangskode, før problemet er løst.",
"LastSeen": "Sidst set",
"MainDescription": "Bestem hvilke brugere der skal have adgang til hvilke hjemmesider. Du kan også give adgang til alle hjemmesider på én gang ved at vælge “Tilføj til alle hjemmesider” i hjemmesidevælgeren.",
"ManageAccess": "Administrer adgang",
+ "ManageUsers": "Administer brugere",
+ "ManageUsersDesc": "Opret nye brugere eller opdater eksisterende brugere. Her kan du også angive deres rettigheder.",
"MenuAnonymousUserSettings": "Anonym bruger indstilling",
- "MenuUsers": "Brugere",
- "MenuUserSettings": "Bruger indstillinger",
"MenuPersonal": "Personlig",
- "PersonalSettings": "Personlige indstillinger",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Bemærk: Indstillingerne kan ikke ændres i denne del, fordi der ikke er en hjemmeside, der kan tilgås af den anonyme bruger.",
+ "MenuUserSettings": "Bruger indstillinger",
+ "MenuUsers": "Brugere",
+ "NewsletterSignupTitle": "Tilmelding til nyhedsbrev",
"NoUsersExist": "Der er endnu ingen brugere.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Bemærk: Indstillingerne kan ikke ændres i denne del, fordi der ikke er en hjemmeside, der kan tilgås af den anonyme bruger.",
+ "Permissions": "Rettigheder",
+ "PersonalSettings": "Personlige indstillinger",
"PrivAdmin": "Administration",
"PrivNone": "Ingen adgang",
"PrivView": "Vis",
+ "RemovePermissions": "Fjern rettigheder",
"ReportDateToLoadByDefault": "Standardrapportdato",
"ReportToLoadByDefault": "Standardrapport",
+ "ResetTwoFactorAuthentication": "Nulstil tofaktorgodkendelse",
+ "ResetTwoFactorAuthenticationInfo": "Hvis en bruger ikke længere kan logge ind pga. mistede genskabelseskoder eller mistet tofaktorgodkendelsesenhed, kan du nulstille tofaktorgodkendelse for brugeren, så de kan logge ind igen.",
+ "SaveBasicInfo": "Gem basisoplysninger",
+ "SuperUserAccess": "Superbrugeradgang",
"SuperUserAccessManagement": "Administrer superbrugeradgang",
"SuperUserAccessManagementGrantMore": "Du kan give superbrugeradgang til andre brugere af Matomo. Brug denne funktion med omtanke.",
"SuperUserAccessManagementMainDescription": "Superbrugere har de højeste tilladelser. De kan udføre alle administrative opgaver såsom at tilføje nye hjemmesider til at overvågning, tilføje brugere, ændre brugertilladelser, aktivere og deaktivere udvidelsesmoduler og selv installere nye udvidelsesmoduler fra markedspladsen.",
+ "SuperUserIntro2": "Brug denne funktion med omtanke.",
+ "SuperUsersPermissionsNotice": "Superbrugere har administratoradgang til alle hjemmesider, så der er ikke grund til at angive rettigheder for de enkelte hjemmesider.",
"TheLoginScreen": "Log på skærmbillede",
"ThereAreCurrentlyNRegisteredUsers": "Der er i øjeblikket %s registrerede brugere.",
+ "TwoFactorAuthentication": "Tofaktorgodkendelse",
"TypeYourPasswordAgain": "Gentag din nye adgangskode.",
"User": "Bruger",
+ "Username": "Brugernavn",
"UsersManagement": "Brugeradministration",
"UsersManagementMainDescription": "Opret nye brugere eller opdater eksisterende. Efterfølgende kan tilladelser ændres.",
+ "UsesTwoFactorAuthentication": "Benytter tofaktorgodkendelse",
"YourUsernameCannotBeChanged": "Brugernavnet kan ikke ændres.",
"YourVisitsAreIgnoredOnDomain": "%1$sDine besøg ignoreres af Matomo på %2$s %3$s (Matomo ignorer cookie blev fundet i netlæseren).",
- "YourVisitsAreNotIgnored": "%1$sDine besøg bliver ikke ignoreret af Matomo%2$s (Matomos ignorer-cookie blev ikke fundet i browseren).",
- "ManageUsers": "Administer brugere",
- "ManageUsersDesc": "Opret nye brugere eller opdater eksisterende brugere. Her kan du også angive deres rettigheder.",
- "RemovePermissions": "Fjern rettigheder",
- "BasicInformation": "Basisoplysninger",
- "Permissions": "Rettigheder",
- "SuperUserAccess": "Superbrugeradgang",
- "SuperUsersPermissionsNotice": "Superbrugere har administratoradgang til alle hjemmesider, så der er ikke grund til at angive rettigheder for de enkelte hjemmesider.",
- "SuperUserIntro2": "Brug denne funktion med omtanke.",
- "HasSuperUserAccess": "Har superbrugeradgang",
- "ShowAll": "Vis alle",
- "Username": "Brugernavn",
- "NewsletterSignupTitle": "Tilmelding til nyhedsbrev"
+ "YourVisitsAreNotIgnored": "%1$sDine besøg bliver ikke ignoreret af Matomo%2$s (Matomos ignorer-cookie blev ikke fundet i browseren)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/de.json b/plugins/UsersManager/lang/de.json
index 645b5443be..8e2be5dc84 100644
--- a/plugins/UsersManager/lang/de.json
+++ b/plugins/UsersManager/lang/de.json
@@ -152,7 +152,6 @@
"RolesHelp": "Rollen geben vor, was ein Benutzer in Matomo im Bezug auf eine bestimmte Webseite tun kann. Lernen Sie mehr über die %1$sAnzeige%2$s und %3$sAdmin%4$s Rollen.",
"SaveBasicInfo": "Basisinformationen speichern",
"SetPermission": "Berechtigung setzen",
- "ShowAll": "Alle anzeigen",
"SuperUserAccess": "Hauptadministratoren-Zugriff",
"SuperUserAccessManagement": "Hauptadministrator-Berechtigung verwalten",
"SuperUserAccessManagementGrantMore": "Hier können Sie anderen Benutzern von Matomo Hauptadministrator-Berechtigung geben. Bitte nutzen Sie diese Funktion mit Bedacht.",
diff --git a/plugins/UsersManager/lang/el.json b/plugins/UsersManager/lang/el.json
index 170b51d3ad..efb392e370 100644
--- a/plugins/UsersManager/lang/el.json
+++ b/plugins/UsersManager/lang/el.json
@@ -152,7 +152,6 @@
"RolesHelp": "Οι ρόλοι καθορίζουν τι μπορεί να κάνει ο χρήστης στο Matomo σε σχέση με ένα καθορισμένο ιστοτόπο. Μάθετε περισσότερα σχετικά με τους ρόλους %1$sΠροβολή%2$s και %3$sΔιαχείριση%4$s.",
"SaveBasicInfo": "Αποθήκευση Βασικών Πληροφοριών",
"SetPermission": "Ορισμός Δικαιώματος",
- "ShowAll": "Προβολή όλων",
"SuperUserAccess": "Πρόσβαση Υπερ-Χρήστη",
"SuperUserAccessManagement": "Διαχείριση της πρόσβασης από τον Υπερ-Χρήστη",
"SuperUserAccessManagementGrantMore": "Μπορείτε εδώ να δώσετε πρόσβαση Υπερ-Χρήστη σε άλλους χρήστες. Παρακαλούμε χρησιμοποιήστε με προσοχή αυτό το χαρακτηριστικό.",
diff --git a/plugins/UsersManager/lang/eo.json b/plugins/UsersManager/lang/eo.json
index 131a559e08..5455de3d73 100644
--- a/plugins/UsersManager/lang/eo.json
+++ b/plugins/UsersManager/lang/eo.json
@@ -3,7 +3,6 @@
"MenuUsers": "Uzantoj",
"PrivView": "vidigi",
"User": "Uzanto",
- "ShowAll": "Montri ĉiujn",
"Username": "Uzantnomo"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/es-ar.json b/plugins/UsersManager/lang/es-ar.json
index ed91f6d7c1..25d0a43127 100644
--- a/plugins/UsersManager/lang/es-ar.json
+++ b/plugins/UsersManager/lang/es-ar.json
@@ -1,37 +1,64 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Usa autenticación de 2 factores",
- "TwoFactorAuthentication": "Autenticación de 2 factores",
- "ResetTwoFactorAuthentication": "Restablecer autenticación de 2 factores",
- "ResetTwoFactorAuthenticationInfo": "Si el usuario no puede iniciar sesión porque perdió los códigos de recuperación o un dispositivo de autenticación, podés restablecer la autenticación de 2 factores para el usuario, así puede iniciar sesión de nuevo.",
- "AddUser": "Agregar un nuevo usuario",
"AddExistingUser": "Agregar un usuario existente",
"AddNewUser": "Agregar nuevo usuario",
- "EditUser": "Editar usuario",
- "CreateUser": "Crear usuario",
- "SaveBasicInfo": "Guardar información básica",
+ "AddSuperuserAccessConfirm": "Dar acceso de súperusuario a un usuario estándar permitirá que tenga control total sobre Matomo y debería hacerse con moderación. Ingresá tu contraseña para continuar.",
+ "AddUser": "Agregar un nuevo usuario",
+ "AddUserNoInitialAccessError": "Los nuevos usuarios tienen que darle acceso a tu sitio web. Por favor, establecé el parámetro \"initialIdSite\".",
+ "AllUsersAreSelected": "Están seleccionados todos los %1$s usuarios.",
"AllWebsites": "Todos los sitios web",
+ "AllWebsitesAreSelected": "Están seleccionados todos los %1$s sitios web.",
"AnonymousAccessConfirmation": "Estás a punto de garantizar al usuario anónimo el acceso \"de vista\" a este sitio web. Esto significa que tus informes de análisis y la información de tus visitantes será visible públicamente por todos, incluso sin iniciar sesión. ¿Estás seguro que querés continuar?",
"AnonymousUser": "Usuario anónimo",
"AnonymousUserHasViewAccess": "Nota: el usuario %1$s tiene acceso para %2$s para este sitio web.",
"AnonymousUserHasViewAccess2": "Tus informes de análisis y la información de tus visitantes son vistos públicamente.",
+ "AnonymousUserRoleChangeWarning": "Dar al usuario %1$s el rol de %2$s hará que los datos de este sitio web sean publicos y que estén disponibles para todos, incluso sin iniciar sesión en Matomo.",
"ApplyToAllWebsites": "Aplicar a todos los sitios web",
+ "AreYouSure": "¿Estás seguro?",
+ "AreYouSureAddCapability": "¿Estás seguro que querés darle a %1$s la capacidad %2$s para %3$s?",
+ "AreYouSureChangeDetails": "¿Estás seguro que querés cambiar la información de usuario de %s?",
+ "AreYouSureRemoveCapability": "¿Estás seguro que querés quitarle a %2$s la capacidad %1$s para %3$s?",
+ "AtLeastView": "Vista como mínimo",
+ "BasicInformation": "Información básica",
+ "BulkActions": "Acciones masivas",
+ "Capabilities": "Capacidades",
+ "CapabilitiesHelp": "Las capacidades son habilidades individuales que se le pueden garantizar a los usuarios. Los roles pueden, predeterminadamente, garantizar ciertas capacidades. Por ejemplo, el rol de administrador le permitirá automáticamente a los usuarios editar etiquetas en el Administrador de etiquetas. Para usuarios con menos poder, sin embargo, podés darle capacidades explícitamente.",
+ "Capability": "Capacidad",
"ChangeAllConfirm": "¿Estás seguro que querés darle a \"%s! acceso a todos los sitios web?",
+ "ChangePermToAllSitesConfirm": "¿Estás seguro que querés darle al %1$susuario%2$s acceso a cada sitio web en los que actualmente tenés acceso de administrador?",
+ "ChangePermToAllSitesConfirm2": "Nota: esto sólo afectará los sitios web existentes actualmente. Los nuevos sitios web que vayás a crear no serán accesibles automáticamente para este usuario.",
+ "ChangePermToSiteConfirmMultiple": "¿Estás seguro que querés cambiar el rol de %1$s a los %2$s sitios web seleccionados, a %3$s?",
+ "ChangePermToSiteConfirmSingle": "¿Estás seguro que querés cambiar el rol de %1$s, de %2$s a %3$s?",
"ClickHereToDeleteTheCookie": "Hacé clic acá para eliminar la cookie y dejar que Matomo rastree tus visitas",
"ClickHereToSetTheCookieOnDomain": "Hacé clic acá para establecer una cookie que excluya tus visitas en sitios web rastreados por Matomo en %s",
+ "ClickToSelectAll": "Hacé clic para seleccionar todos los %1$s.",
+ "ClickToSelectDisplayedUsers": "Hacé clic para seleccionar los %1$s usuarios mostrados.",
+ "ClickToSelectDisplayedWebsites": "Hacé clic para seleccionar los %1$s sitios web mostrados.",
"ConfirmGrantSuperUserAccess": "¿Estás seguro que querés garantizarle a \"%s\" acceso de súperusuario? Advertencia: el usuario tendrá acceso a todos los sitios web y podrá ejecutar tareas administrativas.",
"ConfirmProhibitMySuperUserAccess": "%s, ¿estás seguro que querés quitar tu propio acceso de súperusuario? Vas a perder todos tus permisos y accesos a todos los sitios web y cerrarás tu sesión de Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "¿Estás seguro que querés quitar el acceso de súperusuario de \"%s\"? El usuario va a perder todos sus permisos y accesos a todos los sitios web. Si es necesario, luego asegurate de darle acceso a todos los sitios web necesarios.",
+ "ConfirmWithPassword": "Por favor, ingresá tu contraseña para confirmar este cambio.",
+ "CreateUser": "Crear usuario",
+ "CurrentPasswordNotCorrect": "La contraseña actual que ingresaste no es correcta.",
"DeleteConfirm": "¿Estás seguro que querés eliminar al usuario %s?",
+ "DeletePermConfirmMultiple": "¿Estás seguro que querés quitarle a %1$s el acceso a los %2$s sitios web seleccionados?",
+ "DeletePermConfirmSingle": "¿Estás seguro que querés quitarle a %1$s el acceso a %2$s?",
+ "DeleteUserConfirmMultiple": "¿Estás seguro que querés eliminar los %1$s usuarios seleccionados?",
+ "DeleteUserConfirmSingle": "¿Estás seguro que querés eliminar %1$s?",
+ "DeleteUserPermConfirmMultiple": "¿Estás seguro que querés cambiar el rol de los %1$s usuarios seleccionados, de %2$s a %3$s?",
+ "DeleteUserPermConfirmSingle": "¿Estás seguro que querés cambiar el rol de %1$s, de %2$s a %3$s?",
+ "DeleteUsers": "Eliminar usuarios",
+ "EditUser": "Editar usuario",
"Email": "Correo electrónico",
+ "EmailChangeNotificationSubject": "Se acaba de cambiar la dirección de correo electrónico de tu cuenta de Matomo",
+ "EmailChangedEmail1": "La dirección de correo electrónico asociada a tu cuenta fue cambiada a %1$s",
+ "EmailChangedEmail2": "Este cambio se produjo desde el siguiente dispositivo: %1$s (dirección IP: %2$s).",
"EmailYourAdministrator": "%1$sEnviale un correo electrónico a tu administrador sobre este problema%2$s.",
"EnterUsernameOrEmail": "Ingresá un nombre de usuario o dirección de correo electrónico",
"ExceptionAccessValues": "El acceso de parámetro debe tener uno de los siguientes valores: [%1$s], \"%2$s\" dado.",
- "ExceptionNoRoleSet": "No hay rol establecido pero uno de estos necesita ser establecido: %s",
- "ExceptionMultipleRoleSet": "Sólo un rol puede ser establecido pero se establecieron varios. Usá sólo uno de; %s",
- "ExceptionAnonymousNoCapabilities": "No podés garantizar ninguna capacidad al usuario \"anónimo\".",
"ExceptionAnonymousAccessNotPossible": "Sólo podés establecer acceso %1$s o acceso %2$s al usuario \"anónimo\".",
+ "ExceptionAnonymousNoCapabilities": "No podés garantizar ninguna capacidad al usuario \"anónimo\".",
"ExceptionDeleteDoesNotExist": "El usuario \"%s\" no existe, por lo tanto, no puede ser eliminado.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "No es posible eliminar al usuario \"%s\".",
"ExceptionEditAnonymous": "El usuario anónimo no puede ser borrado o editado. Matomo lo utiliza para definir que usuario que no se ha conectado todavía. Por ejemplo, podés hacer públicas tus estadísticas mediante el acceso \"ver\" al usuario \"anónimo\".",
@@ -41,129 +68,101 @@
"ExceptionInvalidPassword": "La longitud de la contraseña debe ser mayor de %1$s caracteres.",
"ExceptionInvalidPasswordTooLong": "La longitud de la contraseña debe ser menor de %1$s caracteres.",
"ExceptionLoginExists": "El nombre de usuario \"%s\" ya existe.",
+ "ExceptionMultipleRoleSet": "Sólo un rol puede ser establecido pero se establecieron varios. Usá sólo uno de; %s",
+ "ExceptionNoRoleSet": "No hay rol establecido pero uno de estos necesita ser establecido: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Por favor, ingresá un nombre de usuario o direccion de correo electrónico.",
"ExceptionPasswordMD5HashExpected": "\"UsersManager.getTokenAuth\" está a la espera de una contraseña con algoritmo hash MD5 (32 caracteres de longitud). Por favor, invocá la función md5() en la contraseña antes de invocar este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Quitar el acceso de súperusuario a \"%s\" no es posible.",
"ExceptionSuperUserAccess": "El usuario tiene acceso de súperusuario y ya tiene permiso para acceder y modificar todos los sitios web en Matomo. Podés quitarle el acceso de súperusuario a este usuario e intentar de nuevo.",
- "ExceptionUserHasSuperUserAccess": "El usuario \"%s\" tiene acceso de súperusuario y ya tiene permiso para acceder y modificar todos los sitios web en Matomo. Podés quitarle el acceso de súperusuario a este usuario e intentar de nuevo.",
"ExceptionUserDoesNotExist": "El usuario \"%s\" no existe.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Tiene que haber, al menos, un usuario con acceso de súperusuario. Por favor, primero garantizale el acceso de súperusuario a otro usuario.",
+ "ExceptionUserHasSuperUserAccess": "El usuario \"%s\" tiene acceso de súperusuario y ya tiene permiso para acceder y modificar todos los sitios web en Matomo. Podés quitarle el acceso de súperusuario a este usuario e intentar de nuevo.",
"ExceptionUserHasViewAccessAlready": "Este usuario ya tiene acceso a este sitio web.",
- "ExceptionNoValueForUsernameOrEmail": "Por favor, ingresá un nombre de usuario o direccion de correo electrónico.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Tiene que haber, al menos, un usuario con acceso de súperusuario. Por favor, primero garantizale el acceso de súperusuario a otro usuario.",
"ExcludeVisitsViaCookie": "Excluir tus visitas usando una cookie",
+ "FilterByAccess": "Filtrar por acceso",
+ "FilterByWebsite": "Filtrar por sitio web",
+ "FirstSiteInlineHelp": "Se requiere dar a un nuevo usuario un rol de vista para un sitio web sobre la creación. Si no se le concede acceso, el usuario verá un mensaje de error al iniciar sesión. Podés darle más permisos luego de que el usuario esté creado en la pestaña \"Permisos\" que aparecerá en la izquierda.",
"ForAnonymousUsersReportDateToLoadByDefault": "Para los usuarios anónimos, fecha del informe a cargar predeterminadamente",
+ "GiveAccessToAll": "Darle a este usuario acceso a todos los sitios web",
"GiveUserAccess": "Dar a \"%1$s\" acceso %2$s para %3$s.",
"GiveViewAccess": "Dar acceso de vista para %1$s",
- "GiveViewAccessTitle": "Dar a un usuario existente acceso para ver informes de %s",
"GiveViewAccessInstructions": "Para dar a un usuario existente acceso para %s, ingresá el nombre de usuario o dirección de correo electrónico de dicho usuario existente",
+ "GiveViewAccessTitle": "Dar a un usuario existente acceso para ver informes de %s",
+ "HasSuperUserAccess": "Tiene acceso de súperusuario",
+ "IfThisWasYouIgnoreIfNot": "Si fuiste vos, simplemente ignorá este mensaje. Si no fuiste vos, por favor, iniciá sesión, cambiá tu dirección de correo electrónico y contraseña, y contactá a tu administrador de Matomo.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Si querés cambiar la contraseña, ingresá una nueva. De lo contrario, dejá este campo en blanco.",
- "YourCurrentPassword": "Tu contraseña actual",
- "CurrentPasswordNotCorrect": "La contraseña actual que ingresaste no es correcta.",
- "ConfirmWithPassword": "Por favor, ingresá tu contraseña para confirmar este cambio.",
+ "IncludedInUsersRole": "Incluida en el rol de este usuario.",
"InjectedHostCannotChangePwd": "Actualmente estás visitando con un servidor desconocido (%1$s). No podés cambiar tu contraseña hasta que el problema sea solucionado.",
"LastSeen": "Última vez visto",
"MainDescription": "Decidí qué usuarios tienen acceso a tus sitios web. También podés darles acceso a todos los sitios web de una sola vez, eligiendo \"Aplicar a todos los sitios web\" en el selector de sitios web.",
"ManageAccess": "Administrar el acceso",
+ "ManageUsers": "Administrar usuarios",
+ "ManageUsersDesc": "Creá nuevos usuarios o actualizá a los existentes. Luego podés establecerles permisos, también desde acá.",
"MenuAnonymousUserSettings": "Configuración de usuario anónimo",
- "MenuUsers": "Usuarios",
- "MenuUserSettings": "Configuración de usuario",
"MenuPersonal": "Personal",
- "PersonalSettings": "Configuración personal",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: no podés modificar la configuración en esta sección, porque no tenés ningún sitio web que pueda ser accedido por un usuario anónimo.",
+ "MenuUserSettings": "Configuración de usuario",
+ "MenuUsers": "Usuarios",
+ "NewsletterSignupFailureMessage": "Epa, algo salió mal. No pudimos suscribirte al boletín informativo.",
+ "NewsletterSignupMessage": "Suscribite a nuestro boletín informativo para recibir regularmente información sobre Matomo. Podés desuscribirte cuando quieras. Este servicio usa MadMini. Conocé más al respecto en nuestra %1$spágina de política de privacidad%2$s.",
+ "NewsletterSignupSuccessMessage": "¡Joya, ya estás registrado! Nos estaremos contactando pronto.",
+ "NewsletterSignupTitle": "Registro en el boletín informativo",
+ "NoAccessWarning": "A este usuario no se le garantizó acceso a un sitio web. Cuando inicie sesión, verá un mensaje de error. Para prevenir eso, concedele acceso a un sitio web, abajo.",
"NoUsersExist": "Todavía no hay usuarios.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: no podés modificar la configuración en esta sección, porque no tenés ningún sitio web que pueda ser accedido por un usuario anónimo.",
+ "OrManageIndividually": "O administrá el acceso de este usuario a cada sitio web individualmente",
+ "PasswordChangeNotificationSubject": "Se acaba de cambiar la contraseña de tu cuenta de Matomo",
+ "PasswordChangedEmail": "Tu contraseña se cambió. El cambio se produjo desde el siguiente dispositivo: %1$s (dirección IP: %2$s).",
+ "Permissions": "Permisos",
+ "PersonalSettings": "Configuración personal",
"PluginDescription": "La administración de usuarios te permite agregar nuevos usuarios, editar usuarios existentes y darles acceso para ver o administrar sitios web.",
"PrivAdmin": "Admin",
"PrivAdminDescription": "Los usuarios con este rol pueden administrar un sitio web y dale acceso a otros usuarios al sitio web. También pueden hacer todo lo que el rol de %s puede hacer.",
- "PrivWrite": "Escribir",
- "PrivWriteDescription": "Los usuarios con este rol pueden ver todo el contenido, además de crear, administrar y eliminar entidades como Metas, Embudos, Mapas de calor, Registros de sesión y Formularios de este sitio web.",
"PrivNone": "Sin acceso",
"PrivView": "Ver",
"PrivViewDescription": "Un usuario con este rol puede ver todos los informes.",
+ "PrivWrite": "Escribir",
+ "PrivWriteDescription": "Los usuarios con este rol pueden ver todo el contenido, además de crear, administrar y eliminar entidades como Metas, Embudos, Mapas de calor, Registros de sesión y Formularios de este sitio web.",
+ "RemoveAllAccessToThisSite": "Quitar todos los accesos a este sitio web",
+ "RemovePermissions": "Quitar permisos",
+ "RemoveSuperuserAccessConfirm": "Quitar acceso de súperusuario dejará a este usuario sin permisos (tendrás que agregarlos luego). Ingresá tu contraseña para continuar.",
"RemoveUserAccess": "Quitar acceso a \"%1$s\" de %2$s.",
"ReportDateToLoadByDefault": "Fecha del informe a cargar predeterminadamente",
"ReportToLoadByDefault": "Informe a cargar predeterminadamente",
+ "ResetTwoFactorAuthentication": "Restablecer autenticación de 2 factores",
+ "ResetTwoFactorAuthenticationInfo": "Si el usuario no puede iniciar sesión porque perdió los códigos de recuperación o un dispositivo de autenticación, podés restablecer la autenticación de 2 factores para el usuario, así puede iniciar sesión de nuevo.",
+ "Role": "Rol",
+ "RoleFor": "Rol de",
+ "RolesHelp": "Los roles determinan lo que un usuario puede hacer en Matomo con respecto a un sitio web específico. Aprendé más sobre los roles de %1$svista%2$s y de %3$sadministración%4$s.",
+ "SaveBasicInfo": "Guardar información básica",
+ "SetPermission": "Establecer permiso",
+ "SuperUserAccess": "Acceso de súperusuario",
"SuperUserAccessManagement": "Administrar acceso de súperusuario",
"SuperUserAccessManagementGrantMore": "Acá podés garantizar acceso de súperusuario a otros usuarios de Matomo. Por favor, usá esta función con cuidado.",
"SuperUserAccessManagementMainDescription": "Los súperusuarios tienen los permisos más altos. Ellos pueden ejecutar todas las tareas administrativas como agregar nuevos sitios web para monitorear, agregar usuarios, cambiar permisos de usuarios, activar y desactivar plugins e incluso instalar nuevos plugins desde el Mercado.",
+ "SuperUserIntro1": "Los súperusuarios tiene los permisos más altos. Ellos pueden ejecutar todas las tareas administrativas tales como agregar nuevos sitios web para monitorear, agregar usuarios, cambiar los permisos de los usuarios, activar y desactivar plugins e incluso instalar nuevos plugins desde el mercado. Podés garantizarle acceso de súperusuario a otros usuarios de Divezone acá.",
+ "SuperUserIntro2": "Por favor, usá esta función con ciudado.",
+ "SuperUsersPermissionsNotice": "Los súperusuarios tienen acceso de administrador a todos los sitios web, por lo que no hay necesidad de administrar sus permisos por cada sitio web.",
+ "TheDisplayedUsersAreSelected": "Están seleccionados los %1$s usuarios mostrados.",
+ "TheDisplayedWebsitesAreSelected": "Están seleccionados los %1$s sitios web mostrados.",
"TheLoginScreen": "Pantalla de inicio de sesión",
"ThereAreCurrentlyNRegisteredUsers": "Actualmente hay %s usuarios registrados.",
"TokenAuth": "Clave de API de autenticación",
"TokenRegenerateConfirmSelf": "Cambiar la clave de API de autenticación invalidará tu propia clave. Si la clave actual está en uso, vas a necesitar actualizar todos los clientes API con la nueva clave generada. ¿Estás seguro que querés cambiar tu clave de autenticación?",
"TokenRegenerateTitle": "Regenerar",
+ "TwoFactorAuthentication": "Autenticación de 2 factores",
"TypeYourPasswordAgain": "Ingresá tu nueva contraseña de nuevo.",
"User": "Usuario",
- "UserHasPermission": "%1$s actualmente tiene acceso %2$s para %3$s.",
"UserHasNoPermission": "%1$s actualmente tiene %2$s para %3$s",
+ "UserHasPermission": "%1$s actualmente tiene acceso %2$s para %3$s.",
+ "UserSearch": "Búsqueda de usuarios",
+ "Username": "Nombre de usuario",
"UsersManagement": "Administración de usuarios",
"UsersManagementMainDescription": "Creá nuevos usuarios o actualizá los actuales. Luego podés configurar sus permisos arriba.",
+ "UsesTwoFactorAuthentication": "Usa autenticación de 2 factores",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Cuando los usuarios que no hayan iniciado sesión visitan Matomo, deberían ver inicialmente",
+ "YourCurrentPassword": "Tu contraseña actual",
"YourUsernameCannotBeChanged": "No se puede cambiar tu nombre de usuario.",
"YourVisitsAreIgnoredOnDomain": "%1$sTus visitas son ignoradas por Matomo en %2$s%3$s (se encontró en tu navegador web la cookie para ignorar a Matomo).",
- "YourVisitsAreNotIgnored": "%1$sTus visitas no son ignoradas por Matomo%2$s (no se encontró en tu navegador web la cookie para ignorar a Matomo).",
- "AddUserNoInitialAccessError": "Los nuevos usuarios tienen que darle acceso a tu sitio web. Por favor, establecé el parámetro \"initialIdSite\".",
- "AtLeastView": "Vista como mínimo",
- "ManageUsers": "Administrar usuarios",
- "ManageUsersDesc": "Creá nuevos usuarios o actualizá a los existentes. Luego podés establecerles permisos, también desde acá.",
- "NoAccessWarning": "A este usuario no se le garantizó acceso a un sitio web. Cuando inicie sesión, verá un mensaje de error. Para prevenir eso, concedele acceso a un sitio web, abajo.",
- "BulkActions": "Acciones masivas",
- "SetPermission": "Establecer permiso",
- "RemovePermissions": "Quitar permisos",
- "RolesHelp": "Los roles determinan lo que un usuario puede hacer en Matomo con respecto a un sitio web específico. Aprendé más sobre los roles de %1$svista%2$s y de %3$sadministración%4$s.",
- "Role": "Rol",
- "TheDisplayedWebsitesAreSelected": "Están seleccionados los %1$s sitios web mostrados.",
- "ClickToSelectAll": "Hacé clic para seleccionar todos los %1$s.",
- "AllWebsitesAreSelected": "Están seleccionados todos los %1$s sitios web.",
- "ClickToSelectDisplayedWebsites": "Hacé clic para seleccionar los %1$s sitios web mostrados.",
- "DeletePermConfirmSingle": "¿Estás seguro que querés quitarle a %1$s el acceso a %2$s?",
- "DeletePermConfirmMultiple": "¿Estás seguro que querés quitarle a %1$s el acceso a los %2$s sitios web seleccionados?",
- "ChangePermToSiteConfirmSingle": "¿Estás seguro que querés cambiar el rol de %1$s, de %2$s a %3$s?",
- "ChangePermToSiteConfirmMultiple": "¿Estás seguro que querés cambiar el rol de %1$s a los %2$s sitios web seleccionados, a %3$s?",
- "BasicInformation": "Información básica",
- "Permissions": "Permisos",
- "SuperUserAccess": "Acceso de súperusuario",
- "FirstSiteInlineHelp": "Se requiere dar a un nuevo usuario un rol de vista para un sitio web sobre la creación. Si no se le concede acceso, el usuario verá un mensaje de error al iniciar sesión. Podés darle más permisos luego de que el usuario esté creado en la pestaña \"Permisos\" que aparecerá en la izquierda.",
- "SuperUsersPermissionsNotice": "Los súperusuarios tienen acceso de administrador a todos los sitios web, por lo que no hay necesidad de administrar sus permisos por cada sitio web.",
- "SuperUserIntro1": "Los súperusuarios tiene los permisos más altos. Ellos pueden ejecutar todas las tareas administrativas tales como agregar nuevos sitios web para monitorear, agregar usuarios, cambiar los permisos de los usuarios, activar y desactivar plugins e incluso instalar nuevos plugins desde el mercado. Podés garantizarle acceso de súperusuario a otros usuarios de Divezone acá.",
- "SuperUserIntro2": "Por favor, usá esta función con ciudado.",
- "HasSuperUserAccess": "Tiene acceso de súperusuario",
- "AreYouSure": "¿Estás seguro?",
- "RemoveSuperuserAccessConfirm": "Quitar acceso de súperusuario dejará a este usuario sin permisos (tendrás que agregarlos luego). Ingresá tu contraseña para continuar.",
- "AddSuperuserAccessConfirm": "Dar acceso de súperusuario a un usuario estándar permitirá que tenga control total sobre Matomo y debería hacerse con moderación. Ingresá tu contraseña para continuar.",
- "DeleteUsers": "Eliminar usuarios",
- "UserSearch": "Búsqueda de usuarios",
- "FilterByAccess": "Filtrar por acceso",
- "FilterByWebsite": "Filtrar por sitio web",
- "ShowAll": "Mostrar todo",
- "Username": "Nombre de usuario",
- "RoleFor": "Rol de",
- "TheDisplayedUsersAreSelected": "Están seleccionados los %1$s usuarios mostrados.",
- "AllUsersAreSelected": "Están seleccionados todos los %1$s usuarios.",
- "ClickToSelectDisplayedUsers": "Hacé clic para seleccionar los %1$s usuarios mostrados.",
- "RemoveAllAccessToThisSite": "Quitar todos los accesos a este sitio web",
- "DeleteUserConfirmSingle": "¿Estás seguro que querés eliminar %1$s?",
- "DeleteUserConfirmMultiple": "¿Estás seguro que querés eliminar los %1$s usuarios seleccionados?",
- "DeleteUserPermConfirmSingle": "¿Estás seguro que querés cambiar el rol de %1$s, de %2$s a %3$s?",
- "DeleteUserPermConfirmMultiple": "¿Estás seguro que querés cambiar el rol de los %1$s usuarios seleccionados, de %2$s a %3$s?",
- "AreYouSureChangeDetails": "¿Estás seguro que querés cambiar la información de usuario de %s?",
- "AnonymousUserRoleChangeWarning": "Dar al usuario %1$s el rol de %2$s hará que los datos de este sitio web sean publicos y que estén disponibles para todos, incluso sin iniciar sesión en Matomo.",
- "GiveAccessToAll": "Darle a este usuario acceso a todos los sitios web",
- "OrManageIndividually": "O administrá el acceso de este usuario a cada sitio web individualmente",
- "ChangePermToAllSitesConfirm": "¿Estás seguro que querés darle al %1$susuario%2$s acceso a cada sitio web en los que actualmente tenés acceso de administrador?",
- "ChangePermToAllSitesConfirm2": "Nota: esto sólo afectará los sitios web existentes actualmente. Los nuevos sitios web que vayás a crear no serán accesibles automáticamente para este usuario.",
- "CapabilitiesHelp": "Las capacidades son habilidades individuales que se le pueden garantizar a los usuarios. Los roles pueden, predeterminadamente, garantizar ciertas capacidades. Por ejemplo, el rol de administrador le permitirá automáticamente a los usuarios editar etiquetas en el Administrador de etiquetas. Para usuarios con menos poder, sin embargo, podés darle capacidades explícitamente.",
- "Capabilities": "Capacidades",
- "AreYouSureAddCapability": "¿Estás seguro que querés darle a %1$s la capacidad %2$s para %3$s?",
- "AreYouSureRemoveCapability": "¿Estás seguro que querés quitarle a %2$s la capacidad %1$s para %3$s?",
- "IncludedInUsersRole": "Incluida en el rol de este usuario.",
- "Capability": "Capacidad",
- "EmailChangeNotificationSubject": "Se acaba de cambiar la dirección de correo electrónico de tu cuenta de Matomo",
- "EmailChangedEmail1": "La dirección de correo electrónico asociada a tu cuenta fue cambiada a %1$s",
- "EmailChangedEmail2": "Este cambio se produjo desde el siguiente dispositivo: %1$s (dirección IP: %2$s).",
- "IfThisWasYouIgnoreIfNot": "Si fuiste vos, simplemente ignorá este mensaje. Si no fuiste vos, por favor, iniciá sesión, cambiá tu dirección de correo electrónico y contraseña, y contactá a tu administrador de Matomo.",
- "PasswordChangeNotificationSubject": "Se acaba de cambiar la contraseña de tu cuenta de Matomo",
- "PasswordChangedEmail": "Tu contraseña se cambió. El cambio se produjo desde el siguiente dispositivo: %1$s (dirección IP: %2$s).",
- "NewsletterSignupTitle": "Registro en el boletín informativo",
- "NewsletterSignupMessage": "Suscribite a nuestro boletín informativo para recibir regularmente información sobre Matomo. Podés desuscribirte cuando quieras. Este servicio usa MadMini. Conocé más al respecto en nuestra %1$spágina de política de privacidad%2$s.",
- "NewsletterSignupFailureMessage": "Epa, algo salió mal. No pudimos suscribirte al boletín informativo.",
- "NewsletterSignupSuccessMessage": "¡Joya, ya estás registrado! Nos estaremos contactando pronto."
+ "YourVisitsAreNotIgnored": "%1$sTus visitas no son ignoradas por Matomo%2$s (no se encontró en tu navegador web la cookie para ignorar a Matomo)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/es.json b/plugins/UsersManager/lang/es.json
index d5a332ce16..72fe1718cd 100644
--- a/plugins/UsersManager/lang/es.json
+++ b/plugins/UsersManager/lang/es.json
@@ -132,7 +132,6 @@
"RolesHelp": "Los roles determinan lo que un usuario puede hacer en Matomo con respecto a un sitio web específico. Obtenga más información sobre los roles de %1$svista%2$s y %3$sadministración%4$s.",
"SaveBasicInfo": "Guardar información básica",
"SetPermission": "Disponer autorización",
- "ShowAll": "Mostrar todo",
"SuperUserAccess": "Acceso Superusuario",
"SuperUserAccessManagement": "Administrar acceso Super Usuario",
"SuperUserAccessManagementGrantMore": "Aquí puedes conceder acceso Super Usuario a otro usuario de Matomo. Por favor utilice esta función con cuidado.",
diff --git a/plugins/UsersManager/lang/et.json b/plugins/UsersManager/lang/et.json
index 483350ecbe..691ea1cacc 100644
--- a/plugins/UsersManager/lang/et.json
+++ b/plugins/UsersManager/lang/et.json
@@ -16,12 +16,12 @@
"LastSeen": "Viimati nähtud",
"ManageAccess": "Halda ligipääsu",
"MenuAnonymousUserSettings": "Tundmatu kasutaja seaded",
- "MenuUsers": "Kasutajaid",
- "MenuUserSettings": "Kasutaja seaded",
"MenuPersonal": "Isiklik",
- "PersonalSettings": "Isiklikud seaded",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Märkus: Sa ei saa antud sätteid muuta, kuna puuduvad veebilehed, millele oleks anonüümne ligipääs Matomo lubatud.",
+ "MenuUserSettings": "Kasutaja seaded",
+ "MenuUsers": "Kasutajaid",
"NoUsersExist": "Hetkel puuduvad teised kasutajad.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Märkus: Sa ei saa antud sätteid muuta, kuna puuduvad veebilehed, millele oleks anonüümne ligipääs Matomo lubatud.",
+ "PersonalSettings": "Isiklikud seaded",
"PrivAdmin": "Haldaja",
"PrivNone": "Ligipääs puudub",
"PrivView": "Vaata",
@@ -32,11 +32,10 @@
"ThereAreCurrentlyNRegisteredUsers": "Hetkel on %s registreeritud kasutajat.",
"TypeYourPasswordAgain": "Korda oma uut salasõna.",
"User": "Kasutaja",
+ "Username": "Kasutajanimi",
"UsersManagement": "Kasutajate haldamine",
"UsersManagementMainDescription": "Loo uusi kasutajakontosid või uuenda olemasolevaid. Saad seada nende õigused ülalpool.",
"YourUsernameCannotBeChanged": "Sinu kasutajanime ei saa muuta.",
- "YourVisitsAreNotIgnored": "%1$sMatomo ei arva sinu külastusi statistikast välja%2$s (ignoreerimiseks vajalikku küpsist ei leitud sirvikust).",
- "ShowAll": "Kuva kõik",
- "Username": "Kasutajanimi"
+ "YourVisitsAreNotIgnored": "%1$sMatomo ei arva sinu külastusi statistikast välja%2$s (ignoreerimiseks vajalikku küpsist ei leitud sirvikust)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/eu.json b/plugins/UsersManager/lang/eu.json
index 701ff9a998..80b7c7acf5 100644
--- a/plugins/UsersManager/lang/eu.json
+++ b/plugins/UsersManager/lang/eu.json
@@ -16,9 +16,8 @@
"PrivNone": "Atzipenik ez",
"PrivView": "Ikusi",
"User": "Erabiltzailea",
+ "Username": "Erabiltzaile-izena",
"UsersManagement": "Erabiltzaileen kudeaketa",
- "UsersManagementMainDescription": "Sortu erabiltzaile berriak edo eguneratu daudenak. Ondoren hauen baimenak goian ezar ditzakezu.",
- "ShowAll": "Erakutsi guztia",
- "Username": "Erabiltzaile-izena"
+ "UsersManagementMainDescription": "Sortu erabiltzaile berriak edo eguneratu daudenak. Ondoren hauen baimenak goian ezar ditzakezu."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/fa.json b/plugins/UsersManager/lang/fa.json
index fe8a72323a..7707dfe7e1 100644
--- a/plugins/UsersManager/lang/fa.json
+++ b/plugins/UsersManager/lang/fa.json
@@ -22,10 +22,10 @@
"LastSeen": "آخرین بازدید",
"ManageAccess": "مدیریت دسترسی",
"MenuAnonymousUserSettings": "تنظیمات کاربران ناشناس",
- "MenuUsers": "کاربران",
"MenuUserSettings": "تنضیمات کاربران",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "توجه: شما نمی توانید تنظیمات این بخش را تغییر دهید , زیرا شما هیچ وبسایتی ندارید که بتوان با کاربر ناشناخته به آن دسترسی داشت .",
+ "MenuUsers": "کاربران",
"NoUsersExist": "هنوز کاربری وجود ندارد",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "توجه: شما نمی توانید تنظیمات این بخش را تغییر دهید , زیرا شما هیچ وبسایتی ندارید که بتوان با کاربر ناشناخته به آن دسترسی داشت .",
"PrivAdmin": "مدیر",
"PrivNone": "عدم دسترسی",
"PrivView": "نمایش",
@@ -36,10 +36,9 @@
"ThereAreCurrentlyNRegisteredUsers": "هم اکنون %s کاربر عضو وجود دارد.",
"TypeYourPasswordAgain": "پسورد جدیدتان را دوباره بنویسید.",
"User": "کاربر",
+ "Username": "نام کاریری",
"UsersManagement": "مدیریت کاربران",
"UsersManagementMainDescription": "ایجاد کاربران جدید و یا به روز رسانی کاربران موجود است. بعد از آن شما می توانند مجوز خود را به صورت فوق تنظیم شده است.",
- "YourUsernameCannotBeChanged": "نام کاربری شما نمی تواند تغییر کند.",
- "ShowAll": "همه را نشان بده",
- "Username": "نام کاریری"
+ "YourUsernameCannotBeChanged": "نام کاربری شما نمی تواند تغییر کند."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/fi.json b/plugins/UsersManager/lang/fi.json
index 20d10fb7af..21d9607de9 100644
--- a/plugins/UsersManager/lang/fi.json
+++ b/plugins/UsersManager/lang/fi.json
@@ -1,40 +1,49 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Käyttää kaksivaiheista tunnistautumista",
- "TwoFactorAuthentication": "Kaksivaiheinen tunnistautuminen",
- "ResetTwoFactorAuthentication": "Nollaa kaksivaiheinen tunnistautuminen",
- "ResetTwoFactorAuthenticationInfo": "Jos käyttäjä ei voi enää kirjautua sisään kadotettujen palautuskoodien tai hävitetyn tunnistuslaitteen vuoksi, voit nollata kaksivaiheisen tunnistautumisen käyttäjäkohtaisesti, jotta käyttäjät voivat jälleen kirjautua sisään.",
- "AddUser": "Lisää uusi käyttäjä",
"AddExistingUser": "Lisää olemassa oleva käyttäjä",
"AddNewUser": "Lisää uusi käyttäjä",
- "EditUser": "Muokkaa käyttäjää",
- "CreateUser": "Luo käyttäjä",
- "SaveBasicInfo": "Tallenna perustiedot",
+ "AddUser": "Lisää uusi käyttäjä",
+ "AllUsersAreSelected": "Kaikki %1$s käyttäjää on valittu.",
"AllWebsites": "Kaikki sivut",
- "LastUsed": "Viimeksi käytetty",
- "ExpireDate": "Vanhenemispäivä",
- "AuthTokens": "Auth-poletit",
- "AuthTokenPurpose": "Mihin käytät tätä polettia?",
- "NoTokenCreatedYetCreateNow": "Poletteja ei ole luotu. %1$sLuo uusi poletti nyt%2$s.",
- "TokenSuccessfullyGenerated": "Poletti luotiin onnistuneesti",
- "GoBackSecurityPage": "Siirry takaisin turvallisuussivulle.",
- "PleaseStoreToken": "Säilytä polettisi turvallisesti, sillä polettia ei voi näyttää enää uudelleen.",
- "CreateNewToken": "Luo uusi poletti",
+ "AllWebsitesAreSelected": "Kaikki %1$s sivustoa on valittu.",
"AnonymousUser": "Anonyymi käyttäjä",
"AnonymousUserHasViewAccess": "Huom: käyttäjällä %1$s on %2$s pääsy tälle verkkosivulle.",
"AnonymousUserHasViewAccess2": "Analyysiraporttisi ja kävijätietosi ovat julkisia.",
"ApplyToAllWebsites": "Toteuta kaikkiin sivustoihin",
+ "AreYouSure": "Oletko varma?",
+ "AtLeastView": "Vähintään näkymä",
+ "AuthTokenPurpose": "Mihin käytät tätä polettia?",
+ "AuthTokens": "Auth-poletit",
+ "BasicInformation": "Perustiedot",
+ "BulkActions": "Massatoiminnot",
+ "Capabilities": "Kyvykkyydet",
+ "Capability": "Kyvykkyys",
"ChangeAllConfirm": "Haluatko varmasti antaa käyttäjälle '%s' pääsyn kaikille sivustoille?",
+ "ChangePermToAllSitesConfirm2": "Huomio: tämä vaikuttaa vain olemassa oleviin sivustoihin. Mahdollisesti uudet lisättävät sivustot eivät ole tämän käyttäjän käytettävissä.",
"ClickHereToDeleteTheCookie": "Paina tästä poistaaksesi evästeen, jolloin Matomo alkaa taas seurata käyntejäsi.",
"ClickHereToSetTheCookieOnDomain": "Paina tästä luodaksesi eväste sivulle %s, jonka jälkeen Matomo ei enää seuraa käyntejäsi sivustolla.",
+ "ClickToSelectAll": "Napsauta valitaksesi kaikki %1$s.",
+ "ClickToSelectDisplayedUsers": "Klikkaa valitaksesi %1$s näytettyä käyttäjää.",
+ "ClickToSelectDisplayedWebsites": "Klikkaa valitaksesi %1$s näytettyä sivustoa.",
"ConfirmGrantSuperUserAccess": "Haluatko varmasti antaa käyttäjälle '%s' pääkäyttäjäoikeudet? Varoitus: käyttäjä saa pääsyn kaikille sivustoille ja voi suorittaa hallinnollisia toimenpiteitä.",
"ConfirmProhibitMySuperUserAccess": "%s, haluatko varmasti poistaa omat pääkäyttäjäoikeutesi? Menetät kaikki oikeudet ja pääsyn kaikille sivustoille sekä kirjaudut ulos Matomosta.",
+ "ConfirmWithPassword": "Kirjoita salasanasi vahvistaaksesi muutoksen.",
+ "CreateNewToken": "Luo uusi poletti",
+ "CreateUser": "Luo käyttäjä",
+ "CurrentPasswordNotCorrect": "Kirjoittamasi nykyinen salasana ei ole oikein.",
+ "DeleteAllTokens": "Poista kaikki poletit",
"DeleteConfirm": "Haluatko varmasti poistaa käyttäjän %s?",
+ "DeleteUserConfirmMultiple": "Poistetaanko %1$s valittua käyttäjää?",
+ "DeleteUserConfirmSingle": "Poistetaanko %1$s?",
+ "DeleteUsers": "Poista käyttäjät",
+ "EditUser": "Muokkaa käyttäjää",
"Email": "Sähköposti",
+ "EmailChangeNotificationSubject": "Matomo-tilisi sähköpostiosoite on juuri vaihdettu",
+ "EmailChangedEmail1": "Tiliisi yhdistetty sähköpostiosoite on vaihdettu sähköpostiosoitteeseen %1$s",
+ "EmailChangedEmail2": "Tämä muutos toteutettiin seuraavasta laitteesta: %1$s (IP-osoite = %2$s).",
"EmailYourAdministrator": "%1$sLähetä ylläpitäjällesi sähköpostia ongelmasta%2$s.",
"EnterUsernameOrEmail": "Kirjoita käyttäjätunnus tai sähköpostiosoite",
- "ExceptionNoRoleSet": "Roolia ei ole asetettu, mutta jokin näistä tulee asettaa: %s",
"ExceptionDeleteDoesNotExist": "Käyttäjää '%s' ei ole eikä sitä siksi voida poistaa.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "Käyttäjän '%s' poistaminen ei ole mahdollista.",
"ExceptionEditAnonymous": "Anonyymikäyttäjää ei voi muokata tai poistaa. Se on Matomon sisäinen tunnus käyttäjälle, joka ei ole kirjautunut sisään. Voit esimerkiksi julkaista tilastoja kaikille sallimalla anonyymikäyttäjälle katsomisoikeuden.",
@@ -44,112 +53,102 @@
"ExceptionInvalidPassword": "Salasanan täytyy olla vähintään %1$s merkkiä pitkä.",
"ExceptionInvalidPasswordTooLong": "Salasanan pitää olla vähintään %1$s merkkiä.",
"ExceptionLoginExists": "Käyttäjätunnus '%s' on jo olemassa.",
+ "ExceptionNoRoleSet": "Roolia ei ole asetettu, mutta jokin näistä tulee asettaa: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Kirjoita käyttäjätunnus tai sähköpostiosoite.",
"ExceptionPasswordMD5HashExpected": "UserManager.getTokenAuth haluaa MD5-tiivisteen salasanastasi (32 merkkiä pitkä merkkijono). Kutsu md5()-funktiota salasanallesi ennen kutsumista.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Pääkäyttäjäoikeuksien poistaminen käyttäjältä '%s' ei ole mahdollista.",
"ExceptionSuperUserAccess": "Tällä käyttäjällä on jo pääkäyttäjäoikeudet ja oikeudet muokata kaikkia sivustoja Matomossa. Voit poistaa pääkäyttäjäoikeudet tältä käyttäjältä ja yrittää uudelleen.",
"ExceptionUserDoesNotExist": "Käyttäjää '%s' ei ole olemassa.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Ainakin yhdellä käyttäjällä tulee olla pääkäyttäjäoikeudet. Anna toiselle käyttäjälle pääkäyttäjäoikeudet ensin.",
"ExceptionUserHasViewAccessAlready": "Käyttäjällä on jo pääsy sivulle.",
- "ExceptionNoValueForUsernameOrEmail": "Kirjoita käyttäjätunnus tai sähköpostiosoite.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Ainakin yhdellä käyttäjällä tulee olla pääkäyttäjäoikeudet. Anna toiselle käyttäjälle pääkäyttäjäoikeudet ensin.",
"ExcludeVisitsViaCookie": "Poista käyntiesi seuraaminen evästeellä",
+ "ExpireDate": "Vanhenemispäivä",
+ "ExpiredTokensDeleteAutomatically": "Poletit, joilla on eräpäivä, poistetaan automaattisesti.",
+ "FilterByAccess": "Suodata käyttöoikeuden mukaan",
+ "FilterByWebsite": "Suodata sivuston mukaan",
"ForAnonymousUsersReportDateToLoadByDefault": "Lataa anonyymeille käyttäjille oletuksena",
+ "GiveAccessToAll": "Anna tälle käyttäjälle pääsy kaikkiin sivustoihin",
"GiveUserAccess": "Anna käyttäjälle '%1$s' käyttöoikeus %2$s sivustolle %3$s.",
"GiveViewAccess": "Anna katseluoikeus käyttäjälle %1$s",
"GiveViewAccessTitle": "Anna olemassaolevalle käyttäjälle oikeus katsoa %s:n raportteja",
+ "GoBackSecurityPage": "Siirry takaisin turvallisuussivulle.",
+ "HasSuperUserAccess": "Pääkäyttäjäoikeudet",
+ "IfThisWasYouIgnoreIfNot": "Jos se olit sinä, tämä viesti ei aiheuta toimenpiteitä. Jos se et ollut sinä, kirjaudu Matomoon, vaihda sähköpostiosoitteesi ja salasanasi, ja ole lopuksi yhteydessä käyttämäsi Matomon ylläpitoon.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Jos haluat vaihtaa salasanan, kirjoita uusi salasana. Muussa tapauksessa jätä tämä tyhjäksi.",
- "YourCurrentPassword": "Nykyinen salasanasi",
- "CurrentPasswordNotCorrect": "Kirjoittamasi nykyinen salasana ei ole oikein.",
- "ConfirmWithPassword": "Kirjoita salasanasi vahvistaaksesi muutoksen.",
+ "IncludedInUsersRole": "Sisältyy tämän käyttäjän rooliin.",
"InjectedHostCannotChangePwd": "Olet sivulla tällä hetkellä tuntemattoman isännän kautta (%1$s). Et voi vaihtaa salasanaasi ennen kuin tämä ongelma on korjattu.",
"LastSeen": "Nähty viimeeksi",
+ "LastUsed": "Viimeksi käytetty",
"MainDescription": "Määritä, keillä käyttäjillä on pääsy sivustojesi analytiikkaan. Voit myös antaa pääsyn kaikkien sivustojen tietoihin kerralla valitsemalla \"Käytä kaikkiin sivustoihin\" sivustovalinnassa.",
"ManageAccess": "Hallitse oikeuksia",
+ "ManageUsers": "Hallitse käyttäjiä",
+ "ManageUsersDesc": "Luo uusia käyttäjiä tai päivitä olemassa olevien käyttäjien ominaisuuksia. Voit määrittää käyttäjien käyttöoikeudet tämän sivun kautta.",
"MenuAnonymousUserSettings": "Anonyymin käyttäjän asetukset",
- "MenuUsers": "Käyttäjät",
- "MenuUserSettings": "Käyttäjäasetukset",
"MenuPersonal": "Henkilökohtainen",
- "PersonalSettings": "Henkilökohtaiset asetukset",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Huom. et voi vaihtaa tämän osion asetuksia, koska sinulla ei ole yhtäkään sivustoa, jonka tietoja anonyymit käyttäjät pääsevät katsomaan.",
+ "MenuUserSettings": "Käyttäjäasetukset",
+ "MenuUsers": "Käyttäjät",
+ "NewsletterSignupFailureMessage": "Hups, jokin meni pieleen. Uutiskirjeen tilaus ei onnistunut.",
+ "NewsletterSignupMessage": "Tilaa uutiskirje saadaksesi säännöllisesti Matomoon liittyvää tietoa. Voit lopettaa uutiskirjeen tilauksen milloin hyvänsä. Tämä palvelu käyttää MadMimiä. Lisätietoja MadMimistä annetaan %1$stietosuojasivullamme%2$s.",
+ "NewsletterSignupSuccessMessage": "Tilaus onnistui! Olemme yhteydessä pian.",
+ "NewsletterSignupTitle": "Uutiskirjeen tilaus",
+ "NoAccessWarning": "Tälle käyttäjälle ei ole määritetty pääsyä sivustolle. Kun käyttäjä kirjautuu, hän näkee virheviestin. Estääksesi virheviestin näkymsen, lisää pääsy sivustolle alapuolelta.",
+ "NoTokenCreatedYetCreateNow": "Poletteja ei ole luotu. %1$sLuo uusi poletti nyt%2$s.",
"NoUsersExist": "Yhtään käyttäjää ei ole vielä olemassa.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Huom. et voi vaihtaa tämän osion asetuksia, koska sinulla ei ole yhtäkään sivustoa, jonka tietoja anonyymit käyttäjät pääsevät katsomaan.",
+ "OrManageIndividually": "Vaihtoehtoisesti määritä tämän käyttäjän oikeudet sivustokohtaisesti",
+ "PasswordChangeNotificationSubject": "Matomo-tilisi salasana on juuri vaihdettu",
+ "PasswordChangedEmail": "Salasanasi on vaihdettu. Vaihto toteutettiin seuraavasta laitteesta: %1$s (IP-osoite = %2$s).",
+ "Permissions": "Käyttöoikeudet",
+ "PersonalSettings": "Henkilökohtaiset asetukset",
+ "PleaseStoreToken": "Säilytä polettisi turvallisesti, sillä polettia ei voi näyttää enää uudelleen.",
"PluginDescription": "Käyttäjähallinta antaa sinun lisätä uusia käyttäjiä, muokata olemassaolevia käyttäjiä, antaa pääsyoikeuksia sivuille ja muokata sivuja.",
"PrivAdmin": "Hallinnointioikeus",
- "PrivWrite": "Kirjoitus",
"PrivNone": "Ei käyttöoikeutta",
"PrivView": "Näkymä",
"PrivViewDescription": "Tämän roolin omaava käyttäjä voi nähdä kaikki raportit.",
+ "PrivWrite": "Kirjoitus",
+ "RemoveAllAccessToThisSite": "Poista kaikki oikeudet tälle sivustolle",
+ "RemovePermissions": "Poista käyttöoikeudet",
"RemoveUserAccess": "Poista käyttäjän '%1$s' käyttöoikeus sivustolle %2$s.",
"ReportDateToLoadByDefault": "Raportin oletuspäiväys",
"ReportToLoadByDefault": "Oletuksena ladattava raportti",
+ "ResetTwoFactorAuthentication": "Nollaa kaksivaiheinen tunnistautuminen",
+ "ResetTwoFactorAuthenticationInfo": "Jos käyttäjä ei voi enää kirjautua sisään kadotettujen palautuskoodien tai hävitetyn tunnistuslaitteen vuoksi, voit nollata kaksivaiheisen tunnistautumisen käyttäjäkohtaisesti, jotta käyttäjät voivat jälleen kirjautua sisään.",
+ "Role": "Rooli",
+ "RoleFor": "Rooli sivustolle",
+ "RolesHelp": "Roolit määrittävät mitä käyttäjä voi tehdä Matomossa liittyen yksittäiseen sivustoon. Lue lisää %1$sNäkymä-%2$s ja %3$sPääkäyttäjä%4$s-rooleista.",
+ "SaveBasicInfo": "Tallenna perustiedot",
+ "SetPermission": "Aseta käyttöoikeus",
+ "SuperUserAccess": "Pääkäyttäjän oikeudet",
"SuperUserAccessManagement": "Hallinnoi pääkäyttäjäoikeuksia",
"SuperUserAccessManagementGrantMore": "Voit antaa toisille Matomon käyttäjille pääkäyttäjäoikeudet täältä. Käytä tätä toimintoa harkiten.",
"SuperUserAccessManagementMainDescription": "Pääkäyttäjillä on korkeimmat oikeudet. He voivat suorittaa kaikkia ylläpidollisia toimenpiteitä, kuten lisätä uusia verkkosivuja seurantaan, lisätä käyttäjiä, muuttaa käyttäjien oikeuksia, aktivoida ja poistaa liitännäisiä käytöstä ja asentaa uusia liitännäisiä kauppatorilta.",
+ "SuperUserIntro1": "Pääkäyttäjillä on laajimmat käyttöoikeudet. He voivat suorittaa ylläpidollisia toimia, kuten lisätä uusia seurattavia sivustoja, lisätä uusia käyttäjiä, muuttaa käyttäen oikeuksia, ottaa käyttöön tai poistaa käytöstä liitännäisiä ja jopa asentaa uusia liitännäisiä kaupasta.",
+ "SuperUserIntro2": "Käytä tätä toimintoa harkiten.",
+ "SuperUsersPermissionsNotice": "Pääkäyttäjillä on ylläpito-oikeus kaikkiin sivustoihin, joten sivustokohtaisten oikeuksien hallinta ei ole tarpeen.",
+ "TheDisplayedUsersAreSelected": "%1$s näytettyä käyttäjää on valittu.",
+ "TheDisplayedWebsitesAreSelected": "%1$s näytettyä sivustoa on valittu.",
"TheLoginScreen": "Kirjautumisikkuna",
"ThereAreCurrentlyNRegisteredUsers": "Matomossa on nyt %s rekisteröitynyttä käyttäjää.",
"TokenAuth": "API:n autentikointipoletti",
"TokenRegenerateTitle": "Luo uudelleen",
- "TokensSuccessfullyDeleted": "Kaikki poletit poistettiin onnistuneesti",
"TokenSuccessfullyDeleted": "Poletti poistettiin onnistuneesti",
- "DeleteAllTokens": "Poista kaikki poletit",
- "ExpiredTokensDeleteAutomatically": "Poletit, joilla on eräpäivä, poistetaan automaattisesti.",
+ "TokenSuccessfullyGenerated": "Poletti luotiin onnistuneesti",
+ "TokensSuccessfullyDeleted": "Kaikki poletit poistettiin onnistuneesti",
"TokensWithExpireDateCreationBySystem": "Eräpäivällä varustettuja poletteja voi tällä hetkellä luoda ainoastaan järjestelmän toimesta",
- "TypeYourPasswordAgain": "Kirjoita uusi salasana uudelleen.",
+ "TwoFactorAuthentication": "Kaksivaiheinen tunnistautuminen",
"TypeYourCurrentPassword": "Kirjoita nykyinen salasanasi vahvistaaksesi salasanan vaihdon.",
+ "TypeYourPasswordAgain": "Kirjoita uusi salasana uudelleen.",
"User": "Käyttäjä",
"UserHasPermission": "Käyttäjällä %1$s on käyttöoikeus %2$s sivustolle %3$s.",
+ "UserSearch": "Käyttäjähaku",
+ "Username": "Käyttäjätunnus",
"UsersManagement": "Käyttäjien hallinta",
"UsersManagementMainDescription": "Lisää uusia käyttäjiä tai päivitä olemassaolevia. Voit asettaa oikeudet alla.",
+ "UsesTwoFactorAuthentication": "Käyttää kaksivaiheista tunnistautumista",
+ "YourCurrentPassword": "Nykyinen salasanasi",
"YourUsernameCannotBeChanged": "Käyttäjätunnusta ei voi vaihtaa.",
"YourVisitsAreIgnoredOnDomain": "%1$sMatomo ei seuraa käyntejäsi sivulla %2$s %3$s (Matomon eväste löytyi selaimestasi).",
- "YourVisitsAreNotIgnored": "%1$sMatomo seuraa käyntejäsi%2$s (Matomon evästettä ei löytynyt selaimestasi).",
- "AtLeastView": "Vähintään näkymä",
- "ManageUsers": "Hallitse käyttäjiä",
- "ManageUsersDesc": "Luo uusia käyttäjiä tai päivitä olemassa olevien käyttäjien ominaisuuksia. Voit määrittää käyttäjien käyttöoikeudet tämän sivun kautta.",
- "NoAccessWarning": "Tälle käyttäjälle ei ole määritetty pääsyä sivustolle. Kun käyttäjä kirjautuu, hän näkee virheviestin. Estääksesi virheviestin näkymsen, lisää pääsy sivustolle alapuolelta.",
- "BulkActions": "Massatoiminnot",
- "SetPermission": "Aseta käyttöoikeus",
- "RemovePermissions": "Poista käyttöoikeudet",
- "RolesHelp": "Roolit määrittävät mitä käyttäjä voi tehdä Matomossa liittyen yksittäiseen sivustoon. Lue lisää %1$sNäkymä-%2$s ja %3$sPääkäyttäjä%4$s-rooleista.",
- "Role": "Rooli",
- "TheDisplayedWebsitesAreSelected": "%1$s näytettyä sivustoa on valittu.",
- "ClickToSelectAll": "Napsauta valitaksesi kaikki %1$s.",
- "AllWebsitesAreSelected": "Kaikki %1$s sivustoa on valittu.",
- "ClickToSelectDisplayedWebsites": "Klikkaa valitaksesi %1$s näytettyä sivustoa.",
- "BasicInformation": "Perustiedot",
- "Permissions": "Käyttöoikeudet",
- "SuperUserAccess": "Pääkäyttäjän oikeudet",
- "SuperUsersPermissionsNotice": "Pääkäyttäjillä on ylläpito-oikeus kaikkiin sivustoihin, joten sivustokohtaisten oikeuksien hallinta ei ole tarpeen.",
- "SuperUserIntro1": "Pääkäyttäjillä on laajimmat käyttöoikeudet. He voivat suorittaa ylläpidollisia toimia, kuten lisätä uusia seurattavia sivustoja, lisätä uusia käyttäjiä, muuttaa käyttäen oikeuksia, ottaa käyttöön tai poistaa käytöstä liitännäisiä ja jopa asentaa uusia liitännäisiä kaupasta.",
- "SuperUserIntro2": "Käytä tätä toimintoa harkiten.",
- "HasSuperUserAccess": "Pääkäyttäjäoikeudet",
- "AreYouSure": "Oletko varma?",
- "DeleteUsers": "Poista käyttäjät",
- "UserSearch": "Käyttäjähaku",
- "FilterByAccess": "Suodata käyttöoikeuden mukaan",
- "FilterByWebsite": "Suodata sivuston mukaan",
- "ShowAll": "Näytä kaikki",
- "Username": "Käyttäjätunnus",
- "RoleFor": "Rooli sivustolle",
- "TheDisplayedUsersAreSelected": "%1$s näytettyä käyttäjää on valittu.",
- "AllUsersAreSelected": "Kaikki %1$s käyttäjää on valittu.",
- "ClickToSelectDisplayedUsers": "Klikkaa valitaksesi %1$s näytettyä käyttäjää.",
- "RemoveAllAccessToThisSite": "Poista kaikki oikeudet tälle sivustolle",
- "DeleteUserConfirmSingle": "Poistetaanko %1$s?",
- "DeleteUserConfirmMultiple": "Poistetaanko %1$s valittua käyttäjää?",
- "GiveAccessToAll": "Anna tälle käyttäjälle pääsy kaikkiin sivustoihin",
- "OrManageIndividually": "Vaihtoehtoisesti määritä tämän käyttäjän oikeudet sivustokohtaisesti",
- "ChangePermToAllSitesConfirm2": "Huomio: tämä vaikuttaa vain olemassa oleviin sivustoihin. Mahdollisesti uudet lisättävät sivustot eivät ole tämän käyttäjän käytettävissä.",
- "Capabilities": "Kyvykkyydet",
- "IncludedInUsersRole": "Sisältyy tämän käyttäjän rooliin.",
- "Capability": "Kyvykkyys",
- "EmailChangeNotificationSubject": "Matomo-tilisi sähköpostiosoite on juuri vaihdettu",
- "EmailChangedEmail1": "Tiliisi yhdistetty sähköpostiosoite on vaihdettu sähköpostiosoitteeseen %1$s",
- "EmailChangedEmail2": "Tämä muutos toteutettiin seuraavasta laitteesta: %1$s (IP-osoite = %2$s).",
- "IfThisWasYouIgnoreIfNot": "Jos se olit sinä, tämä viesti ei aiheuta toimenpiteitä. Jos se et ollut sinä, kirjaudu Matomoon, vaihda sähköpostiosoitteesi ja salasanasi, ja ole lopuksi yhteydessä käyttämäsi Matomon ylläpitoon.",
- "PasswordChangeNotificationSubject": "Matomo-tilisi salasana on juuri vaihdettu",
- "PasswordChangedEmail": "Salasanasi on vaihdettu. Vaihto toteutettiin seuraavasta laitteesta: %1$s (IP-osoite = %2$s).",
- "NewsletterSignupTitle": "Uutiskirjeen tilaus",
- "NewsletterSignupMessage": "Tilaa uutiskirje saadaksesi säännöllisesti Matomoon liittyvää tietoa. Voit lopettaa uutiskirjeen tilauksen milloin hyvänsä. Tämä palvelu käyttää MadMimiä. Lisätietoja MadMimistä annetaan %1$stietosuojasivullamme%2$s.",
- "NewsletterSignupFailureMessage": "Hups, jokin meni pieleen. Uutiskirjeen tilaus ei onnistunut.",
- "NewsletterSignupSuccessMessage": "Tilaus onnistui! Olemme yhteydessä pian."
+ "YourVisitsAreNotIgnored": "%1$sMatomo seuraa käyntejäsi%2$s (Matomon evästettä ei löytynyt selaimestasi)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/fr.json b/plugins/UsersManager/lang/fr.json
index c8cf718edb..a0ffefe7f5 100644
--- a/plugins/UsersManager/lang/fr.json
+++ b/plugins/UsersManager/lang/fr.json
@@ -152,7 +152,6 @@
"RolesHelp": "Les rôles déterminent ce qui les utilisateurs ont le droit de faire au sein de Matomo vis à vis d'un site web spécifique. Apprenez en plus à propos des rôles %1$sLecture%2$s et %3$sAdmin%4$s.",
"SaveBasicInfo": "Sauvegarder les informations de base",
"SetPermission": "Définir la permission",
- "ShowAll": "Afficher tout",
"SuperUserAccess": "Accès super utilisateur",
"SuperUserAccessManagement": "Gérer l'accès Super Utilisateur",
"SuperUserAccessManagementGrantMore": "Ici vous pouvez accorder un accès Super Utilisateur aux autres utilisateurs Matomo. Veuillez effectuer cela avec précaution.",
diff --git a/plugins/UsersManager/lang/he.json b/plugins/UsersManager/lang/he.json
index 9438428317..79b868d634 100644
--- a/plugins/UsersManager/lang/he.json
+++ b/plugins/UsersManager/lang/he.json
@@ -3,13 +3,12 @@
"AllWebsites": "כל האתרים",
"Email": "אימייל",
"ManageAccess": "ניהול הרשאות",
- "MenuUsers": "משתמשים",
"MenuUserSettings": "הגדרות משתמש",
+ "MenuUsers": "משתמשים",
"PrivNone": "אין הרשאות",
"PrivView": "הצג",
"User": "משתמש",
- "UsersManagement": "ניהול משתמשים",
- "ShowAll": "הצג הכל",
- "Username": "שם משתמש"
+ "Username": "שם משתמש",
+ "UsersManagement": "ניהול משתמשים"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/hi.json b/plugins/UsersManager/lang/hi.json
index 5027accf63..1f5961b7b5 100644
--- a/plugins/UsersManager/lang/hi.json
+++ b/plugins/UsersManager/lang/hi.json
@@ -12,15 +12,14 @@
"LastSeen": "अंतिम बार देखा गया",
"ManageAccess": "उपयोग का प्रबंधन",
"MenuAnonymousUserSettings": "बेनामी उपयोगकर्ता सेटिंग",
- "MenuUsers": "उपयोगकर्ता",
- "MenuUserSettings": "उपयोगकर्ता सेटिंग",
"MenuPersonal": "व्यक्तिगत",
- "PersonalSettings": "व्यक्तिगत सेटिंग",
+ "MenuUserSettings": "उपयोगकर्ता सेटिंग",
+ "MenuUsers": "उपयोगकर्ता",
"NoUsersExist": "कोई उपयोगकर्ता अभी तक कर रहे हैं ।",
+ "PersonalSettings": "व्यक्तिगत सेटिंग",
"PrivAdmin": "व्यवस्थापक",
"PrivNone": "प्रवेश नही",
"PrivView": "देखना",
- "ShowAll": "सभी दिखाएँ",
"Username": "उपयोगकर्ता नाम"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/hr.json b/plugins/UsersManager/lang/hr.json
index 35870c4f78..806efd413c 100644
--- a/plugins/UsersManager/lang/hr.json
+++ b/plugins/UsersManager/lang/hr.json
@@ -2,11 +2,10 @@
"UsersManager": {
"ExceptionEmailExists": "Korisnik sa istim emailom '%s' već postoji.",
"ExceptionInvalidEmail": "Nije dobar format emaila.",
- "MenuUsers": "Korisnici",
"MenuUserSettings": "Korisničke postavke",
+ "MenuUsers": "Korisnici",
"TypeYourPasswordAgain": "Ponovi novu lozinku.",
- "YourUsernameCannotBeChanged": "Korisničko ime se ne može promijeniti",
- "ShowAll": "Prikaži sve",
- "Username": "Korisničko ime"
+ "Username": "Korisničko ime",
+ "YourUsernameCannotBeChanged": "Korisničko ime se ne može promijeniti"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/hu.json b/plugins/UsersManager/lang/hu.json
index 5e5f050784..177204113c 100644
--- a/plugins/UsersManager/lang/hu.json
+++ b/plugins/UsersManager/lang/hu.json
@@ -24,7 +24,6 @@
"PrivView": "Megtekintés",
"ReportDateToLoadByDefault": "Alapértelmezett időintervallum a betöltődő jelentésekhez",
"ReportToLoadByDefault": "Alapértelmezettként betöltődő jelentés",
- "ShowAll": "Összes mutatása",
"TheLoginScreen": "Belépési képernyő",
"TypeYourPasswordAgain": "Add meg az új jelszót még egyszer.",
"User": "Felhasználó",
diff --git a/plugins/UsersManager/lang/id.json b/plugins/UsersManager/lang/id.json
index 9154321e60..b5c226d40d 100644
--- a/plugins/UsersManager/lang/id.json
+++ b/plugins/UsersManager/lang/id.json
@@ -36,7 +36,6 @@
"PrivView": "Tampilan",
"ReportDateToLoadByDefault": "Tanggal laporan yang dimuat secara asali",
"ReportToLoadByDefault": "Laporan yang dimuat secara asali",
- "ShowAll": "Tampilkan semua",
"TheLoginScreen": "Layar masuk",
"ThereAreCurrentlyNRegisteredUsers": "Telah ada %s pengguna terdaftar.",
"TypeYourPasswordAgain": "Ketik sandi baru Anda di sini.",
diff --git a/plugins/UsersManager/lang/it.json b/plugins/UsersManager/lang/it.json
index 3498ee1835..efcecc13f1 100644
--- a/plugins/UsersManager/lang/it.json
+++ b/plugins/UsersManager/lang/it.json
@@ -1,191 +1,190 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Usa l'autenticazione a due fattori",
- "TwoFactorAuthentication": "Autenticazione a due fattori",
- "ResetTwoFactorAuthentication": "Reimposta l'autenticazione a due fattori",
- "ResetTwoFactorAuthenticationInfo": "Se l'utente non può più accedere a causa di codici di ripristino o di un dispositivo di autenticazione persi, è possibile ripristinare l'autenticazione a due fattori per l'utente, in modo che possa accedere nuovamente.",
- "AddUser": "Aggiungi un nuovo utente",
"AddExistingUser": "Aggiungi un utente esistente",
"AddNewUser": "Aggiungi un nuovo utente",
- "EditUser": "Modifica utente",
- "CreateUser": "Crea utente",
- "SaveBasicInfo": "Salva Info di Base",
+ "AddSuperuserAccessConfirm": "Concedere un accesso di superuser consentirà all'utente di avere il pieno controllo su Matomo e ciò dovrebbe essere fatto con cautela. Inserisci la tua password per continuare.",
+ "AddUser": "Aggiungi un nuovo utente",
+ "AddUserNoInitialAccessError": "Bisogna assegnare a nuovi utenti l'accesso al sito, si prega di impostare il parametro 'initialIdSite'.",
+ "AllUsersAreSelected": "Tutti i %1$s utenti sono selezionati.",
"AllWebsites": "Tutti i siti",
- "LastUsed": "Ultimo utilizzo",
- "ExpireDate": "Data di scadenza",
- "AuthTokens": "Auth tokens",
- "AuthTokenPurpose": "Per cosa stai usando questo token?",
- "NoTokenCreatedYetCreateNow": "Non è ancora stato creato un token %1$screa ora un nuovo token%2$s.",
- "TokenSuccessfullyGenerated": "Token generato con successo",
- "ConfirmTokenCopied": "Confermo di aver copiato il token e di avere compreso che non devo condividerlo con nessun altro.",
- "GoBackSecurityPage": "Torna alla pagina della sicurezza.",
- "PleaseStoreToken": "Conserva il token in modo sicuro poiché non sarà possibile accedervi o visualizzarlo di nuovo.",
- "DoNotStoreToken": "Non condividere questo token con nessun altro perché è segreto quanto il tuo nome utente e la tua password.",
- "CreateNewToken": "Crea un nuovo token",
+ "AllWebsitesAreSelected": "Tutti i %1$s siti web sono selezionati.",
"AnonymousAccessConfirmation": "Stai per garantire all'utente anonimo l'accesso in 'lettura' a questo sito web. Ciò significa che i tuoi report delle statistiche e le informazioni sui visitatori saranno pubblicamente visibili da tutti anche senza un login. Sei sicuro di voler procedere?",
"AnonymousUser": "Utente anonimo",
"AnonymousUserHasViewAccess": "Nota: l'utente %1$s ha un accesso %2$s a questo sito.",
"AnonymousUserHasViewAccess2": "I tuoi report statistici e le informazioni sui tuoi visitatori sono visibili pubblicamente.",
+ "AnonymousUserRoleChangeWarning": "Assegnando all'utente %1$s il ruolo di %2$s renderà pubblici e disponibili a tutti i dati di questo sito Web, anche se non hanno un login Matomo.",
"ApplyToAllWebsites": "Applica a tutti i siti",
+ "AreYouSure": "Sei sicuro?",
+ "AreYouSureAddCapability": "Sei sicuro di voler concedere a %1$s la capacità %2$s per %3$s?",
+ "AreYouSureChangeDetails": "Sei sicuro di voler cambiare le informazioni utente per %s?",
+ "AreYouSureRemoveCapability": "Sei sicuro di voler togliere la capacità %1$s da %2$s per %3$s?",
+ "AtLeastView": "Almeno visione",
+ "AuthTokenPurpose": "Per cosa stai usando questo token?",
+ "AuthTokens": "Auth tokens",
+ "BasicInformation": "Informazioni di Base",
+ "BulkActions": "Azioni Massive",
+ "Capabilities": "Capacità",
+ "CapabilitiesHelp": "Le capacità sono delle possibilità individuali che gli utenti possono ottenere. I ruoli possono, per impostazione predefinita, garantire determinate capacità. Ad esempio, il ruolo di amministratore consentirà automaticamente agli utenti di modificare i tag in Tag Manager. Per utenti meno potenti, tuttavia, è possibile concedere loro esplicitamente delle funzionalità.",
+ "Capability": "Capacità",
"ChangeAllConfirm": "Sei sicuro di voler dare accesso '%s' a tutti i siti web?",
+ "ChangePermToAllSitesConfirm": "Sei sicuro di voler concedere all'%1$sutente%2$s l'accesso a ogni sito web al quale hai attualmente l'accesso come amministratore?",
+ "ChangePermToAllSitesConfirm2": "Nota: ciò influenzerà solo i siti web attualmente esistenti. I nuovi siti web che potresti creare non saranno automaticamente accessibili a questo utente.",
+ "ChangePermToSiteConfirmMultiple": "Sei sicuro di voler cambiare il ruolo di %1$s nei %2$s siti web selezionati in %3$s?",
+ "ChangePermToSiteConfirmSingle": "Sei sicuro di voler cambiare il ruolo di %1$s in %2$s a %3$s?",
"ClickHereToDeleteTheCookie": "Clicca qui per cancellare il cookie, affinché Matomo tracci nuovamente le tue visite",
"ClickHereToSetTheCookieOnDomain": "Clicca qui per creare un cookie che escluderà le tue visite dai siti monitorati con Matomo %s",
+ "ClickToSelectAll": "Clicca per selezionare tutti i %1$s.",
+ "ClickToSelectDisplayedUsers": "Clicca per selezionare i %1$s utenti visualizzati.",
+ "ClickToSelectDisplayedWebsites": "Clicca per selezionare i %1$s siti web visualizzati.",
"ConfirmGrantSuperUserAccess": "Vuoi veramente dare a '%s' l'accesso Super User? Attenzione: l'utente avrà accesso a tutti i siti web e potrà eseguire attività amministrative.",
"ConfirmProhibitMySuperUserAccess": "%s, vuoi veramente rimuovere il tuo accesso Super User? Perderai tutti i permessi e l'accesso a tutti i siti web e verrai escluso da Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Vuoi veramente togliere l'accesso Super User a '%s'? L'utente perderà tutti i permessi e l'accesso a tutti i siti web. Assicurati di dare successivamente l'accesso ai siti richiesti, se necessario.",
+ "ConfirmTokenCopied": "Confermo di aver copiato il token e di avere compreso che non devo condividerlo con nessun altro.",
+ "ConfirmWithPassword": "Si prega di inserire la tua password per confermare questo cambio.",
+ "CreateNewToken": "Crea un nuovo token",
+ "CreateUser": "Crea utente",
+ "CurrentPasswordNotCorrect": "La password attuale inserita non è corretta.",
+ "DeleteAllTokens": "Cancella tutti i token",
"DeleteConfirm": "Sei sicuro di voler cancellare l'utente '%s'?",
+ "DeletePermConfirmMultiple": "Sei sicuro di voler rimuovere l'accesso di %1$s ai %2$s siti web selezionati?",
+ "DeletePermConfirmSingle": "Sei sicuro di voler rimuovere l'accesso di %1$s a %2$s?",
+ "DeleteUserConfirmMultiple": "Sei sicuro di voler eliminare i %1$s utenti selezionati?",
+ "DeleteUserConfirmSingle": "Sei sicuro di voler eliminare %1$s?",
+ "DeleteUserPermConfirmMultiple": "Sei sicuro di voler cambiare il ruolo dei %1$s utenti selezionati in %2$s per %3$s?",
+ "DeleteUserPermConfirmSingle": "Sei sicuro di voler cambiare il ruolo di %1$s in %2$s per %3$s?",
+ "DeleteUsers": "Elimina Utenti",
+ "DoNotStoreToken": "Non condividere questo token con nessun altro perché è segreto quanto il tuo nome utente e la tua password.",
+ "EditUser": "Modifica utente",
"Email": "Email",
+ "EmailChangeNotificationSubject": "L'indirizzo email del tuo account Matomo è stato cambiato adesso",
+ "EmailChangedEmail1": "L'indirizzo email associato al tuo account Matomo è stato cambiato in %1$s",
+ "EmailChangedEmail2": "Questo cambiamento ha avuto origine dal seguente dispositivo: %1$s (Indirizzo IP = %2$s).",
"EmailYourAdministrator": "%1$sManda un'email al tuo amministratore su questo problema%2$s.",
"EnterUsernameOrEmail": "Inserisci nome utente o indirizzo email",
"ExceptionAccessValues": "Il parametro accesso deve avere uno dei seguenti valori: [ %1$s] , dati '%2$s'.",
- "ExceptionNoRoleSet": "Non è impostato alcun ruolo ma deve essere impostato uno di questi: %s",
- "ExceptionMultipleRoleSet": "Può essere impostato un solo ruolo ma ne sono stati impostati diversi. Usane uno solo tra: %s",
- "ExceptionAnonymousNoCapabilities": "Non puoi conferire alcuna facoltà a un utente 'anonimo'.",
"ExceptionAnonymousAccessNotPossible": "Puoi impostare un accesso %1$s o %2$s a un utente 'anonimo'.",
+ "ExceptionAnonymousNoCapabilities": "Non puoi conferire alcuna facoltà a un utente 'anonimo'.",
"ExceptionDeleteDoesNotExist": "L'utente '%s' non esiste, di conseguenza non può essere eliminato.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "L'eliminazione dell'utente '%s' non è possibile.",
"ExceptionEditAnonymous": "Gli utenti anonimi non possono essere modificati o cancellati. Questo profilo è utilizzato da Matomo per definire un utente che non ha effettuato l'accesso. Per esempio, se vuoi rendere pubbiche le tue statistiche, puoi dare il privilegio \\\"Visualizza\\\" al profilo degli utenti anonimi.",
"ExceptionEmailExists": "Utente con l'e-mail '%s' è già esistente.",
"ExceptionEmailExistsAsLogin": "L'email '%s' è già in uso come nome utente.",
- "ExceptionLoginExistsAsEmail": "Il nome utente '%s' è già in uso come email.",
"ExceptionInvalidEmail": "L'e-mail inserita non è valida.",
"ExceptionInvalidLoginFormat": "Il nome utente deve essere lungo tra %1$s e %2$s caratteri e contenere solo lettere, numeri o i caratteri '_' o '-' o '.' o '@' o '+'",
"ExceptionInvalidPassword": "La lunghezza della password deve essere maggiore di %1$s caratteri.",
"ExceptionInvalidPasswordTooLong": "La lunghezza della password deve essere minore di %1$s caratteri.",
"ExceptionLoginExists": "Il nome utente '%s' esiste già.",
+ "ExceptionLoginExistsAsEmail": "Il nome utente '%s' è già in uso come email.",
+ "ExceptionMultipleRoleSet": "Può essere impostato un solo ruolo ma ne sono stati impostati diversi. Usane uno solo tra: %s",
+ "ExceptionNoRoleSet": "Non è impostato alcun ruolo ma deve essere impostato uno di questi: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Per favore inserisci un nome utente o un indirizzo email.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth si aspetta una password MD5 hash (stringa lunga 32 caratteri). Si prega di richiamare la funzione md5() sulla password prima di richiamare questo metodo.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "È impossibile togliere l'accesso Super User all'utente '%s'.",
"ExceptionSuperUserAccess": "Questo utente ha l'accesso Super User e ha già i permessi per accedere e modificare tutti i siti web in Matomo. Puoi togliere l'accesso Super User a questo utente e provare di nuovo.",
- "ExceptionUserHasSuperUserAccess": "L'utente '%s' ha un accesso come Super User e ha già i permessi per accedere e modificare tutti i siti web in Matomo. Puoi rimuovere l'accesso come Super User per questo utente e provare di nuovo.",
"ExceptionUserDoesNotExist": "L'utente '%s' non esiste.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Ci deve essere almeno un utente con l'accesso Super User. Si prega di dare prima l'accesso Super User a un altro utente.",
+ "ExceptionUserHasSuperUserAccess": "L'utente '%s' ha un accesso come Super User e ha già i permessi per accedere e modificare tutti i siti web in Matomo. Puoi rimuovere l'accesso come Super User per questo utente e provare di nuovo.",
"ExceptionUserHasViewAccessAlready": "Questo utente ha già accesso a questo sito.",
- "ExceptionNoValueForUsernameOrEmail": "Per favore inserisci un nome utente o un indirizzo email.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Ci deve essere almeno un utente con l'accesso Super User. Si prega di dare prima l'accesso Super User a un altro utente.",
"ExcludeVisitsViaCookie": "Escludi le tue visite usando un cookie",
+ "ExpireDate": "Data di scadenza",
+ "ExpiredTokensDeleteAutomatically": "I token con una data di scadenza verranno cancellati automaticamente.",
+ "FilterByAccess": "Filtra per tipo di accesso",
+ "FilterByWebsite": "Filtra per sito web",
+ "FirstSiteInlineHelp": "È necessario assegnare a un nuovo utente un ruolo di sola lettura per un sito web al momento della creazione. Se non viene fornito alcun accesso, l'utente riceverà un messaggio di errore durante l'accesso. Dopo che l'utente sarà stato creato, puoi dare altri permessi nella scheda \"Autorizzazioni\" che apparirà a sinistra.",
+ "FirstWebsitePermission": "Permessi primo sito web",
"ForAnonymousUsersReportDateToLoadByDefault": "Per utenti anonimi, data report da caricare di default",
+ "GiveAccessToAll": "Concedi a questo utente l'accesso a tutti i siti",
"GiveUserAccess": "Dai a '%1$s' l'accesso %2$s per %3$s.",
"GiveViewAccess": "Da' accesso in lettura a %1$s",
- "GiveViewAccessTitle": "Dai a un utente esistente l'accesso per vedere i report per %s",
"GiveViewAccessInstructions": "Per dare a un utente esistente l'accesso in visione per %s inserisci il nome utente o l'indirizzo email di un utente esistente",
+ "GiveViewAccessTitle": "Dai a un utente esistente l'accesso per vedere i report per %s",
+ "GoBackSecurityPage": "Torna alla pagina della sicurezza.",
+ "HasSuperUserAccess": "Ha l'accesso come Superuser",
+ "IfThisWasYouIgnoreIfNot": "Se sei stato tu, ignora questa email. Altrimenti, accedi, correggi il tuo indirizzo email, cambia la password e contatta il tuo amministratore di Matomo.",
+ "IfThisWasYouPasswordChange": "Se sei stato tu, ignora tranquillamente questa email. In caso contrario, contatta immediatamente l'amministratore di Matomo, poiché il tuo account potrebbe essere stato compromesso!",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se desideri cambiare la password, digitarne una nuova. Altrimenti, lascia in bianco.",
- "YourCurrentPassword": "Password attuale",
- "CurrentPasswordNotCorrect": "La password attuale inserita non è corretta.",
- "ConfirmWithPassword": "Si prega di inserire la tua password per confermare questo cambio.",
+ "IncludedInUsersRole": "Comprese nel ruolo di questo utente.",
"InjectedHostCannotChangePwd": "Al momento stai navigando da un host sconosciuto (%1$s). Non è possibile modificare la password fino a quando questo problema non verrà risolto.",
"LastSeen": "Visto l'ultima volta",
+ "LastUsed": "Ultimo utilizzo",
"MainDescription": "Decidi quali utenti devono avere accesso ai tuoi siti web. Puoi anche dare l'accesso a tutti i siti web in una volta sola scegliendo \"Applica a tutti i siti web\" nel selettore dei siti web.",
"ManageAccess": "Amministra l'accesso",
+ "ManageUsers": "Amministra Utenti",
+ "ManageUsersDesc": "Crea dei nuovi utenti o aggiorna quelli esistenti. Da qui puoi anche impostare i loro permessi.",
"MenuAnonymousUserSettings": "Impostazioni utente anonimo",
- "MenuUsers": "Utenti",
- "MenuUserSettings": "Impostazioni utente",
"MenuPersonal": "Personale",
- "PersonalSettings": "Impostazioni personali",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: Non puoi cambiare le impostazioni in questa sezione perché nessun sito è accessibile dagli utenti anonimi.",
+ "MenuUserSettings": "Impostazioni utente",
+ "MenuUsers": "Utenti",
+ "NewsletterSignupFailureMessage": "Oooops, qualcosa è andata storta. Non abbiamo potuto iscriverti alla newsletter.",
+ "NewsletterSignupMessage": "Iscriviti alla nostra newsletter per ricevere regolarmente informazioni su Matomo. Puoi cancellare l'iscrizione in ogni momento. Qeusto servizio utilizza MadMimi. Leggi di più su di esso nella nostra pagina %1$sPolitiche sulla Privacy%2$s.",
+ "NewsletterSignupSuccessMessage": "Super, sei iscritto! Ci sentiremo presto.",
+ "NewsletterSignupTitle": "Iscrizione alla Newsletter",
+ "NoAccessWarning": "A questo utente non è stato concesso di accedere al sito web. Quando cercherà di accedere, vedrà un messaggio di errore. Per evitare ciò, aggiungi qui sotto l'accesso a un sito web.",
+ "NoTokenCreatedYetCreateNow": "Non è ancora stato creato un token %1$screa ora un nuovo token%2$s.",
"NoUsersExist": "Non ci sono ancora utenti.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: Non puoi cambiare le impostazioni in questa sezione perché nessun sito è accessibile dagli utenti anonimi.",
+ "OrManageIndividually": "O tratta l'accesso di questo utente per ogni singolo sito web",
+ "PasswordChangeNotificationSubject": "La password del tuo account Matomo è stata cambiata adesso",
+ "PasswordChangedEmail": "La tua password è stata cambiata adesso. Il cambiamento ha avuto origine dal seguente dispositivo: %1$s (Indirizzo IP =%2$s).",
+ "Permissions": "Permessi",
+ "PersonalSettings": "Impostazioni personali",
+ "PleaseStoreToken": "Conserva il token in modo sicuro poiché non sarà possibile accedervi o visualizzarlo di nuovo.",
"PluginDescription": "La Gestione Utenti ti permette di aggiungere nuovi utenti, modificare utenti esistenti e dare loro l'accesso per vedere o amministrare i siti web.",
"PrivAdmin": "Amministra Matomo",
"PrivAdminDescription": "Gli utenti con questo ruolo possono amministrare un sito web e conferire il diritto di accesso al sito agli altri utenti. Esso possono anche fare tutto ciò che può fare il ruolo %s.",
- "PrivWrite": "Scrittura",
- "PrivWriteDescription": "Gli utenti con questo ruolo possono vedere tutti i contenuti, in più creare, gestire e cancellare per questo sito web entità quali Goal, Funnel, Heatmap, Registrazioni di Sessione e Moduli.",
"PrivNone": "Nessun accesso",
"PrivView": "Vista",
"PrivViewDescription": "Un utente con questo ruolo può vedere tutti i report.",
+ "PrivWrite": "Scrittura",
+ "PrivWriteDescription": "Gli utenti con questo ruolo possono vedere tutti i contenuti, in più creare, gestire e cancellare per questo sito web entità quali Goal, Funnel, Heatmap, Registrazioni di Sessione e Moduli.",
+ "RemoveAllAccessToThisSite": "Rimuovi tutti gli accessi a questo sito web.",
+ "RemovePermissions": "Rimuovi Permessi",
+ "RemoveSuperuserAccessConfirm": "La rimozione dell'accesso superuser lascerà l'utente senza i permessi (dovrai aggiungerli in seguito). Inserisci la tua password per continuare.",
"RemoveUserAccess": "Togli a '%1$s' l'accesso a %2$s.",
"ReportDateToLoadByDefault": "Data report da caricare di default",
"ReportToLoadByDefault": "Report da caricare di default",
+ "ResetTwoFactorAuthentication": "Reimposta l'autenticazione a due fattori",
+ "ResetTwoFactorAuthenticationInfo": "Se l'utente non può più accedere a causa di codici di ripristino o di un dispositivo di autenticazione persi, è possibile ripristinare l'autenticazione a due fattori per l'utente, in modo che possa accedere nuovamente.",
+ "Role": "Ruolo",
+ "RoleFor": "Ruolo per",
+ "RolesHelp": "I ruoli determinano cosa può fare un utente all'interno di Matomo nell'ambito di un determinato sito web. Impara di più riguardo ai ruoli %1$sLettura%2$s e %3$sAdmin%4$s.",
+ "SaveBasicInfo": "Salva Info di Base",
+ "SetPermission": "Imposta Permessi",
+ "SuperUserAccess": "Accesso Superuser",
"SuperUserAccessManagement": "Gestisci l'accesso Super User",
"SuperUserAccessManagementGrantMore": "Qui puoi dare l'accesso Super User ad altri utenti di Matomo. Si prega di utilizzare con cautela questa funzione.",
"SuperUserAccessManagementMainDescription": "I Super User hanno i permessi più elevati. Possono eseguire tutti i compiti amministrativi come aggiungere nuovi siti web da controllare, aggiungere utenti, cambiare i permessi utente, attivare e disattivare i plugin e persino installare dei nuovi plugin presi dal Marketplace.",
+ "SuperUserIntro1": "I Super User hanno i permessi più alti. Possono eseguire tutte le attività amministrative, ad esempio l'aggiunta di nuovi siti web per il monitoraggio, l'aggiunta di utenti, la modifica delle autorizzazioni degli utenti, l'attivazione e la disattivazione dei plug-in e l'installazione di nuovi plug-in dal Marketplace. Qui puoi concedere l'accesso Super User ad altri utenti di Divezone.",
+ "SuperUserIntro2": "Usa questa funzionalità con cautela.",
+ "SuperUsersPermissionsNotice": "I Super User hanno un accesso da amministratore per tutti i siti web, così che non è necessario gestire i loro permessi per ogni sito.",
+ "TheDisplayedUsersAreSelected": "I %1$s utenti visualizzati sono selezionati.",
+ "TheDisplayedWebsitesAreSelected": "I %1$s siti web visualizzati sono selezionati",
"TheLoginScreen": "La schermata di login",
"ThereAreCurrentlyNRegisteredUsers": "Al momento ci sono %s utenti registrati.",
"TokenAuth": "Token Autenticazione API",
+ "TokenAuthIntro": "I token che hai generato possono essere utilizzati per accedere all'API dei report di Matomo, all'API di tracciamento di Matomo e ai widget esportati di Matomo, e hanno le stesse autorizzazioni del tuo normale accesso utente. Puoi utilizzare questi token anche per l'app Matomo Mobile.",
"TokenRegenerateConfirmSelf": "Il cambiamento del token di autenticazione API invaliderà il tuo. Se il token attuale è in uso, devi aggiornare tutti i client API con il token generato ex novo. Vuoi veramente cambiare il tuo token di autenticazione?",
"TokenRegenerateTitle": "Rigenera",
- "TokensSuccessfullyDeleted": "Tutti i token sono stati cancellati con successo",
"TokenSuccessfullyDeleted": "Il token è stato cancellato con successo",
- "DeleteAllTokens": "Cancella tutti i token",
- "ExpiredTokensDeleteAutomatically": "I token con una data di scadenza verranno cancellati automaticamente.",
+ "TokenSuccessfullyGenerated": "Token generato con successo",
+ "TokensSuccessfullyDeleted": "Tutti i token sono stati cancellati con successo",
"TokensWithExpireDateCreationBySystem": "I token con data di scadenza possono attualmente essere creati solo dal sistema",
- "TokenAuthIntro": "I token che hai generato possono essere utilizzati per accedere all'API dei report di Matomo, all'API di tracciamento di Matomo e ai widget esportati di Matomo, e hanno le stesse autorizzazioni del tuo normale accesso utente. Puoi utilizzare questi token anche per l'app Matomo Mobile.",
- "TypeYourPasswordAgain": "Scrivi di nuovo la tua nuova password.",
+ "TwoFactorAuthentication": "Autenticazione a due fattori",
"TypeYourCurrentPassword": "Si prega di digitare la password corrente per confermare il cambio password.",
+ "TypeYourPasswordAgain": "Scrivi di nuovo la tua nuova password.",
"User": "Utente",
- "UserHasPermission": "%1$s ha al momento accesso %2$s per %3$s.",
"UserHasNoPermission": "%1$s ha al momento %2$s a %3$s",
+ "UserHasPermission": "%1$s ha al momento accesso %2$s per %3$s.",
+ "UserSearch": "Ricerca utente",
+ "Username": "Nome utente",
"UsersManagement": "Gestione utenti",
"UsersManagementMainDescription": "Crea nuovi utenti o aggiorna quelli esistenti. Puoi anche scegliere quali operazioni permettere tramite la tabella qui sopra.",
+ "UsesTwoFactorAuthentication": "Usa l'autenticazione a due fattori",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quando gli utenti non sono registrati e visitano Matomo, dovrebbero inizialmente vedere",
+ "YourCurrentPassword": "Password attuale",
"YourUsernameCannotBeChanged": "Il tuo nome utente non può essere cambiato.",
"YourVisitsAreIgnoredOnDomain": "%1$sLe tue visite sono ignorate da Matomo %2$s %3$s (il cookie 'ignora visite' di Matomo è stato trovato nel tuo browser).",
- "YourVisitsAreNotIgnored": "%1$sLe tue visite non sono ignorate da Matomo%2$s (il cookie 'ignora visite' di Matomo non è stato trovato nel tuo browser).",
- "AddUserNoInitialAccessError": "Bisogna assegnare a nuovi utenti l'accesso al sito, si prega di impostare il parametro 'initialIdSite'.",
- "AtLeastView": "Almeno visione",
- "ManageUsers": "Amministra Utenti",
- "ManageUsersDesc": "Crea dei nuovi utenti o aggiorna quelli esistenti. Da qui puoi anche impostare i loro permessi.",
- "NoAccessWarning": "A questo utente non è stato concesso di accedere al sito web. Quando cercherà di accedere, vedrà un messaggio di errore. Per evitare ciò, aggiungi qui sotto l'accesso a un sito web.",
- "BulkActions": "Azioni Massive",
- "SetPermission": "Imposta Permessi",
- "RemovePermissions": "Rimuovi Permessi",
- "RolesHelp": "I ruoli determinano cosa può fare un utente all'interno di Matomo nell'ambito di un determinato sito web. Impara di più riguardo ai ruoli %1$sLettura%2$s e %3$sAdmin%4$s.",
- "Role": "Ruolo",
- "TheDisplayedWebsitesAreSelected": "I %1$s siti web visualizzati sono selezionati",
- "ClickToSelectAll": "Clicca per selezionare tutti i %1$s.",
- "AllWebsitesAreSelected": "Tutti i %1$s siti web sono selezionati.",
- "ClickToSelectDisplayedWebsites": "Clicca per selezionare i %1$s siti web visualizzati.",
- "DeletePermConfirmSingle": "Sei sicuro di voler rimuovere l'accesso di %1$s a %2$s?",
- "DeletePermConfirmMultiple": "Sei sicuro di voler rimuovere l'accesso di %1$s ai %2$s siti web selezionati?",
- "ChangePermToSiteConfirmSingle": "Sei sicuro di voler cambiare il ruolo di %1$s in %2$s a %3$s?",
- "ChangePermToSiteConfirmMultiple": "Sei sicuro di voler cambiare il ruolo di %1$s nei %2$s siti web selezionati in %3$s?",
- "BasicInformation": "Informazioni di Base",
- "Permissions": "Permessi",
- "SuperUserAccess": "Accesso Superuser",
- "FirstSiteInlineHelp": "È necessario assegnare a un nuovo utente un ruolo di sola lettura per un sito web al momento della creazione. Se non viene fornito alcun accesso, l'utente riceverà un messaggio di errore durante l'accesso. Dopo che l'utente sarà stato creato, puoi dare altri permessi nella scheda \"Autorizzazioni\" che apparirà a sinistra.",
- "SuperUsersPermissionsNotice": "I Super User hanno un accesso da amministratore per tutti i siti web, così che non è necessario gestire i loro permessi per ogni sito.",
- "SuperUserIntro1": "I Super User hanno i permessi più alti. Possono eseguire tutte le attività amministrative, ad esempio l'aggiunta di nuovi siti web per il monitoraggio, l'aggiunta di utenti, la modifica delle autorizzazioni degli utenti, l'attivazione e la disattivazione dei plug-in e l'installazione di nuovi plug-in dal Marketplace. Qui puoi concedere l'accesso Super User ad altri utenti di Divezone.",
- "SuperUserIntro2": "Usa questa funzionalità con cautela.",
- "HasSuperUserAccess": "Ha l'accesso come Superuser",
- "AreYouSure": "Sei sicuro?",
- "RemoveSuperuserAccessConfirm": "La rimozione dell'accesso superuser lascerà l'utente senza i permessi (dovrai aggiungerli in seguito). Inserisci la tua password per continuare.",
- "AddSuperuserAccessConfirm": "Concedere un accesso di superuser consentirà all'utente di avere il pieno controllo su Matomo e ciò dovrebbe essere fatto con cautela. Inserisci la tua password per continuare.",
- "DeleteUsers": "Elimina Utenti",
- "UserSearch": "Ricerca utente",
- "FilterByAccess": "Filtra per tipo di accesso",
- "FilterByWebsite": "Filtra per sito web",
- "ShowAll": "Mostra tutto",
- "Username": "Nome utente",
- "RoleFor": "Ruolo per",
- "TheDisplayedUsersAreSelected": "I %1$s utenti visualizzati sono selezionati.",
- "AllUsersAreSelected": "Tutti i %1$s utenti sono selezionati.",
- "ClickToSelectDisplayedUsers": "Clicca per selezionare i %1$s utenti visualizzati.",
- "RemoveAllAccessToThisSite": "Rimuovi tutti gli accessi a questo sito web.",
- "DeleteUserConfirmSingle": "Sei sicuro di voler eliminare %1$s?",
- "DeleteUserConfirmMultiple": "Sei sicuro di voler eliminare i %1$s utenti selezionati?",
- "DeleteUserPermConfirmSingle": "Sei sicuro di voler cambiare il ruolo di %1$s in %2$s per %3$s?",
- "DeleteUserPermConfirmMultiple": "Sei sicuro di voler cambiare il ruolo dei %1$s utenti selezionati in %2$s per %3$s?",
- "AreYouSureChangeDetails": "Sei sicuro di voler cambiare le informazioni utente per %s?",
- "AnonymousUserRoleChangeWarning": "Assegnando all'utente %1$s il ruolo di %2$s renderà pubblici e disponibili a tutti i dati di questo sito Web, anche se non hanno un login Matomo.",
- "GiveAccessToAll": "Concedi a questo utente l'accesso a tutti i siti",
- "OrManageIndividually": "O tratta l'accesso di questo utente per ogni singolo sito web",
- "ChangePermToAllSitesConfirm": "Sei sicuro di voler concedere all'%1$sutente%2$s l'accesso a ogni sito web al quale hai attualmente l'accesso come amministratore?",
- "ChangePermToAllSitesConfirm2": "Nota: ciò influenzerà solo i siti web attualmente esistenti. I nuovi siti web che potresti creare non saranno automaticamente accessibili a questo utente.",
- "CapabilitiesHelp": "Le capacità sono delle possibilità individuali che gli utenti possono ottenere. I ruoli possono, per impostazione predefinita, garantire determinate capacità. Ad esempio, il ruolo di amministratore consentirà automaticamente agli utenti di modificare i tag in Tag Manager. Per utenti meno potenti, tuttavia, è possibile concedere loro esplicitamente delle funzionalità.",
- "Capabilities": "Capacità",
- "AreYouSureAddCapability": "Sei sicuro di voler concedere a %1$s la capacità %2$s per %3$s?",
- "AreYouSureRemoveCapability": "Sei sicuro di voler togliere la capacità %1$s da %2$s per %3$s?",
- "IncludedInUsersRole": "Comprese nel ruolo di questo utente.",
- "Capability": "Capacità",
- "EmailChangeNotificationSubject": "L'indirizzo email del tuo account Matomo è stato cambiato adesso",
- "EmailChangedEmail1": "L'indirizzo email associato al tuo account Matomo è stato cambiato in %1$s",
- "EmailChangedEmail2": "Questo cambiamento ha avuto origine dal seguente dispositivo: %1$s (Indirizzo IP = %2$s).",
- "IfThisWasYouIgnoreIfNot": "Se sei stato tu, ignora questa email. Altrimenti, accedi, correggi il tuo indirizzo email, cambia la password e contatta il tuo amministratore di Matomo.",
- "IfThisWasYouPasswordChange": "Se sei stato tu, ignora tranquillamente questa email. In caso contrario, contatta immediatamente l'amministratore di Matomo, poiché il tuo account potrebbe essere stato compromesso!",
- "PasswordChangeNotificationSubject": "La password del tuo account Matomo è stata cambiata adesso",
- "PasswordChangedEmail": "La tua password è stata cambiata adesso. Il cambiamento ha avuto origine dal seguente dispositivo: %1$s (Indirizzo IP =%2$s).",
- "NewsletterSignupTitle": "Iscrizione alla Newsletter",
- "NewsletterSignupMessage": "Iscriviti alla nostra newsletter per ricevere regolarmente informazioni su Matomo. Puoi cancellare l'iscrizione in ogni momento. Qeusto servizio utilizza MadMimi. Leggi di più su di esso nella nostra pagina %1$sPolitiche sulla Privacy%2$s.",
- "NewsletterSignupFailureMessage": "Oooops, qualcosa è andata storta. Non abbiamo potuto iscriverti alla newsletter.",
- "NewsletterSignupSuccessMessage": "Super, sei iscritto! Ci sentiremo presto.",
- "FirstWebsitePermission": "Permessi primo sito web"
+ "YourVisitsAreNotIgnored": "%1$sLe tue visite non sono ignorate da Matomo%2$s (il cookie 'ignora visite' di Matomo non è stato trovato nel tuo browser)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ja.json b/plugins/UsersManager/lang/ja.json
index 08e5ba4715..b141245f64 100644
--- a/plugins/UsersManager/lang/ja.json
+++ b/plugins/UsersManager/lang/ja.json
@@ -152,7 +152,6 @@
"RolesHelp": "ロールは、ユーザーが特定のウェブサイトに関して Matomo に何ができるかを決定します。 表示と%3$s管理者%4$sのロールの詳細を%1$sご覧ください%2$s。",
"SaveBasicInfo": "基本情報を保存する",
"SetPermission": "パーミッションを設定する",
- "ShowAll": "全てを表示",
"SuperUserAccess": "スーパーユーザーアクセス",
"SuperUserAccessManagement": "スーパーユーザーアクセス権の管理",
"SuperUserAccessManagementGrantMore": "ここでは、スーパーユーザーアクセス権を Matomo の他のユーザーに付与することができます。この機能は、慎重にご利用ください。",
diff --git a/plugins/UsersManager/lang/ko.json b/plugins/UsersManager/lang/ko.json
index da3baeacad..4e1dd2d8c0 100644
--- a/plugins/UsersManager/lang/ko.json
+++ b/plugins/UsersManager/lang/ko.json
@@ -24,29 +24,29 @@
"ExceptionInvalidLoginFormat": "사용자 이름은 반드시 %1$s 에서 %2$s 사이의 글자 수여야 하고 오직 문자, 숫자, 또는 '_', '-', '.', '@', '+'만 포함해야 합니다.",
"ExceptionInvalidPassword": "비밀번호 길이는 최소 %1$s 글자 이상이어야 합니다.",
"ExceptionLoginExists": "'%s' 님은 이미 존재합니다.",
+ "ExceptionNoValueForUsernameOrEmail": "사용자 이름 혹은 이메일 주소를 넣어주세요.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth는 MD5 해시 값의 비밀번호 (32자 길이의 문자열)을 사용하고 있습니다. 이 메소드를 호출하기 전에 암호에 md5() 함수를 호출합니다.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "사용자 '%s'의 슈퍼 유저 권한 제거가 가능하지 않습니다.",
"ExceptionSuperUserAccess": "해당 사용자는 슈퍼 유저 권한을 가지고 있기에 Matomo 내 모든 웹사이트에 대해서 접근 가능하고 수정 역시 가능합니다. 해당 유저의 슈퍼 유저 권한을 제거한 후 다시 시도해보세요.",
"ExceptionUserDoesNotExist": "사용자 '%s' 님은 존재하지 않습니다.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "최소 한 명의 사용자가 슈퍼 유저 권한을 가져야 합니다. 다른 사용자에게 먼저 슈퍼 유저 권한을 부여해주세요.",
"ExceptionUserHasViewAccessAlready": "이미 해당 사용자는 해당 웹사이트에 접근이 가능합니다.",
- "ExceptionNoValueForUsernameOrEmail": "사용자 이름 혹은 이메일 주소를 넣어주세요.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "최소 한 명의 사용자가 슈퍼 유저 권한을 가져야 합니다. 다른 사용자에게 먼저 슈퍼 유저 권한을 부여해주세요.",
"ExcludeVisitsViaCookie": "자신의 방문 제외 (Cookie 사용)",
"ForAnonymousUsersReportDateToLoadByDefault": "anonymous 사용자를 위한 기본 보고서 날짜",
"GiveViewAccess": "%1$s 에게 보기 권한 주기",
- "GiveViewAccessTitle": "%s 보고서를 볼 수 있는 권한을 현 사용자에게 부여",
"GiveViewAccessInstructions": "기존 사용자에게 %s 의 보기 권한을 주기 위해 그 사용자 이름 혹은 이메일 주소를 입력하세요.",
+ "GiveViewAccessTitle": "%s 보고서를 볼 수 있는 권한을 현 사용자에게 부여",
"InjectedHostCannotChangePwd": "현재 알 수 없는 호스트 (%1$s)로 방문했습니다. 이 문제가 해결될 때까지 사용자는 자신의 비밀번호를 변경할 수 없습니다.",
"LastSeen": "최근 본",
"MainDescription": "어떤 사용자가 어떤 웹사이트를 접근시킬지 결정할 수 있습니다. \"모든 웹사이트에 적용\"을 선택함으로써 모든 웹사이트의 권한을 한번에 설정할 수 있습니다.",
"ManageAccess": "관리 접근",
"MenuAnonymousUserSettings": "anonymous 사용자 설정",
- "MenuUsers": "사용자",
- "MenuUserSettings": "사용자 설정",
"MenuPersonal": "개인",
- "PersonalSettings": "개인 설정",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "참고: 익명 사용자가 접근할 수있는 웹사이트가 없기 때문에 당신은 이 섹션의 설정을 변경할 수 없습니다.",
+ "MenuUserSettings": "사용자 설정",
+ "MenuUsers": "사용자",
"NoUsersExist": "아직 사용자가 없습니다.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "참고: 익명 사용자가 접근할 수있는 웹사이트가 없기 때문에 당신은 이 섹션의 설정을 변경할 수 없습니다.",
+ "PersonalSettings": "개인 설정",
"PluginDescription": "사용자 관리에서 당신은 새로운 사용자를 추가하고, 현재 사용자들을 수정하며 그들에게 웹사이트를 보거나 관리할 수 있도록 권한을 줄 수 있습니다.",
"PrivAdmin": "관리자",
"PrivNone": "접근할 수 없음",
@@ -63,12 +63,11 @@
"TokenRegenerateTitle": "재발급",
"TypeYourPasswordAgain": "새 비밀번호를 다시 입력합니다.",
"User": "사용자",
+ "Username": "사용자 이름",
"UsersManagement": "사용자 관리",
"UsersManagementMainDescription": "새로운 사용자를 생성하거나 또는 존재하는 사용자를 업데이트할 수 있습니다. 그리고 위에서 그들의 권한을 설정할 수 있습니다.",
"YourUsernameCannotBeChanged": "당신의 사용자 이름을 변경할 수 없습니다.",
"YourVisitsAreIgnoredOnDomain": "%1$s당신의 방문은%2$s Matomo에 무시됩니다%3$s (브라우저에서 Matomo 무시 용 Cookie 발견).",
- "YourVisitsAreNotIgnored": "%1$s당신의 방문은 Matomo에 무시하지 않습니다%2$s (브라우저에서 Matomo 무시의 Cookie를 찾을 수 없습니다).",
- "ShowAll": "모두 보기",
- "Username": "사용자 이름"
+ "YourVisitsAreNotIgnored": "%1$s당신의 방문은 Matomo에 무시하지 않습니다%2$s (브라우저에서 Matomo 무시의 Cookie를 찾을 수 없습니다)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ku.json b/plugins/UsersManager/lang/ku.json
index a767cfa74d..f4164fe094 100644
--- a/plugins/UsersManager/lang/ku.json
+++ b/plugins/UsersManager/lang/ku.json
@@ -2,7 +2,6 @@
"UsersManager": {
"MenuUsers": "بەکارهێنەرەکان",
"PrivView": "نیشاندان",
- "ShowAll": "هەموویان نیشان بدە",
"Username": "ناوی بەکارهێنەری"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/lv.json b/plugins/UsersManager/lang/lv.json
index c939f15604..833d24a922 100644
--- a/plugins/UsersManager/lang/lv.json
+++ b/plugins/UsersManager/lang/lv.json
@@ -17,8 +17,8 @@
"ForAnonymousUsersReportDateToLoadByDefault": "Atskaite, kuru ielādēt pēc noklusējuma anonīmiem lietotājiem",
"ManageAccess": "Pārvaldiet pieejas",
"MenuAnonymousUserSettings": "Anonīmu lietotāju iestatījumi",
- "MenuUsers": "Lietotāji",
"MenuUserSettings": "Lietotāju iestatījumi",
+ "MenuUsers": "Lietotāji",
"PrivAdmin": "Administrēt",
"PrivNone": "Nav pieejas",
"PrivView": "Skatījums",
@@ -28,11 +28,10 @@
"ThereAreCurrentlyNRegisteredUsers": "Pašlaik ir %s reģistrēti lietotāji.",
"TypeYourPasswordAgain": "Ierakstiet savu jauno paroli atkārtoti.",
"User": "Lietotājs",
+ "Username": "Lietotājvārds",
"UsersManagement": "Lietotāju pārvaldīšana",
"UsersManagementMainDescription": "Izveidojiet jaunus vai labojiet esošu lietotāju iestatījumus. Augstāk Jūs varat uzstādīt šo lietotāju pieejas atļaujas.",
"YourUsernameCannotBeChanged": "Jūsu lietotājvārdu nav iespējams izmainīt.",
- "YourVisitsAreIgnoredOnDomain": "%1$sJūsu apmeklējumi tiek ignorēti %2$s %3$s (pārlūkā tika atrasta Matomo ignorēšanas sīkdatne).",
- "ShowAll": "Rādīt visu",
- "Username": "Lietotājvārds"
+ "YourVisitsAreIgnoredOnDomain": "%1$sJūsu apmeklējumi tiek ignorēti %2$s %3$s (pārlūkā tika atrasta Matomo ignorēšanas sīkdatne)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/nb.json b/plugins/UsersManager/lang/nb.json
index cf70cb3193..c93199aa2f 100644
--- a/plugins/UsersManager/lang/nb.json
+++ b/plugins/UsersManager/lang/nb.json
@@ -21,6 +21,7 @@
"ClickToSelectAll": "Klikk for å velge alle %1$s.",
"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.",
"CreateNewToken": "Opprett nytt symbol",
"CreateUser": "Opprett bruker",
"DeleteAllTokens": "Slett alle symboler",
@@ -71,6 +72,7 @@
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Merk: Du kan ikke endre innstillingene i denne seksjonen fordi du ikke har noen nettsteder som kan nås av en anonym bruker.",
"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",
@@ -85,7 +87,6 @@
"RoleFor": "Rolle for",
"SaveBasicInfo": "Lagre grunnleggende info",
"SetPermission": "Sett tilgang",
- "ShowAll": "Vis alle",
"SuperUserAccess": "Superbruker-tilgang",
"SuperUserAccessManagement": "Administrer superbrukertilgang",
"SuperUserAccessManagementGrantMore": "Du kan gi superbrukertilgang til andre Matomo-brukere her. Vennligst bruk denne funksjonen forsiktig.",
diff --git a/plugins/UsersManager/lang/nl.json b/plugins/UsersManager/lang/nl.json
index 8dc381f3cc..cb021b5b12 100644
--- a/plugins/UsersManager/lang/nl.json
+++ b/plugins/UsersManager/lang/nl.json
@@ -1,12 +1,9 @@
{
"UsersManager": {
"2FA": "2FA",
- "TwoFactorAuthentication": "Twee-factor-authenticatie",
- "AddUser": "Nieuwe gebruiker toevoegen",
"AddExistingUser": "Bestaande gebruiker toevoegen",
"AddNewUser": "Nieuwe gebruiker toevoegen",
- "EditUser": "Gebruiker bewerken",
- "CreateUser": "Gebruiker aanmaken",
+ "AddUser": "Nieuwe gebruiker toevoegen",
"AllWebsites": "Alle websites",
"AnonymousUser": "Anonieme gebruiker",
"AnonymousUserHasViewAccess": "Opmerking: de %1$s-gebruiker heeft %2$s-toegang tot deze website.",
@@ -18,7 +15,9 @@
"ConfirmGrantSuperUserAccess": "Weet u zeker dat u '%s' Super Gebruiker toegang wilt geven? Waarschuwing: deze gebruiker heeft toegang tot alle websites en kan administratieve taken uitvoeren.",
"ConfirmProhibitMySuperUserAccess": "%s, wilt u echt uw eigen Super gebruiker rechten wegnemen? U verliest alle rechten en toegang tot alle websites en wordt bij Matomo uitgelogd.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Weet je zeker dat je de Super User rechten van '%s' wil verwijderen? De gebruiker zal alle rechten verliezen en toegang tot websites. Zorg ervoor dat na het verwijderen van de rechten, mocht het nodig zijn, de gebruiker rechten te geven voor specifieke websites.",
+ "CreateUser": "Gebruiker aanmaken",
"DeleteConfirm": "Weet je zeker dat je de gebruiker %s wilt verwijderen?",
+ "EditUser": "Gebruiker bewerken",
"Email": "E-mail",
"EmailYourAdministrator": "%1$sE-mail uw beheerder over dit probleem%2$s.",
"EnterUsernameOrEmail": "Vul een gebruikersnaam of e-mailadres in",
@@ -30,28 +29,28 @@
"ExceptionInvalidLoginFormat": "De gebruikersnaam moet tussen de %1$s en %2$s lang zijn en mogen alleen letter, getallen of de karakters '_' of '-' of '.' of '@' of '+' bevatten.",
"ExceptionInvalidPassword": "De wachtwoordlengte moet langer zijn dan %1$s karakters.",
"ExceptionLoginExists": "Gebruikersnaam '%s' bestaat al.",
+ "ExceptionNoValueForUsernameOrEmail": "Vul een gebruikersnaam of e-mailadres in.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth verwacht een MD5-hash wachtwoord (32 tekens lange reeks). Vraag de md5()functie op het wachtwoord op alvorens deze methode aan te roepen.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Het verwijderen van de Super User rechten van gebruiker '%s' is niet toegestaan.",
"ExceptionUserDoesNotExist": "Gebruiker '%s' bestaat niet.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Er moet minimaal één gebruiker zijn met Super User rechten. Geef eerst een gebruiker Super User rechten.",
"ExceptionUserHasViewAccessAlready": "Deze gebruiker heeft al toegang tot deze website.",
- "ExceptionNoValueForUsernameOrEmail": "Vul een gebruikersnaam of e-mailadres in.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Er moet minimaal één gebruiker zijn met Super User rechten. Geef eerst een gebruiker Super User rechten.",
"ExcludeVisitsViaCookie": "Sluit je bezoeken uit met een cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Voor anonieme gebruikers, standaard te laden rapportdatum",
"GiveUserAccess": "Geef '%1$s' %2$s toegang tot %3$s.",
"GiveViewAccess": "Geef kijkrechten voor %1$s",
- "GiveViewAccessTitle": "Geef een bestaande gebruiker toegang om de rapporten voor %s in te zien.",
"GiveViewAccessInstructions": "Om een bestaande gebruiker kijk rechten voor %s , voer de gebruikersnaam of het email adres van de gebruiker in",
+ "GiveViewAccessTitle": "Geef een bestaande gebruiker toegang om de rapporten voor %s in te zien.",
"InjectedHostCannotChangePwd": "U bezoekt momenteel met een onbekende host (%1$s). U kunt uw wachtwoord niet wijzigen totdat dit probleem is opgelost.",
"LastSeen": "Laatst gezien",
"ManageAccess": "Toegang beheren",
"MenuAnonymousUserSettings": "Anonieme gebruikersinstellingen",
- "MenuUsers": "Gebruikers",
- "MenuUserSettings": "Gebruikersinstellingen",
"MenuPersonal": "Persoonlijk",
- "PersonalSettings": "Persoonlijke instellingen",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Opmerking: u kunt de instellingen in deze sectie niet wijzigen, omdat u geen enkele website heeft die kan worden bezocht door de anonieme gebruiker.",
+ "MenuUserSettings": "Gebruikersinstellingen",
+ "MenuUsers": "Gebruikers",
"NoUsersExist": "Er zijn nog geen gebruikers.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Opmerking: u kunt de instellingen in deze sectie niet wijzigen, omdat u geen enkele website heeft die kan worden bezocht door de anonieme gebruiker.",
+ "PersonalSettings": "Persoonlijke instellingen",
"PluginDescription": "Gebruikersbeheer geeft de mogelijkheid om nieuwe gebruikers toe te voegen, bestaande gebruikers te bewerken en bepaalt de rechten om een website te zien of aan te maken.",
"PrivAdmin": "Beheerder",
"PrivNone": "Geen toegang",
@@ -65,16 +64,16 @@
"ThereAreCurrentlyNRegisteredUsers": "Er zijn momenteel %s geregistreerde gebruikers.",
"TokenAuth": "API Authenticatie Token",
"TokenRegenerateTitle": "Opnieuw genereren",
+ "TwoFactorAuthentication": "Twee-factor-authenticatie",
"TypeYourPasswordAgain": "Vul uw wachtwoord nogmaals in.",
"User": "Gebruiker",
- "UserHasPermission": "%1$s heeft momenteel %2$s-toegang tot %3$s.",
"UserHasNoPermission": "%1$s heeft momenteel %2$s tot %3$s",
+ "UserHasPermission": "%1$s heeft momenteel %2$s-toegang tot %3$s.",
+ "Username": "Gebruikersnaam",
"UsersManagement": "Gebruikersbeheer",
"UsersManagementMainDescription": "Creëer nieuwe of actualiseer bestaande gebruikers",
"YourUsernameCannotBeChanged": "Je gebruikersnaam kan niet worden gewijzigd.",
"YourVisitsAreIgnoredOnDomain": "%1$sUw bezoeken worden door Matomo op %2$s genegeerd %3$s (Matomo-negeercookie is in uw browser gevonden).",
- "YourVisitsAreNotIgnored": "%1$sUw bezoeken worden niet door Matomo genegeerd%2$s (Matomo-negeercookie is niet in uw browser gevonden).",
- "ShowAll": "Alles tonen",
- "Username": "Gebruikersnaam"
+ "YourVisitsAreNotIgnored": "%1$sUw bezoeken worden niet door Matomo genegeerd%2$s (Matomo-negeercookie is niet in uw browser gevonden)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/nn.json b/plugins/UsersManager/lang/nn.json
index ae76469523..7dd70cd7da 100644
--- a/plugins/UsersManager/lang/nn.json
+++ b/plugins/UsersManager/lang/nn.json
@@ -15,20 +15,19 @@
"ExcludeVisitsViaCookie": "Utelukk dine vitjingar frå Matomo med ein informasjonskapsel.",
"ManageAccess": "Bestem tilgang",
"MenuAnonymousUserSettings": "Innstillingar for anonyme brukarar",
- "MenuUsers": "Brukarar",
"MenuUserSettings": "Brukarinnstillingar",
+ "MenuUsers": "Brukarar",
"PrivAdmin": "Administrator",
"PrivNone": "Inga tilgang",
"PrivView": "Vis",
"TheLoginScreen": "Innloggingsskjermen",
"TypeYourPasswordAgain": "Skriv ditt nye passord på nytt.",
"User": "Brukar",
+ "Username": "Brukarnamn",
"UsersManagement": "Brukarbehandling",
"UsersManagementMainDescription": "Lag nye brukarar eller oppdater eksisterande brukarar. Du kan deretter setta deira tilgangar ovanfor.",
"YourUsernameCannotBeChanged": "Brukarnamnet ditt kan ikkje endrast.",
"YourVisitsAreIgnoredOnDomain": "%1$sDine vitjingar blir ignorert av Matomo på %2$s %3$s (Informasjonskapselen frå Matomo vart funnen i din nettlesar).",
- "YourVisitsAreNotIgnored": "%1$sDine vitjingar blir ikkje ignorert av Matomo%2$s (Informasjonskapselen frå Matomo vart ikkje funnen i din nettlesar).",
- "ShowAll": "Toon alle",
- "Username": "Brukarnamn"
+ "YourVisitsAreNotIgnored": "%1$sDine vitjingar blir ikkje ignorert av Matomo%2$s (Informasjonskapselen frå Matomo vart ikkje funnen i din nettlesar)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/pl.json b/plugins/UsersManager/lang/pl.json
index 48b130ce36..d2ac0e745f 100644
--- a/plugins/UsersManager/lang/pl.json
+++ b/plugins/UsersManager/lang/pl.json
@@ -1,36 +1,30 @@
{
"UsersManager": {
"2FA": "2SA",
- "UsesTwoFactorAuthentication": "Wykorzystuje 2 składnikowe uwierzytelnianie",
- "TwoFactorAuthentication": "Uwierzytelnianie 2 składnikowe",
- "ResetTwoFactorAuthentication": "Resetuj uwierzytelnienie 2 składnikowe",
- "ResetTwoFactorAuthenticationInfo": "Jeśli użytkownik nie może zalogować się po utracie kodów dostępu lub utracie tokena sprzętowego, możesz zresetować uwierzytelnianie 2 składnikowe dla niego, aby umożliwić ponowne logowanie.",
- "AddUser": "Dodaj nowego użytkownika",
"AddExistingUser": "Dodaj istniejącego użytkownika",
"AddNewUser": "Dodaj nowego użytkownika",
- "EditUser": "Edytuj użytkownika",
- "CreateUser": "Utwórz użytkownika",
- "SaveBasicInfo": "Zapisz Podstawowe Info",
+ "AddUser": "Dodaj nowego użytkownika",
"AllWebsites": "Wszystkie strony",
- "LastUsed": "Ostatnio użyty",
- "AuthTokens": "Tokeny autoryzacyjne",
- "AuthTokenPurpose": "Do czego wykorzystujesz ten token?",
- "NoTokenCreatedYetCreateNow": "Nie utworzono jeszcze tokenu, %1$sutwórz nowy teraz%2$s.",
- "TokenSuccessfullyGenerated": "Token został wygenerowany",
- "CreateNewToken": "Utwórz nowy token",
"AnonymousAccessConfirmation": "Zamierzasz przyznać anonimowemu użytkownikowi dostęp 'podgląd' do tego serwisu. To oznacza, że raporty analityczne i informacje o odwiedzających będą publicznie dostępne dla każdego nawet bez loginu. Czy na pewno chcesz kontynuować?",
"AnonymousUser": "Użytkownik anonimowy",
"AnonymousUserHasViewAccess": "NOTKA: użytkownik %1$s posiada dostęp %2$s do tej strony.",
"AnonymousUserHasViewAccess2": "Twój raport analityczny i informacja o Twoich odwiedzających są publicznie widoczne.",
"ApplyToAllWebsites": "Wszystkie serwisy",
+ "AuthTokenPurpose": "Do czego wykorzystujesz ten token?",
+ "AuthTokens": "Tokeny autoryzacyjne",
"ChangeAllConfirm": "Czy na pewno chcesz przydzielić użytkownikowi '%s' dostęp do wszystkich serwisów?",
"ClickHereToDeleteTheCookie": "kliknij tutaj by skasować ciasteczko cookie i umożliwić dla Matomo śledzenie twoich wizyt na stronie",
"ClickHereToSetTheCookieOnDomain": "Kliknij tutaj by ustawić ciasteczko cookie, które będzie wykluczało zliczanie twoich wizyt na stronie, gdy Matomo będzie je śledził na %s",
"ConfirmGrantSuperUserAccess": "Czy na pewno chcesz przyznać użytkownikowi '%s' dostęp Super Użytkownika? OSTRZEŻENIE: użytkownik ten uzyska dostęp do wszystkich serwisów i będzie mógł wykonywać zadania administratorskie.",
- "ConfirmProhibitMySuperUserAccess": "%s, czy na pewno chcesz usunąć przypisane do Twojego konta uprawnienia Super Użytkownika? Stracisz wszystkie uprawnienia i dostęp do wszystkich serwisów i zostaniesz wylogowany\\\/a z Matomo'a.",
+ "ConfirmProhibitMySuperUserAccess": "%s, czy na pewno chcesz usunąć przypisane do Twojego konta uprawnienia Super Użytkownika? Stracisz wszystkie uprawnienia i dostęp do wszystkich serwisów i zostaniesz wylogowany\\/a z Matomo'a.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Czy na pewno chcesz usunąć uprawnienia Super Użytkownika '%s'? Użytkownik ten straci wszystkie uprawnienia i dostęp do wszystkich serwisów. Upewnij się, że przydzielisz mu później dostęp do wybranych serwisów jeśli to konieczne.",
+ "CreateNewToken": "Utwórz nowy token",
+ "CreateUser": "Utwórz użytkownika",
+ "DeleteAllTokens": "Usuń wszystkie tokeny",
"DeleteConfirm": "Czy na pewno chcesz skasować konto użytkownika %s?",
+ "EditUser": "Edytuj użytkownika",
"Email": "E-mail",
+ "EmailChangeNotificationSubject": "Adres email powiązany z Twoim kontem Matomo został zmieniony",
"EmailYourAdministrator": "%1$sNapisz o tej sytuacji swojemu adminsitratorowi%2$s.",
"EnterUsernameOrEmail": "Wpisz nazwę użytkownika lub adres e-mail",
"ExceptionAccessValues": "Parametr dostęp musi mieć jedną z tych wartości: [%1$s], ustawiono '%2$s'.",
@@ -42,31 +36,34 @@
"ExceptionInvalidLoginFormat": "Nazwa użytkownika musi zawierać od %1$s do %2$s znaków, zawierać tylko litery, cyfry lub znaki '_', '-', '.', '@' lub '+'",
"ExceptionInvalidPassword": "Minimalna długość hasła to %1$s znaków.",
"ExceptionLoginExists": "Użytkownik '%s' już istnieje.",
+ "ExceptionNoValueForUsernameOrEmail": "Wpisz nazwę użytkownika lub adres e-mail.",
"ExceptionPasswordMD5HashExpected": "Metoda UsersManager.getTokenAuth oczekuje hasła z hashem MD5 (łańcuch o długości 32 znaków). Wywołaj funkcję md5() z parametrem hasła, by wygenerować hash przed wywołaniem tej metody.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Usunięcie uprawnień Super Użytkownika użytkownikowi '%s' nie jest możliwe.",
"ExceptionSuperUserAccess": "Ten użytkownik posiada uprawnienia Super Użytkownika, a z nimi dostęp i możliwość modyfikacji wszystkich serwisów w Matomo'u. Możesz usunąć uprawnienia Super Użytkownika z tego konta i spróbować ponownie.",
"ExceptionUserDoesNotExist": "Użytkownik '%s' nie istnieje.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "W systemie musi istnieć przynajmniej jedno konto z uprawnieniami Super Użytkownika. Proszę najpierw przyznaj dostęp Super Użytkownika innemu użytkownikowi.",
"ExceptionUserHasViewAccessAlready": "Ten użytkownik ma już dostęp do tego serwisu.",
- "ExceptionNoValueForUsernameOrEmail": "Wpisz nazwę użytkownika lub adres e-mail.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "W systemie musi istnieć przynajmniej jedno konto z uprawnieniami Super Użytkownika. Proszę najpierw przyznaj dostęp Super Użytkownika innemu użytkownikowi.",
"ExcludeVisitsViaCookie": "Wyklucz swoje wizyty stosując ciasteczka cookie",
+ "ExpiredTokensDeleteAutomatically": "Tokeny z ustawioną datą ważności zostaną skasowane automatycznie.",
"ForAnonymousUsersReportDateToLoadByDefault": "Dla użytkowników anonimowych, data raportu jako domyślna do wczytania",
"GiveUserAccess": "Przyznaj użytkownikowi '%1$s' dostęp %2$s do %3$s.",
"GiveViewAccess": "Przyznaj podgląd użytkownikowi %1$s",
- "GiveViewAccessTitle": "Przyznaj istniejącemu użytkownikowi dostęp do raportów dla %s",
"GiveViewAccessInstructions": "Aby przyznać istniejącemu użytkownikowi uprawnienia do %s wprowadź jego nazwę użytkownika lub adres e-mail.",
+ "GiveViewAccessTitle": "Przyznaj istniejącemu użytkownikowi dostęp do raportów dla %s",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Jeśli chcesz zmienić jasło, wpisz nowe. Aby pozostać przy obecnym, pozostaw pole puste.",
"InjectedHostCannotChangePwd": "Odwiedzasz tą stronę z nieznanego adresu (%1$s). Nie możesz zmienić swojego hasła do czasu rozwiązania tego problemu.",
"LastSeen": "Ostatnio widziany",
+ "LastUsed": "Ostatnio użyty",
"MainDescription": "Zdecyduj, którzy użytkownicy mają dostęp do Twoich serwisów. Możesz również przydzielić dostęp do wszystkich serwisów na raz wybierając \"Wszystkie serwisy\" w selektorze serwisów.",
"ManageAccess": "Zarządzanie uprawnieniami dostępu",
"MenuAnonymousUserSettings": "Konfiguracja użytkownika anonimowego",
- "MenuUsers": "Użytkownicy",
- "MenuUserSettings": "Konfiguracja użytkownika",
"MenuPersonal": "Osobiste",
- "PersonalSettings": "Ustawienia osobiste",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Uwaga: Nie możesz zmienić konfiguracji tej sekcji ponieważ nie posiadasz żadnych stron, do których osoba anonimowa miałąby dostęp.",
+ "MenuUserSettings": "Konfiguracja użytkownika",
+ "MenuUsers": "Użytkownicy",
+ "NoTokenCreatedYetCreateNow": "Nie utworzono jeszcze tokenu, %1$sutwórz nowy teraz%2$s.",
"NoUsersExist": "Nie ma jeszcze żadnych użytkowników.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Uwaga: Nie możesz zmienić konfiguracji tej sekcji ponieważ nie posiadasz żadnych stron, do których osoba anonimowa miałąby dostęp.",
+ "PersonalSettings": "Ustawienia osobiste",
"PluginDescription": "Zarządzanie Użytkownikami pozwala Ci dodawać nowych użytkowników, edytować obecnych i udzielać dostępu do przeglądania lub administrowania serwisami.",
"PrivAdmin": "Admin",
"PrivNone": "Brak dostępu",
@@ -74,6 +71,9 @@
"RemoveUserAccess": "Usuń dostęp użytkownikowi '%1$s' do %2$s.",
"ReportDateToLoadByDefault": "Data raportu jako domyślna do wczytania, dotyczy",
"ReportToLoadByDefault": "Raport jako domyślny do wczytania",
+ "ResetTwoFactorAuthentication": "Resetuj uwierzytelnienie 2 składnikowe",
+ "ResetTwoFactorAuthenticationInfo": "Jeśli użytkownik nie może zalogować się po utracie kodów dostępu lub utracie tokena sprzętowego, możesz zresetować uwierzytelnianie 2 składnikowe dla niego, aby umożliwić ponowne logowanie.",
+ "SaveBasicInfo": "Zapisz Podstawowe Info",
"SuperUserAccessManagement": "Zarządzaj dostępem Super Użytkowników",
"SuperUserAccessManagementGrantMore": "Możesz tu przydzielać dostęp Super Użytkownika innym użytkownikom Matomo'a. Proszę używaj z rozwagą.",
"SuperUserAccessManagementMainDescription": "Super Użytkownicy mają najwyższe uprawnienia w systemie. Mogą zarządzać wszystkimi zadaniami jak: dodawanie strony do monitoringu, użytkowników, aktywowaći deaktywować wtyczki, zmieniać uprawnienia innym użytkownikom, a także instalować nowe wtyczki z Marketu.",
@@ -81,23 +81,22 @@
"ThereAreCurrentlyNRegisteredUsers": "Obecnie znajduje się %s zarejestrowanych użytkowników.",
"TokenAuth": "Token autentykacji API",
"TokenRegenerateTitle": "Regeneruj",
- "TokensSuccessfullyDeleted": "Wszystkie tokeny zostały usunięte",
"TokenSuccessfullyDeleted": "Token został poprawnie usunięty",
- "DeleteAllTokens": "Usuń wszystkie tokeny",
- "ExpiredTokensDeleteAutomatically": "Tokeny z ustawioną datą ważności zostaną skasowane automatycznie.",
- "TypeYourPasswordAgain": "Wpisz nowe hasło ponownie.",
+ "TokenSuccessfullyGenerated": "Token został wygenerowany",
+ "TokensSuccessfullyDeleted": "Wszystkie tokeny zostały usunięte",
+ "TwoFactorAuthentication": "Uwierzytelnianie 2 składnikowe",
"TypeYourCurrentPassword": "Wpisz swoje obecne hasło, aby potwierdzić zmianę hasła.",
+ "TypeYourPasswordAgain": "Wpisz nowe hasło ponownie.",
"User": "Użytkownik",
- "UserHasPermission": "%1$s obecnie ma dostęp %2$s do %3$s.",
"UserHasNoPermission": "%1$s obecnie ma %2$s do %3$s",
+ "UserHasPermission": "%1$s obecnie ma dostęp %2$s do %3$s.",
+ "Username": "Nazwa użytkownika",
"UsersManagement": "Zarządzanie Użytkownikami",
"UsersManagementMainDescription": "Utworzenie nowych użytkowników lub aktualizacja istniejących. Ponadto możesz ustawić im poziom uprawnień.",
+ "UsesTwoFactorAuthentication": "Wykorzystuje 2 składnikowe uwierzytelnianie",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Niezalogowani użytkownicy odwiedzający Matomo, powinni zobaczyć",
"YourUsernameCannotBeChanged": "Twoja nazwa użytkownika nie może być zmieniona.",
"YourVisitsAreIgnoredOnDomain": "%1$sTwoje odwiedziny są ignorowane przez Matomo na %2$s %3$s (Matomo zignoruje ciasteczka cookie które znajdzie w twojej przeglądarce).",
- "YourVisitsAreNotIgnored": "%1$sTwoje odwiedziny nie będą ignorowane przez Matomo%2$s (Matomo nie odnalazł właściwego dla wykluczenia ciasteczka cookie w twojej przeglądarce).",
- "ShowAll": "Pokaż wszystko",
- "Username": "Nazwa użytkownika",
- "EmailChangeNotificationSubject": "Adres email powiązany z Twoim kontem Matomo został zmieniony"
+ "YourVisitsAreNotIgnored": "%1$sTwoje odwiedziny nie będą ignorowane przez Matomo%2$s (Matomo nie odnalazł właściwego dla wykluczenia ciasteczka cookie w twojej przeglądarce)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/pt-br.json b/plugins/UsersManager/lang/pt-br.json
index 20ddc13f11..a93124690b 100644
--- a/plugins/UsersManager/lang/pt-br.json
+++ b/plugins/UsersManager/lang/pt-br.json
@@ -1,37 +1,64 @@
{
"UsersManager": {
"2FA": "A2F",
- "UsesTwoFactorAuthentication": "Usar autenticação de dois fatores",
- "TwoFactorAuthentication": "Autenticação de dois fatores",
- "ResetTwoFactorAuthentication": "Redefinir autenticação de dois fatores",
- "ResetTwoFactorAuthenticationInfo": "Se o usuário não puder mais fazer login devido à perda dos códigos de recuperação ou à perda de um dispositivo de autenticação, você pode redefinir a autenticação de dois fatores para o usuário para que ele possa fazer login novamente.",
- "AddUser": "Adicionar novo usuário",
"AddExistingUser": "Adicionar um usuário existente",
"AddNewUser": "Adicionar novo usuário",
- "EditUser": "Editar usuário",
- "CreateUser": "Criar usuário",
- "SaveBasicInfo": "Salvar informação básica",
+ "AddSuperuserAccessConfirm": "Dar a um usuário acesso de super usuário irá permitir ao usuário ter controle total sobre o Matomo e deve ser feito com cautela. Digite sua senha para continuar.",
+ "AddUser": "Adicionar novo usuário",
+ "AddUserNoInitialAccessError": "Novos usuários devem ter acesso a um site, por favor defina o parâmetro 'initialIdSite'.",
+ "AllUsersAreSelected": "Todos os %1$s usuários estão selecionados.",
"AllWebsites": "Todos os sites",
+ "AllWebsitesAreSelected": "Todos os %1$s sites estão selecionados.",
"AnonymousAccessConfirmation": "Você está prestes a conceder para o usuário anônimo o acesso de 'visualização' para este site. Isso significa que seus relatórios de análise e as informações de seus visitantes serão publicamente visíveis por qualquer pessoa, mesmo sem login. Você tem certeza de que deseja continuar?",
"AnonymousUser": "Usuário anônimo",
"AnonymousUserHasViewAccess": "Obs: o usuário %1$s tem acesso %2$s para este site.",
"AnonymousUserHasViewAccess2": "Seus relatórios de análise e suas informações de visitantes são visíveis publicamente.",
+ "AnonymousUserRoleChangeWarning": "Conceder ao usuário %1$s o perfil %2$s irá tornar os dados deste site públicos e disponíveis a todos, mesmo quem não tem um login Matomo.",
"ApplyToAllWebsites": "Aplicar a todos os sites",
+ "AreYouSure": "Você tem certeza?",
+ "AreYouSureAddCapability": "Tem certeza de que deseja dar a %1$s a capacidade %2$s por %3$s?",
+ "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",
+ "BasicInformation": "Informação básica",
+ "BulkActions": "Ações em massa",
+ "Capabilities": "Capacidades",
+ "CapabilitiesHelp": "Capacidades são habilidades individuais que podem ser concedidas a usuários. Perfis podem, por padrão, conceder algumas capacidades. Por exemplo, o perfil Administrador irá automaticamente permitir aos usuários editarem tags no Gerenciador de Tags. Para usuários menos poderosos, entretanto, você pode explicitamente conceder capacidades aos usuários.",
+ "Capability": "Capacidade",
"ChangeAllConfirm": "Você tem certeza que quer dar acesso a '%s' para todos os sites?",
+ "ChangePermToAllSitesConfirm": "Você tem certeza de que deseja dar ao usuário %1$s acesso %2$s a todo site que você atualmente tem acesso de administrador?",
+ "ChangePermToAllSitesConfirm2": "Obs: isto irá afetar apenas os sites existentes atualmente. Novos sites que você criar não estarão acessíveis automaticamente para este usuário.",
+ "ChangePermToSiteConfirmMultiple": "Você tem certeza de que deseja alterar o perfil de %1$s nos %2$s sites selecionados para %3$s?",
+ "ChangePermToSiteConfirmSingle": "Você tem certeza de que deseja alterar o perfil de %1$s em %2$s para %3$s?",
"ClickHereToDeleteTheCookie": "Clique aqui para excluir o cookie e deixar o Matomo rastrear suas visitas",
"ClickHereToSetTheCookieOnDomain": "Clique aqui para definir um cookie que excluirá suas visitas em sites rastreados pelo Matomo em %s",
+ "ClickToSelectAll": "Clique para selecionar tudo %1$s.",
+ "ClickToSelectDisplayedUsers": "Clique para selecionar os %1$s usuários exibidos.",
+ "ClickToSelectDisplayedWebsites": "Clique para selecionar os %1$s sites exibidos.",
"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.",
+ "ConfirmWithPassword": "Por favor digite sua senha para confirmar esta alteração.",
+ "CreateUser": "Criar usuário",
+ "CurrentPasswordNotCorrect": "A senha atual informada não está correta.",
"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?",
+ "DeleteUserConfirmMultiple": "Tem certeza de que deseja excluir os %1$s usuários selecionados?",
+ "DeleteUserConfirmSingle": "Tem certeza de que deseja excluir %1$s?",
+ "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",
+ "EditUser": "Editar usuário",
"Email": "E-mail",
+ "EmailChangeNotificationSubject": "O endereço de e-mail da sua conta Matomo acabou de ser alterado",
+ "EmailChangedEmail1": "O endereço de e-mail associado à sua conta foi alterado para %1$s",
+ "EmailChangedEmail2": "Esta alteração foi iniciada do seguinte dispositivo: %1$s (endereço IP = %2$s).",
"EmailYourAdministrator": "%1$sEnviar e-mail a seu administrador sobre este problema%2$s.",
"EnterUsernameOrEmail": "Digite um nome de usuário ou endereço de e-mail",
"ExceptionAccessValues": "O parâmetro de acesso deve conter um dos seguintes valores: [ %1$s ], '%2$s' fornecido.",
- "ExceptionNoRoleSet": "Nenhum perfil está definido, mas um desses precisa ser definido: %s",
- "ExceptionMultipleRoleSet": "Apenas um perfil pode ser definido, mas vários foram definidos. Use somente um desses: %s",
- "ExceptionAnonymousNoCapabilities": "Você não pode conceder nenhuma capacidade para o usuário 'anônimo'.",
"ExceptionAnonymousAccessNotPossible": "Você pode definir somente acesso %1$s ou %2$s acesso para o usuário 'anônimo(a)'.",
+ "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'.",
@@ -41,129 +68,101 @@
"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.",
+ "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.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth está esperando por um hash MD5 da senha (32 caracteres). Por favor, chame a função md5() na senha antes de chamar este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Não é possível remover o acesso de Super Usuário do usuário '%s'.",
"ExceptionSuperUserAccess": "Este usuário tem acesso Super Usuário e já tem permissão para acessar e modificar todos os sites no Matomo. Você pode remover o acesso de Super Usuário deste usuário e tentar novamente.",
- "ExceptionUserHasSuperUserAccess": "O usuário '%s' tem acesso Super Usuário e já tem permissão para acessar e modificar todos os sites no Matomo. Você pode remover o acesso Super Usuário deste usuário e tentar novamente.",
"ExceptionUserDoesNotExist": "Usuário '%s' não existe.",
- "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.",
+ "ExceptionUserHasSuperUserAccess": "O usuário '%s' tem acesso Super Usuário e já tem permissão para acessar e modificar todos os sites no Matomo. Você pode remover o acesso Super Usuário deste usuário e tentar novamente.",
"ExceptionUserHasViewAccessAlready": "Esse usuário já tem acesso a este site.",
- "ExceptionNoValueForUsernameOrEmail": "Por favor, digite um nome de usuário ou endereço de e-mail.",
+ "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",
+ "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.",
"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",
- "GiveViewAccessTitle": "Dar a usuário existente acesso para visualizar relatórios de %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",
+ "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.",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se você deseja alterar sua senha, digite uma nova. Caso contrário, deixe em branco.",
- "YourCurrentPassword": "Sua senha atual",
- "CurrentPasswordNotCorrect": "A senha atual informada não está correta.",
- "ConfirmWithPassword": "Por favor digite sua senha para confirmar esta alteração.",
+ "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",
"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",
+ "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",
- "MenuUsers": "Usuários",
- "MenuUserSettings": "Configurações de usuário",
"MenuPersonal": "Pessoal",
- "PersonalSettings": "Configurações pessoais",
- "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.",
+ "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.",
+ "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.",
"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.",
+ "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",
"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.",
- "PrivWrite": "Escrever",
- "PrivWriteDescription": "Usuários com este perfil podem visualizar todo o conteúdo, além de criar, gerenciar e excluir entidades como Metas, Funis, Mapas de Calor, Gravações de Sessão e Formulários para este site.",
"PrivNone": "Sem acesso",
"PrivView": "Visualização",
"PrivViewDescription": "Um usuário com este perfil pode visualizar todos os relatórios.",
+ "PrivWrite": "Escrever",
+ "PrivWriteDescription": "Usuários com este perfil podem visualizar todo o conteúdo, além de criar, gerenciar e excluir entidades como Metas, Funis, Mapas de Calor, Gravações de Sessão e Formulários para este site.",
+ "RemoveAllAccessToThisSite": "Remover todo acesso a este site",
+ "RemovePermissions": "Remover permissões",
+ "RemoveSuperuserAccessConfirm": "Remover o acesso de super usuário irá deixar o usuário sem permissões (você terá que adicioná-las depois). Digite sua senha para continuar.",
"RemoveUserAccess": "Remover acesso para '%1$s' para %2$s.",
"ReportDateToLoadByDefault": "Relate data para carregar por padrão",
"ReportToLoadByDefault": "Relate para carregar por padrão",
+ "ResetTwoFactorAuthentication": "Redefinir autenticação de dois fatores",
+ "ResetTwoFactorAuthenticationInfo": "Se o usuário não puder mais fazer login devido à perda dos códigos de recuperação ou à perda de um dispositivo de autenticação, você pode redefinir a autenticação de dois fatores para o usuário para que ele possa fazer login novamente.",
+ "Role": "Perfil",
+ "RoleFor": "Perfil para",
+ "RolesHelp": "Perfis determinam o que um usuário pode fazer no Matomo em relação a um site específico. Saiba mais sobre os perfis %1$sVisualizar%2$s e %3$sAdministrador%4$s.",
+ "SaveBasicInfo": "Salvar informação básica",
+ "SetPermission": "Definir permissão",
+ "SuperUserAccess": "Acesso super usuário",
"SuperUserAccessManagement": "Gerenciar o acesso do Super Usuário",
"SuperUserAccessManagementGrantMore": "Você pode conceder o acesso de Super Usuário a outros usuários do Matomo aqui. Utilize este recurso com cuidado.",
"SuperUserAccessManagementMainDescription": "Super usuários têm as maiores permissões. Eles podem executar todas as tarefas administrativas, tais como adição de novos sites para monitorar, adicionar usuários, alterar permissões de usuários, ativar e desativar plugins e até mesmo instalar novos plugins do Mercado.",
+ "SuperUserIntro1": "Super usuários têm as maiores permissões. Eles podem executar todas as tarefas administrativas, tais como adição de novos sites para monitorar, adicionar usuários, alterar permissões de usuários, ativar e desativar plugins e até mesmo instalar novos plugins do Mercado. Você pode conceder acesso de Super Usuário para outros usuários do Divezone aqui.",
+ "SuperUserIntro2": "Por favor, use essa funcionalidade com cuidado.",
+ "SuperUsersPermissionsNotice": "Super usuários têm acesso de administrador em todos os sites, então não há necessidade de gerenciar suas permissões por site.",
+ "TheDisplayedUsersAreSelected": "Os %1$s usuários exibidos estão selecionados.",
+ "TheDisplayedWebsitesAreSelected": "Os %1$s sites exibidos estão selecionados.",
"TheLoginScreen": "A tela de login",
"ThereAreCurrentlyNRegisteredUsers": "Existem atualmente %s usuários registrados.",
"TokenAuth": "Token de autenticação da API",
"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",
+ "TwoFactorAuthentication": "Autenticação de dois fatores",
"TypeYourPasswordAgain": "Digite sua nova senha novamente.",
"User": "Usuário",
- "UserHasPermission": "%1$s tem atualmente acesso %2$s para %3$s.",
"UserHasNoPermission": "%1$s tem atualmente %2$s para %3$s",
+ "UserHasPermission": "%1$s tem atualmente acesso %2$s para %3$s.",
+ "UserSearch": "Procurar usuário",
+ "Username": "Nome de Usuário",
"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.",
+ "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).",
- "YourVisitsAreNotIgnored": "%1$sSuas visitas não são ignoradas pelo Matomo%2$s (o cookie para ignorar o Matomo não foi encontrado em seu navegador).",
- "AddUserNoInitialAccessError": "Novos usuários devem ter acesso a um site, por favor defina o parâmetro 'initialIdSite'.",
- "AtLeastView": "Pelo menos visualizar",
- "ManageUsers": "Gerenciar Usuários",
- "ManageUsersDesc": "Crie novos usuários ou atualize os usuários existentes. Então você pode definir as permissões deles aqui também.",
- "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.",
- "BulkActions": "Ações em massa",
- "SetPermission": "Definir permissão",
- "RemovePermissions": "Remover permissões",
- "RolesHelp": "Perfis determinam o que um usuário pode fazer no Matomo em relação a um site específico. Saiba mais sobre os perfis %1$sVisualizar%2$s e %3$sAdministrador%4$s.",
- "Role": "Perfil",
- "TheDisplayedWebsitesAreSelected": "Os %1$s sites exibidos estão selecionados.",
- "ClickToSelectAll": "Clique para selecionar tudo %1$s.",
- "AllWebsitesAreSelected": "Todos os %1$s sites estão selecionados.",
- "ClickToSelectDisplayedWebsites": "Clique para selecionar os %1$s sites exibidos.",
- "DeletePermConfirmSingle": "Você tem certeza de que deseja remover o acesso de %1$s ao %2$s?",
- "DeletePermConfirmMultiple": "Você tem certeza de que deseja remover o acesso de %1$s aos %2$s sites selecionados?",
- "ChangePermToSiteConfirmSingle": "Você tem certeza de que deseja alterar o perfil de %1$s em %2$s para %3$s?",
- "ChangePermToSiteConfirmMultiple": "Você tem certeza de que deseja alterar o perfil de %1$s nos %2$s sites selecionados para %3$s?",
- "BasicInformation": "Informação básica",
- "Permissions": "Permissões",
- "SuperUserAccess": "Acesso super usuário",
- "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.",
- "SuperUsersPermissionsNotice": "Super usuários têm acesso de administrador em todos os sites, então não há necessidade de gerenciar suas permissões por site.",
- "SuperUserIntro1": "Super usuários têm as maiores permissões. Eles podem executar todas as tarefas administrativas, tais como adição de novos sites para monitorar, adicionar usuários, alterar permissões de usuários, ativar e desativar plugins e até mesmo instalar novos plugins do Mercado. Você pode conceder acesso de Super Usuário para outros usuários do Divezone aqui.",
- "SuperUserIntro2": "Por favor, use essa funcionalidade com cuidado.",
- "HasSuperUserAccess": "Possui Acesso Super Usuário",
- "AreYouSure": "Você tem certeza?",
- "RemoveSuperuserAccessConfirm": "Remover o acesso de super usuário irá deixar o usuário sem permissões (você terá que adicioná-las depois). Digite sua senha para continuar.",
- "AddSuperuserAccessConfirm": "Dar a um usuário acesso de super usuário irá permitir ao usuário ter controle total sobre o Matomo e deve ser feito com cautela. Digite sua senha para continuar.",
- "DeleteUsers": "Excluir usuários",
- "UserSearch": "Procurar usuário",
- "FilterByAccess": "Filtrar por acesso",
- "FilterByWebsite": "Filtrar por site",
- "ShowAll": "Exibir tudo",
- "Username": "Nome de Usuário",
- "RoleFor": "Perfil para",
- "TheDisplayedUsersAreSelected": "Os %1$s usuários exibidos estão selecionados.",
- "AllUsersAreSelected": "Todos os %1$s usuários estão selecionados.",
- "ClickToSelectDisplayedUsers": "Clique para selecionar os %1$s usuários exibidos.",
- "RemoveAllAccessToThisSite": "Remover todo acesso a este site",
- "DeleteUserConfirmSingle": "Tem certeza de que deseja excluir %1$s?",
- "DeleteUserConfirmMultiple": "Tem certeza de que deseja excluir os %1$s usuários selecionados?",
- "DeleteUserPermConfirmSingle": "Tem certeza de que deseja alterar o perfil de %1$s para %2$s em %3$s?",
- "DeleteUserPermConfirmMultiple": "Tem certeza de que deseja alterar os perfis dos %1$s usuários selecionados para %2$s em %3$s?",
- "AreYouSureChangeDetails": "Tem certeza de que deseja alterar as informações de usuário de %s?",
- "AnonymousUserRoleChangeWarning": "Conceder ao usuário %1$s o perfil %2$s irá tornar os dados deste site públicos e disponíveis a todos, mesmo quem não tem um login Matomo.",
- "GiveAccessToAll": "Dar a este usuário acesso a todos os sites",
- "OrManageIndividually": "Ou gerencie o acesso deste usuário em cada site individualmente.",
- "ChangePermToAllSitesConfirm": "Você tem certeza de que deseja dar ao usuário %1$s acesso %2$s a todo site que você atualmente tem acesso de administrador?",
- "ChangePermToAllSitesConfirm2": "Obs: isto irá afetar apenas os sites existentes atualmente. Novos sites que você criar não estarão acessíveis automaticamente para este usuário.",
- "CapabilitiesHelp": "Capacidades são habilidades individuais que podem ser concedidas a usuários. Perfis podem, por padrão, conceder algumas capacidades. Por exemplo, o perfil Administrador irá automaticamente permitir aos usuários editarem tags no Gerenciador de Tags. Para usuários menos poderosos, entretanto, você pode explicitamente conceder capacidades aos usuários.",
- "Capabilities": "Capacidades",
- "AreYouSureAddCapability": "Tem certeza de que deseja dar a %1$s a capacidade %2$s por %3$s?",
- "AreYouSureRemoveCapability": "Tem certeza de que deseja remover a capacidade %1$s de %2$s por %3$s?",
- "IncludedInUsersRole": "Incluído no perfil deste usuário.",
- "Capability": "Capacidade",
- "EmailChangeNotificationSubject": "O endereço de e-mail da sua conta Matomo acabou de ser alterado",
- "EmailChangedEmail1": "O endereço de e-mail associado à sua conta foi alterado para %1$s",
- "EmailChangedEmail2": "Esta alteração foi iniciada do seguinte dispositivo: %1$s (endereço IP = %2$s).",
- "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.",
- "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).",
- "NewsletterSignupTitle": "Inscrição em 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.",
- "NewsletterSignupFailureMessage": "Ops, algo deu errado. Nós não conseguimos te inscrever no boletim informativo.",
- "NewsletterSignupSuccessMessage": "Parabéns, você está inscrito! Entraremos em contato em breve."
+ "YourVisitsAreNotIgnored": "%1$sSuas visitas não são ignoradas pelo Matomo%2$s (o cookie para ignorar o Matomo não foi encontrado em seu navegador)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/pt.json b/plugins/UsersManager/lang/pt.json
index 9e8be03bc3..b7d9697d03 100644
--- a/plugins/UsersManager/lang/pt.json
+++ b/plugins/UsersManager/lang/pt.json
@@ -1,45 +1,68 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Utiliza a autenticação de dois fatores",
- "TwoFactorAuthentication": "Autenticação de dois fatores",
- "ResetTwoFactorAuthentication": "Repor a autenticação de dois fatores",
- "ResetTwoFactorAuthenticationInfo": "Se o utilizador não conseguir iniciar sessão devido à perda de códigos de recuperação ou perda do dispositivo de autenticação, pode repor a a autenticação de dois fatores do utilizador, para que este possa iniciar sessão novamente.",
- "AddUser": "Adicionar um novo utilizador",
"AddExistingUser": "Adicionar um utilizador existente",
"AddNewUser": "Adicionar um novo utilizador",
- "EditUser": "Editar utilizador",
- "CreateUser": "Criar utilizador",
- "SaveBasicInfo": "Guardar informações básicas",
+ "AddSuperuserAccessConfirm": "Atribuir a um utilizador o acesso de super-utilizador confere-lhe um controlo absoluto do Matomo, algo que deve ser feito com moderação. Introduza a sua palavra-passe para continuar.",
+ "AddUser": "Adicionar um novo utilizador",
+ "AddUserNoInitialAccessError": "Deve ser dado acesso a um site aos novos utilizadores. Por favor, defina o parâmetro 'initialIdSite'.",
+ "AllUsersAreSelected": "Estão selecionados todos os %1$s utilizadores.",
"AllWebsites": "Todos os sites",
- "LastUsed": "Último utilizado",
- "ExpireDate": "Data de expiração",
- "AuthTokens": "Códigos de autorização",
- "AuthTokenPurpose": "Para que está a utilizar este código?",
- "NoTokenCreatedYetCreateNow": "Ainda sem códigos criados, %1$scrie agora um novo código%2$s.",
- "TokenSuccessfullyGenerated": "Código gerado com sucesso",
- "GoBackSecurityPage": "Voltar para a página de segurança.",
- "CreateNewToken": "Criar novo código",
+ "AllWebsitesAreSelected": "Estão selecionados todos os %1$s sites.",
"AnonymousAccessConfirmation": "Está prestes a atribuir ao utilizador anónimo o acesso de 'visualização' para este site. Isto significa que os relatórios de análise e a informação dos seus visitantes será visível publicamente por qualquer pessoa, mesmo as que não tenham conta. Tem a certeza que pretende continuar?",
"AnonymousUser": "Utilizador anónimo",
"AnonymousUserHasViewAccess": "Nota: o utilizador %1$s tem acesso de %2$s a este site.",
"AnonymousUserHasViewAccess2": "Os seus relatórios de análise e a informação dos seus visitantes é visível publicamente.",
+ "AnonymousUserRoleChangeWarning": "Atribuir ao utilizador %1$s o papel de %2$s irá tornar público e disponibilizar para todos os dados deste site, mesmo que não tenham uma conta no Matomo.",
"ApplyToAllWebsites": "Aplicar a todos os sites",
+ "AreYouSure": "Tem a certeza?",
+ "AreYouSureAddCapability": "Tem a certeza que pretende atribuir o privilégio %2$s a %1$s para %3$s?",
+ "AreYouSureChangeDetails": "Tem a certeza que pretende alterar a informação do utilizador para %s?",
+ "AreYouSureRemoveCapability": "Tem a certeza que pretende remover o privilégio %2$s a %1$s para %3$s?",
+ "AtLeastView": "Pelo menos visualização",
+ "AuthTokenPurpose": "Para que está a utilizar este código?",
+ "AuthTokens": "Códigos de autorização",
+ "BasicInformation": "Informação básica",
+ "BulkActions": "Ações em volume",
+ "Capabilities": "Privilégios",
+ "CapabilitiesHelp": "Os privilégios são permissões individuais que os podem ser atribuídos a utilizadores. Os papéis podem, por predefinição, atribuir determinados privilégios. Por exemplo, o papel de Administração pode permitir que os utilizadores possam editar tags no Gestor de tags. Para utilizadores com menos permissões pode, no entanto, atribuir privilégios de forma explícita.",
+ "Capability": "Privilégio",
"ChangeAllConfirm": "Tem a certeza que pretende dar acesso para '%s' a todos os sites?",
+ "ChangePermToAllSitesConfirm": "Tem a certeza de que pretende dar acesso de %1$s utilizador %2$s a cada um dos sites aos quais tenha acesso de administração?",
+ "ChangePermToAllSitesConfirm2": "Nota: isto apenas afeta os sites que existam neste momento. Os novos sites que possa vir a criar não serão acessíveis de forma automática a este utilizador.",
+ "ChangePermToSiteConfirmMultiple": "Tem a certeza que pretende alterar o papel de %1$s dos %2$s sites selecionados para %3$s?",
+ "ChangePermToSiteConfirmSingle": "Tem a certeza que pretende alterar o papel de %1$s para %2$s para %3$s?",
"ClickHereToDeleteTheCookie": "Clique aqui para eliminar o cookie e permitir que o Matomo acompanhe as suas visitas.",
"ClickHereToSetTheCookieOnDomain": "Clique aqui para definir um cookie que excluirá o acompanhamento de todas as suas visitas a sites por parte do Matomo em %s",
+ "ClickToSelectAll": "Clique para selecionar todos os %1$s.",
+ "ClickToSelectDisplayedUsers": "Clique para selecionar os %1$s utilizadores apresentados.",
+ "ClickToSelectDisplayedWebsites": "Clique para selecionar os %1$s sites apresentados.",
"ConfirmGrantSuperUserAccess": "Quer mesmo atribuir acesso de super-utilizador a '%s'? Aviso: o utilizador terá acesso a todos os sites e poderá executar tarefas administrativas.",
"ConfirmProhibitMySuperUserAccess": "%s, quer mesmo remover o seu próprio acesso de super-utilizador? Irá perder todas as permissões e o acesso a todos os sites, e a sua sessão do Matomo será terminada.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Quer mesmo remover o acesso de super-utilizador de '%s'? O utilizador irá perder todas as permissões e o acesso a todos os sites. Confirme que depois dá acesso aos sites necessários, caso seja pertinente.",
+ "ConfirmWithPassword": "Por favor, introduza a sua palavra-passe para confirmar esta alteração.",
+ "CreateNewToken": "Criar novo código",
+ "CreateUser": "Criar utilizador",
+ "CurrentPasswordNotCorrect": "A palavra-passe atual que introduziu não está correta.",
+ "DeleteAllTokens": "Eliminar todos os códigos",
"DeleteConfirm": "Tem a certeza que deseja eliminar o utilizador %s?",
+ "DeletePermConfirmMultiple": "Tem a certeza que pretende remover o acesso de %1$s aos %2$s sites selecionados?",
+ "DeletePermConfirmSingle": "Tem a certeza que pretende remover o acesso de %1$s a %2$s?",
+ "DeleteUserConfirmMultiple": "Tem a certeza que deseja eliminar os %1$s utilizadores selecionados?",
+ "DeleteUserConfirmSingle": "Tem a certeza que deseja eliminar o %1$s?",
+ "DeleteUserPermConfirmMultiple": "Tem a certeza que pretende alterar o papel dos %1$s utilizadores selecionados para %2$s para %3$s?",
+ "DeleteUserPermConfirmSingle": "Tem a certeza que pretende alterar o papel de %1$s para %2$s para %3$s?",
+ "DeleteUsers": "Eliminar utilizadores",
+ "EditUser": "Editar utilizador",
"Email": "E-mail",
+ "EmailChangeNotificationSubject": "O endereço de e-mail da sua conta do Matomo foi alterado",
+ "EmailChangedEmail1": "O endereço de e-mail associado à sua conta foi alterado para %1$s",
+ "EmailChangedEmail2": "Esta alteração foi iniciada a partir do seguinte dispositivo: %1$s (endereço de IP = %2$s).",
"EmailYourAdministrator": "%1$sEnvie um e-mail ao seu administrador sobre este problema%2$s.",
"EnterUsernameOrEmail": "Introduza um nome de utilizador ou endereço de e-mail",
"ExceptionAccessValues": "O parâmetro de acesso deve conter um dos seguinte valores: [ %1$s ]; foi fornecido '%2$s'.",
- "ExceptionNoRoleSet": "Nenhum papel está definido, mas um destes necessita de ser definido: %s",
- "ExceptionMultipleRoleSet": "Apenas um papel pode ser definido, mas múltiplos foram definidos. Utilize apenas um de: %s",
- "ExceptionAnonymousNoCapabilities": "Não pode atribuir qualquer privilégio ao utilizador 'anónimo'.",
"ExceptionAnonymousAccessNotPossible": "Apenas pode definir acesso %1$s ou acesso %2$s ao utilizador 'anónimo'.",
+ "ExceptionAnonymousNoCapabilities": "Não pode atribuir qualquer privilégio ao utilizador 'anónimo'.",
"ExceptionDeleteDoesNotExist": "O utilizador '%s' não existe pelo que não pode ser eliminado.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "A eliminação do utilizador '%s' não é possível.",
"ExceptionEditAnonymous": "O utilizador anónimo não pode ser editado ou eliminado. Este é utilizado pelo Matomo para definir um utilizador que ainda não tem sessão iniciada. Por exemplo, pode tornar as suas estatísticas públicas concedendo acesso de 'visualização' ao utilizador 'anónimo'.",
@@ -49,135 +72,111 @@
"ExceptionInvalidPassword": "O tamanho da palavra-passe tem de ser maior do que %1$s carateres.",
"ExceptionInvalidPasswordTooLong": "A palavra-passe não deve ultrapassar os %1$s caracteres.",
"ExceptionLoginExists": "O nome de utilizador '%s' já existe.",
+ "ExceptionMultipleRoleSet": "Apenas um papel pode ser definido, mas múltiplos foram definidos. Utilize apenas um de: %s",
+ "ExceptionNoRoleSet": "Nenhum papel está definido, mas um destes necessita de ser definido: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Por favor, introduza um nome de utilizador ou endereço de e-mail.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth espera uma palavra-passe codificada em MD5 (cadeia de 32 carateres). Por favor invoque a função md5() sob a palavra-passe antes de invocar este método.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "A remoção do acesso de super-utilizador do utilizador '%s' não é possível.",
"ExceptionSuperUserAccess": "Este utilizador tem acesso de super-utilizador e já tem permissões para aceder e modificar todos os sites no Matomo. Pode remover o acesso de super-utilizador deste utilizador e tentar novamente.",
- "ExceptionUserHasSuperUserAccess": "O utilizador '%s' tem acesso de super-utilizador e já tem permissões para aceder e modificar todos os sites no Matomo. Pode remover o acesso de super-utilizador deste utilizador e tentar novamente.",
"ExceptionUserDoesNotExist": "O utilizador '%s' não existe.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Deve existir pelo menos um utilizador com acesso de super-utilizador. Por favor, atribua um acesso de super-utilizador a outro utilizador primeiro.",
+ "ExceptionUserHasSuperUserAccess": "O utilizador '%s' tem acesso de super-utilizador e já tem permissões para aceder e modificar todos os sites no Matomo. Pode remover o acesso de super-utilizador deste utilizador e tentar novamente.",
"ExceptionUserHasViewAccessAlready": "Este utilizador já tem acesso a este site.",
- "ExceptionNoValueForUsernameOrEmail": "Por favor, introduza um nome de utilizador ou endereço de e-mail.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Deve existir pelo menos um utilizador com acesso de super-utilizador. Por favor, atribua um acesso de super-utilizador a outro utilizador primeiro.",
"ExcludeVisitsViaCookie": "Exclua as suas visitas com um cookie",
+ "ExpireDate": "Data de expiração",
+ "ExpiredTokensDeleteAutomatically": "Os códigos com uma data de expiração serão eliminações automaticamente.",
+ "FilterByAccess": "Filtrar por acesso",
+ "FilterByWebsite": "Filtrar por site",
+ "FirstSiteInlineHelp": "Ao criar um novo utilizador, é necessário dar um papel de visualização a um site. Se não for dado nenhum acesso, o utilizador irá ver um erro ao iniciar sessão. Pode atribuir mais permissões depois do utilizador estar criado no separador 'Permissões' que será apresentado à esquerda.",
"ForAnonymousUsersReportDateToLoadByDefault": "Para utilizadores anónimos, a data de relatório a carregar por predefinição",
+ "GiveAccessToAll": "Dar acesso a todos os sites a este utilizador",
"GiveUserAccess": "Dê acesso de '%1$s' %2$s a %3$s.",
"GiveViewAccess": "Dê acesso de visualização a %1$s",
- "GiveViewAccessTitle": "Dê a um utilizador existente acesso para visualizar relatórios para %s",
"GiveViewAccessInstructions": "Para dar acesso de visualização a um utilizador existente para %s introduza o nome de utilizador ou endereço de e-mail de um utilizador existente",
+ "GiveViewAccessTitle": "Dê a um utilizador existente acesso para visualizar relatórios para %s",
+ "GoBackSecurityPage": "Voltar para a página de segurança.",
+ "HasSuperUserAccess": "Tem acesso de super-utilizador",
+ "IfThisWasYouIgnoreIfNot": "Caso tenha sido iniciada por si, ignore este e-mail. Caso contrário, por favor, inicie sessão, corrija o seu endereço de e-mail, altere a sua palavra-passe e entre em contacto com o seu administrador do Matomo.",
+ "IfThisWasYouPasswordChange": "Se foi você, pode ignorar esta mensagem. se não foi você, por favor, contacte o seus administrador de Matomo imediatamente, pois a sua conta pode ter sido comprometida!",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se deseja alterar a sua palavra-passe, introduza uma nova. Caso contrário, deixe este campo em branco.",
- "YourCurrentPassword": "A sua palavra-passe atual",
- "CurrentPasswordNotCorrect": "A palavra-passe atual que introduziu não está correta.",
- "ConfirmWithPassword": "Por favor, introduza a sua palavra-passe para confirmar esta alteração.",
+ "IncludedInUsersRole": "Incluído no papel do utilizador",
"InjectedHostCannotChangePwd": "Atualmente está a visitar com um servidor desconhecido (%1$s). Não pode alterar a sua palavra-passe até este problema estar resolvido.",
"LastSeen": "Última vez visto",
+ "LastUsed": "Último utilizado",
"MainDescription": "Decida que utilizadores têm acesso os seus sites. Pode também dar acesso a todos os sites de uma vez, escolhendo \"Aplicar a todos os sites\" no seletor de site.",
"ManageAccess": "Gerir acesso",
+ "ManageUsers": "Gerir utilizadores",
+ "ManageUsersDesc": "Criar novos utilizadores ou atualizar utilizadores existentes. Depois, pode definir as respetivas permissões aqui também.",
"MenuAnonymousUserSettings": "Definições de utilizadores anónimos",
- "MenuUsers": "Utilizadores",
- "MenuUserSettings": "Definições de utilizadores",
"MenuPersonal": "Pessoal",
- "PersonalSettings": "Definições pessoais",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: não pode alterar as definições nesta secção, porque não tem qualquer site que possa ser acedido pelo utilizador anónimo.",
+ "MenuUserSettings": "Definições de utilizadores",
+ "MenuUsers": "Utilizadores",
+ "NewsletterSignupFailureMessage": "Parece que algo correu mal. Não conseguimos concluir o seu processo de subscrição à newsletter.",
+ "NewsletterSignupMessage": "Subscreva à nossa newsletter para receber regularmente informações sobre o Matomo. Pode cancelar a sua subscrição a qualquer momento. Este serviço utiliza MadMimi. Para mais informações, consulte a nossa %1$spágina da Política de Privacidade %2$s.",
+ "NewsletterSignupSuccessMessage": "Fantástico, está subscrito. Entraremos em contacto em breve.",
+ "NewsletterSignupTitle": "Subscrição da Newsletter",
+ "NoAccessWarning": "Não foi dado acesso a um site a este utilizador. Quando este se autenticar, irá ver uma mensagem de erro. Para impedir que isto aconteça, dê acesso um site abaixo.",
+ "NoTokenCreatedYetCreateNow": "Ainda sem códigos criados, %1$scrie agora um novo código%2$s.",
"NoUsersExist": "Ainda não existem utilizadores.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Nota: não pode alterar as definições nesta secção, porque não tem qualquer site que possa ser acedido pelo utilizador anónimo.",
+ "OrManageIndividually": "Ou gerir o acesso deste utilizador a cada site individualmente",
+ "PasswordChangeNotificationSubject": "A palavra-passe da sua conta do Matomo foi alterada",
+ "PasswordChangedEmail": "A sua palavra-passe foi alterada. Esta alteração foi iniciada a partir do seguinte dispositivo: %1$s (endereço de IP = %2$s).",
+ "Permissions": "Permissões",
+ "PersonalSettings": "Definições pessoais",
"PluginDescription": "A gestão de utilizadores permite-lhe adicionar novos utilizadores, editar utilizadores existentes e dar-lhes acesso para ver ou administrar sites.",
"PrivAdmin": "Administração",
"PrivAdminDescription": "Utilizadores com este papel podem gerir um site e dar acesso a outros utilizadores ao site. Podem também fazer tudo o que o papel %s pode fazer.",
- "PrivWrite": "Escrita",
- "PrivWriteDescription": "Utilizadores com este papel podem ver todos os conteúdos, bem como criar, gerir e eliminar entidades tais como objetivos, funis, pontos de foco, gravações de sessões e formulários para este site.",
"PrivNone": "Sem acesso",
"PrivView": "Visualização",
"PrivViewDescription": "Um utilizador com este papel pode ver todos os relatórios.",
+ "PrivWrite": "Escrita",
+ "PrivWriteDescription": "Utilizadores com este papel podem ver todos os conteúdos, bem como criar, gerir e eliminar entidades tais como objetivos, funis, pontos de foco, gravações de sessões e formulários para este site.",
+ "RemoveAllAccessToThisSite": "Remover todo o acesso a este site",
+ "RemovePermissions": "Remover permissões",
+ "RemoveSuperuserAccessConfirm": "Remover o acesso de super-utilizador deixará o utilizador sem permissões (terá, posteriormente, de as adicionar). Introduza a sua palavra-passe para continuar.",
"RemoveUserAccess": "Remover acesso para '%1$s' para %2$s.",
"ReportDateToLoadByDefault": "A data predefinida para carregar o relatório",
"ReportToLoadByDefault": "Relatório predefinido para carregar",
+ "ResetTwoFactorAuthentication": "Repor a autenticação de dois fatores",
+ "ResetTwoFactorAuthenticationInfo": "Se o utilizador não conseguir iniciar sessão devido à perda de códigos de recuperação ou perda do dispositivo de autenticação, pode repor a a autenticação de dois fatores do utilizador, para que este possa iniciar sessão novamente.",
+ "Role": "Papel",
+ "RoleFor": "Papel para",
+ "RolesHelp": "Os papéis determinam o que um utilizador pode fazer no Matomo no que diz respeito a um site específico. Saber mais sobre os papéis de %1$sVisualização%2$s e de %3$sAdministração%4$s.",
+ "SaveBasicInfo": "Guardar informações básicas",
+ "SetPermission": "Definir permissões",
+ "SuperUserAccess": "Acesso de super-utilizador",
"SuperUserAccessManagement": "Gerir acesso de super-utilizador",
"SuperUserAccessManagementGrantMore": "Aqui, pode atribuir acesso de super-utilizador a outros utilizadores do Matomo. Por favor, utilize esta funcionalidade com cuidado.",
"SuperUserAccessManagementMainDescription": "Os super-utilizadores têm as permissões mais elevadas. Estes podem executar todas as tarefas administrativas, tais como adicionar novos sites a monitorizar, adicionar utilizador, alterar permissões de utilizadores, ativar ou desativar extensões e, até, instalar novas extensões da loja.",
+ "SuperUserIntro1": "Os super-utilizadores têm as permissões máximas. Podem executar tarefas administrativas tais como adicionar novos sites para serem geridos, adicionar utilizadores, alterar permissões de utilizadores, ativar e desativar extensões e até instalar novas extensões da loja. Por atribuir acesso de super-utilizador a outros utilizadores da Divezone aqui.",
+ "SuperUserIntro2": "Por favor, utilize esta funcionalidade com cuidado.",
+ "SuperUsersPermissionsNotice": "Super-utilizadores têm acesso de administração a todos os sites, pelo que não existe necessidade de gerir as respetivas permissões para cada site.",
+ "TheDisplayedUsersAreSelected": "Os %1$s utilizadores apresentados estão selecionados.",
+ "TheDisplayedWebsitesAreSelected": "Os %1$s sites apresentados estão selecionados.",
"TheLoginScreen": "O ecrã de autenticação",
"ThereAreCurrentlyNRegisteredUsers": "Neste momento, existem %s utilizadores registados.",
"TokenAuth": "Código de autenticação na API",
"TokenRegenerateConfirmSelf": "Alterar o código de autenticação na API irá invalidar o seu próprio código. Se o código atual estiver em uso, terá de atualizar todos os clientes da API com o novo código gerado. Tem a certeza que deseja alterar o seu código de autenticação?",
"TokenRegenerateTitle": "Gerar novamente",
- "TokensSuccessfullyDeleted": "Todos os códigos foram eliminados com sucesso",
"TokenSuccessfullyDeleted": "O código foi eliminado com sucesso",
- "DeleteAllTokens": "Eliminar todos os códigos",
- "ExpiredTokensDeleteAutomatically": "Os códigos com uma data de expiração serão eliminações automaticamente.",
- "TypeYourPasswordAgain": "Introduza novamente a sua nova palavra-passe.",
+ "TokenSuccessfullyGenerated": "Código gerado com sucesso",
+ "TokensSuccessfullyDeleted": "Todos os códigos foram eliminados com sucesso",
+ "TwoFactorAuthentication": "Autenticação de dois fatores",
"TypeYourCurrentPassword": "Por favor, digite a sua palavra.-passe atual para confirmar a alteração da mesma.",
+ "TypeYourPasswordAgain": "Introduza novamente a sua nova palavra-passe.",
"User": "Utilizador",
- "UserHasPermission": "%1$s atualmente tem acesso de %2$s para %3$s.",
"UserHasNoPermission": "%1$s atualmente tem %2$s para %3$s",
+ "UserHasPermission": "%1$s atualmente tem acesso de %2$s para %3$s.",
+ "UserSearch": "Pesquisa de utilizadores",
+ "Username": "Nome de utilizador",
"UsersManagement": "Gestão de utilizadores",
"UsersManagementMainDescription": "Criar novos utilizadores ou atualizar utilizadores existentes. Depois, pode definir as respetivas permissões acima.",
+ "UsesTwoFactorAuthentication": "Utiliza a autenticação de dois fatores",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quando os utilizadores não têm sessão iniciada e visitam o Matomo, devem inicialmente ver",
+ "YourCurrentPassword": "A sua palavra-passe atual",
"YourUsernameCannotBeChanged": "O seu nome de utilizador não pode ser alterado.",
"YourVisitsAreIgnoredOnDomain": "%1$sAs suas visitas são ignoradas pelo Matomo em %2$s %3$s (foi encontrado no seu navegador o cookie do Matomo para ignorar).",
- "YourVisitsAreNotIgnored": "%1$sAs suas visitas não são ignoradas pelo Matomo%2$s (não foi encontrado no seu navegador o cookie do Matomo para ignorar).",
- "AddUserNoInitialAccessError": "Deve ser dado acesso a um site aos novos utilizadores. Por favor, defina o parâmetro 'initialIdSite'.",
- "AtLeastView": "Pelo menos visualização",
- "ManageUsers": "Gerir utilizadores",
- "ManageUsersDesc": "Criar novos utilizadores ou atualizar utilizadores existentes. Depois, pode definir as respetivas permissões aqui também.",
- "NoAccessWarning": "Não foi dado acesso a um site a este utilizador. Quando este se autenticar, irá ver uma mensagem de erro. Para impedir que isto aconteça, dê acesso um site abaixo.",
- "BulkActions": "Ações em volume",
- "SetPermission": "Definir permissões",
- "RemovePermissions": "Remover permissões",
- "RolesHelp": "Os papéis determinam o que um utilizador pode fazer no Matomo no que diz respeito a um site específico. Saber mais sobre os papéis de %1$sVisualização%2$s e de %3$sAdministração%4$s.",
- "Role": "Papel",
- "TheDisplayedWebsitesAreSelected": "Os %1$s sites apresentados estão selecionados.",
- "ClickToSelectAll": "Clique para selecionar todos os %1$s.",
- "AllWebsitesAreSelected": "Estão selecionados todos os %1$s sites.",
- "ClickToSelectDisplayedWebsites": "Clique para selecionar os %1$s sites apresentados.",
- "DeletePermConfirmSingle": "Tem a certeza que pretende remover o acesso de %1$s a %2$s?",
- "DeletePermConfirmMultiple": "Tem a certeza que pretende remover o acesso de %1$s aos %2$s sites selecionados?",
- "ChangePermToSiteConfirmSingle": "Tem a certeza que pretende alterar o papel de %1$s para %2$s para %3$s?",
- "ChangePermToSiteConfirmMultiple": "Tem a certeza que pretende alterar o papel de %1$s dos %2$s sites selecionados para %3$s?",
- "BasicInformation": "Informação básica",
- "Permissions": "Permissões",
- "SuperUserAccess": "Acesso de super-utilizador",
- "FirstSiteInlineHelp": "Ao criar um novo utilizador, é necessário dar um papel de visualização a um site. Se não for dado nenhum acesso, o utilizador irá ver um erro ao iniciar sessão. Pode atribuir mais permissões depois do utilizador estar criado no separador 'Permissões' que será apresentado à esquerda.",
- "SuperUsersPermissionsNotice": "Super-utilizadores têm acesso de administração a todos os sites, pelo que não existe necessidade de gerir as respetivas permissões para cada site.",
- "SuperUserIntro1": "Os super-utilizadores têm as permissões máximas. Podem executar tarefas administrativas tais como adicionar novos sites para serem geridos, adicionar utilizadores, alterar permissões de utilizadores, ativar e desativar extensões e até instalar novas extensões da loja. Por atribuir acesso de super-utilizador a outros utilizadores da Divezone aqui.",
- "SuperUserIntro2": "Por favor, utilize esta funcionalidade com cuidado.",
- "HasSuperUserAccess": "Tem acesso de super-utilizador",
- "AreYouSure": "Tem a certeza?",
- "RemoveSuperuserAccessConfirm": "Remover o acesso de super-utilizador deixará o utilizador sem permissões (terá, posteriormente, de as adicionar). Introduza a sua palavra-passe para continuar.",
- "AddSuperuserAccessConfirm": "Atribuir a um utilizador o acesso de super-utilizador confere-lhe um controlo absoluto do Matomo, algo que deve ser feito com moderação. Introduza a sua palavra-passe para continuar.",
- "DeleteUsers": "Eliminar utilizadores",
- "UserSearch": "Pesquisa de utilizadores",
- "FilterByAccess": "Filtrar por acesso",
- "FilterByWebsite": "Filtrar por site",
- "ShowAll": "Mostrar tudo",
- "Username": "Nome de utilizador",
- "RoleFor": "Papel para",
- "TheDisplayedUsersAreSelected": "Os %1$s utilizadores apresentados estão selecionados.",
- "AllUsersAreSelected": "Estão selecionados todos os %1$s utilizadores.",
- "ClickToSelectDisplayedUsers": "Clique para selecionar os %1$s utilizadores apresentados.",
- "RemoveAllAccessToThisSite": "Remover todo o acesso a este site",
- "DeleteUserConfirmSingle": "Tem a certeza que deseja eliminar o %1$s?",
- "DeleteUserConfirmMultiple": "Tem a certeza que deseja eliminar os %1$s utilizadores selecionados?",
- "DeleteUserPermConfirmSingle": "Tem a certeza que pretende alterar o papel de %1$s para %2$s para %3$s?",
- "DeleteUserPermConfirmMultiple": "Tem a certeza que pretende alterar o papel dos %1$s utilizadores selecionados para %2$s para %3$s?",
- "AreYouSureChangeDetails": "Tem a certeza que pretende alterar a informação do utilizador para %s?",
- "AnonymousUserRoleChangeWarning": "Atribuir ao utilizador %1$s o papel de %2$s irá tornar público e disponibilizar para todos os dados deste site, mesmo que não tenham uma conta no Matomo.",
- "GiveAccessToAll": "Dar acesso a todos os sites a este utilizador",
- "OrManageIndividually": "Ou gerir o acesso deste utilizador a cada site individualmente",
- "ChangePermToAllSitesConfirm": "Tem a certeza de que pretende dar acesso de %1$s utilizador %2$s a cada um dos sites aos quais tenha acesso de administração?",
- "ChangePermToAllSitesConfirm2": "Nota: isto apenas afeta os sites que existam neste momento. Os novos sites que possa vir a criar não serão acessíveis de forma automática a este utilizador.",
- "CapabilitiesHelp": "Os privilégios são permissões individuais que os podem ser atribuídos a utilizadores. Os papéis podem, por predefinição, atribuir determinados privilégios. Por exemplo, o papel de Administração pode permitir que os utilizadores possam editar tags no Gestor de tags. Para utilizadores com menos permissões pode, no entanto, atribuir privilégios de forma explícita.",
- "Capabilities": "Privilégios",
- "AreYouSureAddCapability": "Tem a certeza que pretende atribuir o privilégio %2$s a %1$s para %3$s?",
- "AreYouSureRemoveCapability": "Tem a certeza que pretende remover o privilégio %2$s a %1$s para %3$s?",
- "IncludedInUsersRole": "Incluído no papel do utilizador",
- "Capability": "Privilégio",
- "EmailChangeNotificationSubject": "O endereço de e-mail da sua conta do Matomo foi alterado",
- "EmailChangedEmail1": "O endereço de e-mail associado à sua conta foi alterado para %1$s",
- "EmailChangedEmail2": "Esta alteração foi iniciada a partir do seguinte dispositivo: %1$s (endereço de IP = %2$s).",
- "IfThisWasYouIgnoreIfNot": "Caso tenha sido iniciada por si, ignore este e-mail. Caso contrário, por favor, inicie sessão, corrija o seu endereço de e-mail, altere a sua palavra-passe e entre em contacto com o seu administrador do Matomo.",
- "IfThisWasYouPasswordChange": "Se foi você, pode ignorar esta mensagem. se não foi você, por favor, contacte o seus administrador de Matomo imediatamente, pois a sua conta pode ter sido comprometida!",
- "PasswordChangeNotificationSubject": "A palavra-passe da sua conta do Matomo foi alterada",
- "PasswordChangedEmail": "A sua palavra-passe foi alterada. Esta alteração foi iniciada a partir do seguinte dispositivo: %1$s (endereço de IP = %2$s).",
- "NewsletterSignupTitle": "Subscrição da Newsletter",
- "NewsletterSignupMessage": "Subscreva à nossa newsletter para receber regularmente informações sobre o Matomo. Pode cancelar a sua subscrição a qualquer momento. Este serviço utiliza MadMimi. Para mais informações, consulte a nossa %1$spágina da Política de Privacidade %2$s.",
- "NewsletterSignupFailureMessage": "Parece que algo correu mal. Não conseguimos concluir o seu processo de subscrição à newsletter.",
- "NewsletterSignupSuccessMessage": "Fantástico, está subscrito. Entraremos em contacto em breve."
+ "YourVisitsAreNotIgnored": "%1$sAs suas visitas não são ignoradas pelo Matomo%2$s (não foi encontrado no seu navegador o cookie do Matomo para ignorar)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ro.json b/plugins/UsersManager/lang/ro.json
index f3a6510e14..76ccd18592 100644
--- a/plugins/UsersManager/lang/ro.json
+++ b/plugins/UsersManager/lang/ro.json
@@ -28,10 +28,10 @@
"LastSeen": "Ultima data vazut",
"ManageAccess": "Manageriaza accesul",
"MenuAnonymousUserSettings": "Setările utilizatorului anonim",
- "MenuUsers": "Utilizatori",
"MenuUserSettings": "Setări utilizator",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Notă: Nu puteți schimba setările din această secțiune, pentru că nu aveți nici un site web care poate fi accesat de către un utilizator anonim.",
+ "MenuUsers": "Utilizatori",
"NoUsersExist": "Nu există încă utilizatori.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Notă: Nu puteți schimba setările din această secțiune, pentru că nu aveți nici un site web care poate fi accesat de către un utilizator anonim.",
"PrivAdmin": "Admin",
"PrivNone": "Fără acces",
"PrivView": "Vezi",
@@ -44,12 +44,11 @@
"ThereAreCurrentlyNRegisteredUsers": "La moment există %s utilizatori înregistraţi.",
"TypeYourPasswordAgain": "Introduce parola nouă încă o dată.",
"User": "Utilizator",
+ "Username": "Nume utilizator",
"UsersManagement": "Management useri",
"UsersManagementMainDescription": "Creaza user nou sau actualizeaza userul existent. Poti seta permisiunile lor.",
"YourUsernameCannotBeChanged": "Numele tău de utilizator nu poate fi schimbat.",
"YourVisitsAreIgnoredOnDomain": "%1$svizitele tale sunt ignorate de Matomo pe %2$s%3$s (Matomo ignora cookie care a fost găsit în browser-ul dvs.).",
- "YourVisitsAreNotIgnored": "%1$s Vizitele tale nu sunt ignorate de Matomo%2$s (Matomo ignora cookie care nu au fost găsite în browser-ul dvs.).",
- "ShowAll": "Arată tot",
- "Username": "Nume utilizator"
+ "YourVisitsAreNotIgnored": "%1$s Vizitele tale nu sunt ignorate de Matomo%2$s (Matomo ignora cookie care nu au fost găsite în browser-ul dvs.)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ru.json b/plugins/UsersManager/lang/ru.json
index 171ff39ee2..b69ed81398 100644
--- a/plugins/UsersManager/lang/ru.json
+++ b/plugins/UsersManager/lang/ru.json
@@ -1,27 +1,27 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Использует двухфакторную аутентификацию",
- "TwoFactorAuthentication": "Двухфакторная аутентификация",
- "ResetTwoFactorAuthentication": "Сбросить двухфакторную аутентификацию",
- "ResetTwoFactorAuthenticationInfo": "Если пользователь больше не может войти в систему из-за потерянных кодов восстановления или из-за потерянного устройства аутентификации, вы можете сбросить двухфакторную аутентификацию для пользователя, чтобы он мог снова войти в систему.",
- "AddUser": "Добавить нового пользователя",
"AddExistingUser": "Добавить существующего пользователя",
"AddNewUser": "Добавить нового пользователя",
- "EditUser": "Редактировать пользователя",
- "CreateUser": "Создать пользователя",
- "SaveBasicInfo": "Сохранить основную информацию",
+ "AddUser": "Добавить нового пользователя",
"AllWebsites": "Все сайты",
"AnonymousUser": "Анонимный пользователь",
"AnonymousUserHasViewAccess": "Примечание: пользователь %1$s имеет %2$s доступ к этому сайту.",
"AnonymousUserHasViewAccess2": "Отчеты и данные о посетителях общедоступны.",
"ApplyToAllWebsites": "Применить ко всем сайтам",
+ "AreYouSure": "Вы уверены?",
+ "BulkActions": "Массовые действия",
"ClickHereToDeleteTheCookie": "Нажмите здесь, чтобы удалить cookie игнорирования, и разрешить системе Веб-аналитики отслеживать ваши посещения",
"ClickHereToSetTheCookieOnDomain": "Нажмите здесь, чтобы установить cookie игнорирования Веб-аналитики, после установки которого система Вас будет игнорировать при посещении %s",
"ConfirmGrantSuperUserAccess": "Вы действительно хотите пользователя «%s» повысить до суперпользователя? Внимание: пользователь будет иметь доступ ко всем веб-сайтам и сможет выполнять административные задачи.",
"ConfirmProhibitMySuperUserAccess": "%s, Вы действительно хотите удалить у себя права суперпользователя? Вы потеряете все разрешения и доступ ко всем сайтам и будете разлогинены из Matomo.",
+ "CreateUser": "Создать пользователя",
"DeleteConfirm": "Вы уверены, что хотите удалить пользователя %s?",
+ "DeleteUsers": "Удалить пользователей",
+ "EditUser": "Редактировать пользователя",
"Email": "Email",
+ "EmailChangeNotificationSubject": "Адрес электронной почты вашей учетной записи Matomo был только что изменен",
+ "EmailChangedEmail1": "Адрес электронной почты, связанный с вашей учетной записью, был изменен на %1$s",
"EmailYourAdministrator": "%1$sНапишите вашему администратору об этой проблеме%2$s.",
"EnterUsernameOrEmail": "Введите имя пользователя или адрес электронной почты",
"ExceptionAnonymousNoCapabilities": "Вы не можете предоставлять какие-либо возможности «анонимному» пользователю.",
@@ -33,54 +33,53 @@
"ExceptionInvalidPassword": "Длина пароля должна быть больше %1$s символов.",
"ExceptionInvalidPasswordTooLong": "Длина пароля должна быть меньше %1$s символов.",
"ExceptionLoginExists": "Имя пользователя '%s' уже существует.",
+ "ExceptionNoValueForUsernameOrEmail": "Пожалуйста, введите имя пользователя или E-mail адрес.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth ожидает MD5-хэшированный пароль (строка в 32 символа). Пожалуйста, вызовите функцию md5() к паролю перед вызовом этого метода.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Удаление прав суперпользователя у пользователя «%s» не представляется возможным.",
"ExceptionSuperUserAccess": "Этот пользователь уже имеет статус суперпользователя и разрешение на изменение всех веб-сайты в Matomo. Вы можете удалить права суперпользователя у этого пользователя, и попробовать снова.",
"ExceptionUserDoesNotExist": "Пользователь '%s' не существует.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Должен быть по крайней мере один суперпользователь. Пожалуйста, сделайте сначала другого суперпользователя.",
"ExceptionUserHasViewAccessAlready": "Этот пользователь уже имеет доступ к этому сайту.",
- "ExceptionNoValueForUsernameOrEmail": "Пожалуйста, введите имя пользователя или E-mail адрес.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Должен быть по крайней мере один суперпользователь. Пожалуйста, сделайте сначала другого суперпользователя.",
"ExcludeVisitsViaCookie": "Cookie исключения из статистики",
"ForAnonymousUsersReportDateToLoadByDefault": "Отчет для анонимных пользователей отображается за",
"GiveViewAccess": "Предоставить доступ для просмотра %1$s",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Если вы хотите сменить пароль, введите новый пароль в это поле. Иначе - оставьте поле пустым.",
- "YourCurrentPassword": "Ваш текущий пароль",
"InjectedHostCannotChangePwd": "В данный момент вы находитесь в Matomo с неизвестного хоста (%1$s). Вы не можете изменить пароль, пока эта проблема не будет решена.",
"LastSeen": "Последнее посещение",
"ManageAccess": "Управление правами доступа",
"MenuAnonymousUserSettings": "Настройки анонимности",
- "MenuUsers": "Пользователи",
- "MenuUserSettings": "Мои настройки",
"MenuPersonal": "Персональное",
- "PersonalSettings": "Персональные настройки",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Подсказка: Вы не можете сменить эти настройки, потому что у вас нет ни одного веб-сайта, к которому бы имел доступ анонимный пользователь.",
+ "MenuUserSettings": "Мои настройки",
+ "MenuUsers": "Пользователи",
+ "NewsletterSignupFailureMessage": "Упс, что-то пошло не так. Мы не смогли подписать Вас на рассылку.",
"NoUsersExist": "Пока нет пользователей.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Подсказка: Вы не можете сменить эти настройки, потому что у вас нет ни одного веб-сайта, к которому бы имел доступ анонимный пользователь.",
+ "PasswordChangeNotificationSubject": "Пароль вашей учетной записи Matomo был только что изменен",
+ "PersonalSettings": "Персональные настройки",
"PrivAdmin": "Админ",
"PrivNone": "Нет доступа",
"PrivView": "Просмотр",
"ReportDateToLoadByDefault": "Отчет по умолчанию за",
"ReportToLoadByDefault": "Отчёт по умолчанию",
+ "ResetTwoFactorAuthentication": "Сбросить двухфакторную аутентификацию",
+ "ResetTwoFactorAuthenticationInfo": "Если пользователь больше не может войти в систему из-за потерянных кодов восстановления или из-за потерянного устройства аутентификации, вы можете сбросить двухфакторную аутентификацию для пользователя, чтобы он мог снова войти в систему.",
+ "Role": "Роль",
+ "SaveBasicInfo": "Сохранить основную информацию",
"SuperUserAccessManagement": "Управление суперпользователями",
"SuperUserAccessManagementGrantMore": "Вы можете предоставить права суперпользователя другим пользователям Matomo здесь. Пожалуйста, используйте эту функцию с осторожностью.",
"SuperUserAccessManagementMainDescription": "Суперпользователи имеют самые высокие разрешения. Они могут выполнять все административные задачи, такие как добавление новых сайтов для мониторинга, добавление пользователей, изменение прав доступа пользователей, активации и деактивации плагинов и даже установки новых плагинов из Marketplace.",
"TheLoginScreen": "Страница входа",
"ThereAreCurrentlyNRegisteredUsers": "Сейчас насчитывается %s зарегистрированных пользователей.",
+ "TwoFactorAuthentication": "Двухфакторная аутентификация",
"TypeYourPasswordAgain": "Введите ваш новый пароль снова.",
"User": "Пользователь",
+ "Username": "Имя пользователя",
"UsersManagement": "Управление пользователями",
"UsersManagementMainDescription": "Создание новых пользователей или редактирование существующих. Также Вы можете задать права доступа для пользователя.",
+ "UsesTwoFactorAuthentication": "Использует двухфакторную аутентификацию",
+ "YourCurrentPassword": "Ваш текущий пароль",
"YourUsernameCannotBeChanged": "Имя вашего пользователя не может быть изменено.",
"YourVisitsAreIgnoredOnDomain": "%1$sВаші відвідування ігноруються системою Matomo в %2$s %3$s (Matomo знашов cookie у вашому браузері з вказівкою ігнорувати).",
- "YourVisitsAreNotIgnored": "%1$sВаші відвідування відслідковуються системою Matomo %2$s (Matomo не знашов cookie у вашому браузері).",
- "BulkActions": "Массовые действия",
- "Role": "Роль",
- "AreYouSure": "Вы уверены?",
- "DeleteUsers": "Удалить пользователей",
- "ShowAll": "Показать все",
- "Username": "Имя пользователя",
- "EmailChangeNotificationSubject": "Адрес электронной почты вашей учетной записи Matomo был только что изменен",
- "EmailChangedEmail1": "Адрес электронной почты, связанный с вашей учетной записью, был изменен на %1$s",
- "PasswordChangeNotificationSubject": "Пароль вашей учетной записи Matomo был только что изменен",
- "NewsletterSignupFailureMessage": "Упс, что-то пошло не так. Мы не смогли подписать Вас на рассылку."
+ "YourVisitsAreNotIgnored": "%1$sВаші відвідування відслідковуються системою Matomo %2$s (Matomo не знашов cookie у вашому браузері)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/sk.json b/plugins/UsersManager/lang/sk.json
index 30143377ca..53bb5ef4d7 100644
--- a/plugins/UsersManager/lang/sk.json
+++ b/plugins/UsersManager/lang/sk.json
@@ -13,19 +13,18 @@
"ExceptionUserDoesNotExist": "Používateľ '%s' neexistuje.",
"ManageAccess": "Správa prístupov",
"MenuAnonymousUserSettings": "Nastavenie pre anonymného užívateľa",
- "MenuUsers": "Používatelia",
- "MenuUserSettings": "Užívateľské nastavenia",
"MenuPersonal": "Osobné",
+ "MenuUserSettings": "Užívateľské nastavenia",
+ "MenuUsers": "Používatelia",
"PersonalSettings": "Osobné nastavenia",
"PrivAdmin": "Admin",
"PrivNone": "Bez prístupu",
"PrivView": "Zobrazenie",
"TypeYourPasswordAgain": "Zadajte nové heslo znovu.",
"User": "Používatelia",
+ "Username": "Používateľské meno",
"UsersManagement": "Správa používateľov",
"UsersManagementMainDescription": "Vytvorenie nových alebo aktualizácia existujúcich používateľov V sekcií vyššie im môžete nastaviť rozsah prístupov.",
- "YourUsernameCannotBeChanged": "Vaše užívateľské meno sa nedá zmeniť.",
- "ShowAll": "Zobraziť všetko",
- "Username": "Používateľské meno"
+ "YourUsernameCannotBeChanged": "Vaše užívateľské meno sa nedá zmeniť."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/sl.json b/plugins/UsersManager/lang/sl.json
index 3d30840f10..e0f181eeff 100644
--- a/plugins/UsersManager/lang/sl.json
+++ b/plugins/UsersManager/lang/sl.json
@@ -11,8 +11,8 @@
"ExceptionUserDoesNotExist": "Uporabnik \"%s\" ne obstaja.",
"ManageAccess": "Upravljaj dostop",
"MenuAnonymousUserSettings": "Nastavitve anonimnih uporabnikov",
- "MenuUsers": "Uporabniki",
"MenuUserSettings": "Nastavitve uporabnikov",
+ "MenuUsers": "Uporabniki",
"PrivAdmin": "Admin",
"PrivNone": "Ni dostopa",
"PrivView": "Ogled",
@@ -22,9 +22,8 @@
"ThereAreCurrentlyNRegisteredUsers": "Trenutno je %s registriranih uporabnikov.",
"TypeYourPasswordAgain": "Ponovno vpišite vaše novo geslo.",
"User": "Uporabnik",
+ "Username": "Uporabniško Ime",
"UsersManagement": "Upravljanje Uporabnikov",
- "YourUsernameCannotBeChanged": "Vaše uporabniško ime ne more biti spremenjeno.",
- "ShowAll": "Prikaži vse",
- "Username": "Uporabniško Ime"
+ "YourUsernameCannotBeChanged": "Vaše uporabniško ime ne more biti spremenjeno."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/sq.json b/plugins/UsersManager/lang/sq.json
index d9817038a9..60312782ca 100644
--- a/plugins/UsersManager/lang/sq.json
+++ b/plugins/UsersManager/lang/sq.json
@@ -1,188 +1,191 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Përdor mirëfilltësim dyfaktorësh",
- "TwoFactorAuthentication": "Mirëfilltësim dyfaktorësh",
- "ResetTwoFactorAuthentication": "Riktheje mirëfilltësimin dyfaktorësh te parazgjedhjet",
- "ResetTwoFactorAuthenticationInfo": "Nëse përdoruesi s’bën dot hyrjen, për shkak se ka humbur kodet e rimarrjeve ose pajisjen e përdorur për mirëfilltësime, mund ta rirregulloni mirëfilltësimin dyfaktorësh për përdoruesin, që ai të mund të bëjë hyrje sërish.",
- "AddUser": "Shtoni përdorues të ri",
"AddExistingUser": "Shtoni një përdorues ekzistues",
"AddNewUser": "Shtoni një përdorues të ri",
- "EditUser": "Përpunoni përdorues",
- "CreateUser": "Krijoni përdorues",
- "SaveBasicInfo": "Ruaj të Dhëna të Thjeshta",
+ "AddSuperuserAccessConfirm": "Dhënia një përdoruesi e fuqive si superpërdorues do ta lejojë përdoruesin të ketë kontroll të plotë mbi Matomo-n dhe duhet bërë me kursim. Që të vazhdohet, jepni fjalëkalimin tuaj.",
+ "AddUser": "Shtoni përdorues të ri",
+ "AddUserNoInitialAccessError": "Përdoruesve të rinj u duhet dhënë hyrje te një sajt, ju lutemi, jepini parametrit 'initialIdSite' një vlerë.",
+ "AllUsersAreSelected": "Janë përzgjedhur krejt %1$s përdoruesit.",
"AllWebsites": "Tërë sajtet",
- "LastUsed": "Përdorur së fundi më",
- "ExpireDate": "Datë skadimi",
- "AuthTokens": "Token-ë mirëfilltësimi",
- "AuthTokenPurpose": "Për çfarë po e përdorni këtë token?",
- "NoTokenCreatedYetCreateNow": "Ende pa token të krijuar, %1$skrijoni një token të ri tani%2$s.",
- "TokenSuccessfullyGenerated": "Token-i u prodhua me sukses",
- "ConfirmTokenCopied": "Ripohoj se e kam kopjuar token-in dhe e kuptoj se s’duhet t’ia jap kujt tjetër këtë token.",
- "GoBackSecurityPage": "Shkoni pas te faqja e sigurisë.",
- "PleaseStoreToken": "Ju lutemi, depozitojeni token-in tuaj në vend të sigurt, ngaqë s’do të jeni në gjendje të hyni në të ose ta shihni sërish.",
- "DoNotStoreToken": "Mos ia jepni kujt këtë token, ngaqë është po aq i fshehtë sa kredencialet tuaj të hyrjes dhe fjalëkalimi juaj.",
- "CreateNewToken": "Krijo token të ri",
+ "AllWebsitesAreSelected": "Janë përzgjedhur krejt %1$s sajtet.",
"AnonymousAccessConfirmation": "Ju ndan një hap nga akordimi përdoruesit anonim hyrje 'parjesh' në këtë sajt. Kjo do të thotë që raportet tuaja analitike dhe të dhënat e vizitorëve tuaj do të mund të shihen publikisht nga cilido, madje edhe pa kredenciale hyrjeje. Jeni i sigurt se doni të vazhdohet?",
"AnonymousUser": "Përdorues anonim",
"AnonymousUserHasViewAccess": "Shënim: përdoruesi %1$s ka hyrje %2$s te ky sajt.",
"AnonymousUserHasViewAccess2": "Raportet analitike dhe të dhënat e vizitorëve tuaj janë të dukshme publikisht.",
+ "AnonymousUserRoleChangeWarning": "Dhënia përdoruesit %1$s e rolit %2$s do t’i bëjë të dhënat e sajtit publike dhe të përdorshme nga kushdo, madje edhe pa pasur llogari në Matomo.",
"ApplyToAllWebsites": "Zbatoje për tërë sajtet",
+ "AreYouSure": "Jeni i sigurt?",
+ "AreYouSureAddCapability": "Jeni i sigurt se doni t’i jepet %1$s aftësia %2$s për te %3$s?",
+ "AreYouSureChangeDetails": "Jeni i sigurt se doni të ndryshohen të dhënat e përdoruesit për %s?",
+ "AreYouSureRemoveCapability": "Jeni i sigurt se doni t’i hiqet aftësia %1$s përdoruesit %2$s për %3$s?",
+ "AtLeastView": "Me më pak parje",
+ "AuthTokenPurpose": "Për çfarë po e përdorni këtë token?",
+ "AuthTokens": "Token-ë mirëfilltësimi",
+ "BasicInformation": "Të dhëna Bazë",
+ "BulkActions": "Veprime Në Masë",
+ "Capabilities": "Aftësi",
+ "CapabilitiesHelp": "Aftësitë janë zotësi individuale që mund t’u akordohen përdoruesve. Si parazgjedhje, rolet mund të akordojnë disa aftësi. Për shembull, roli i Përgjegjësit mund të lejojë automatikisht përdoruesit të përpunojnë etiketa te Përgjegjësi i Etiketave. Ndërsa, për përdorues me më pak fuqi, mund të jepni shprehimisht aftësi.",
+ "Capability": "Aftësi",
"ChangeAllConfirm": "Jeni i sigurt se doni t’i jepni përdoruesit '%s' hyrje në krejt sajtet?",
- "ClickHereToDeleteTheCookie": "Klikoni këtu që të fshihet \\\"cookie\\\" dhe që ta bëni Matomo-n të ndjekë vizitat tuaja",
- "ClickHereToSetTheCookieOnDomain": "Klikoni këtu që të vendoset një \\\"cookie\\\" që do të përjashtojë vizitat tuaja në sajte të ndjekur nga Matomo %s",
+ "ChangePermToAllSitesConfirm": "Jeni i sigurt se doni t’i lejoni përdoruesi %1$s hyrje për %2$s te çdo sajt te i cili keni hyrje përgjegjësi?",
+ "ChangePermToAllSitesConfirm2": "Shënim: kjo do të prekë vetëm sajtet ekzistues. Sajte të rinj që mund të krijoni, nuk do të jenë automatikisht të passhëm për këtë përdorues.",
+ "ChangePermToSiteConfirmMultiple": "Jeni i sigurt se doni të ndryshohet roli për %1$s te %2$s sajtet e përzgjedhur në %3$s?",
+ "ChangePermToSiteConfirmSingle": "Jeni i sigurt se doni të ndryshohet roli për %1$s te %2$s në %3$s?",
+ "ClickHereToDeleteTheCookie": "Klikoni këtu që të fshihet “cookie” dhe që ta bëni Matomo-n të ndjekë vizitat tuaja",
+ "ClickHereToSetTheCookieOnDomain": "Klikoni këtu që të depozitohet një “cookie” që do të përjashtojë vizitat tuaja në sajte të ndjekur nga Matomo %s",
+ "ClickToSelectAll": "Klikoni që të përzgjidhen krejt %1$s.",
+ "ClickToSelectDisplayedUsers": "Klikoni që të përzgjidhen %1$s përdoruesit e shfaqur.",
+ "ClickToSelectDisplayedWebsites": "Klikoni që të përzgjidhen %1$s sajtet e shfaqur.",
"ConfirmGrantSuperUserAccess": "Doni t’i akordoni '%s' hyrje Supepërdoruesi? Kujdes: përdoruesi do të ketë hyrje në krejt sajtet dhe do të jetë në gjendje të kryejë veprime administratori.",
"ConfirmProhibitMySuperUserAccess": "%s, doni vërtet t’i hiqni vetes të drejta Superpërdoruesi? Do të humbni krejt lejet dhe hyrjen në krejt sajtet dhe do të dilni nga Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Doni vërtet të hiqni hyrje Superpërdoruesi prej '%s'? Përdoruesi do të humbë krejt lejet dhe hyrjet në krejt sajtet. Sigurohuni t’i lejoni hyrje më pas, në sajtet e nevojshme, nëse është rasti.",
+ "ConfirmTokenCopied": "Ripohoj se e kam kopjuar token-in dhe e kuptoj se s’duhet t’ia jap kujt tjetër këtë token.",
+ "ConfirmWithPassword": "Që të ripohoni këtë ndryshim, jepni fjalëkalimin tuaj.",
+ "CreateNewToken": "Krijo token të ri",
+ "CreateUser": "Krijoni përdorues",
+ "CurrentPasswordNotCorrect": "Fjalëkalimi i tanishëm që dhatë s’është i saktë.",
+ "DeleteAllTokens": "Fshiji krejt token-ët",
"DeleteConfirm": "Jeni i sigurt se doni të fshihet përdoruesi %s?",
+ "DeletePermConfirmMultiple": "Jeni i sigurt se doni të hiqet hyrja te %2$s sajtet e përzgjedhur për %1$s?",
+ "DeletePermConfirmSingle": "Jeni i sigurt se doni të hiqet hyrja te %2$s për %1$s?",
+ "DeleteUserConfirmMultiple": "Jeni i sigurt se doni të fshihen %1$s përdoruesit e përzgjedhur?",
+ "DeleteUserConfirmSingle": "Jeni i sigurt se doni të fshihet %1$s?",
+ "DeleteUserPermConfirmMultiple": "Jeni i sigurt se doni të ndryshoni rolin për %1$s përdoruesit e përzgjedhur në %2$s për %3$s?",
+ "DeleteUserPermConfirmSingle": "Jeni i sigurt se doni të ndryshoni rolin për %1$s në %2$s për %3$s?",
+ "DeleteUsers": "Fshini Përdorues",
+ "DoNotStoreToken": "Mos ia jepni kujt këtë token, ngaqë është po aq i fshehtë sa kredencialet tuaj të hyrjes dhe fjalëkalimi juaj.",
+ "EditUser": "Përpunoni përdorues",
"Email": "Email",
+ "EmailChangeNotificationSubject": "Adresa email e llogarisë tuaj Matomo sapo u ndryshua",
+ "EmailChangedEmail1": "Adresa email përshoqëruar llogarisë tuaj u ndryshua në %1$s",
+ "EmailChangedEmail2": "Ky ndryshim zuri fill prej pajisjes vijuese: %1$s (Adresë IP = %2$s).",
"EmailYourAdministrator": "%1$sDërgojini përgjegjësit tuaj email rreth këtij problemi%2$s.",
"EnterUsernameOrEmail": "Jepni një emër përdoruesi ose adresë email",
- "ExceptionAccessValues": "Parametri për hyrjet duhet t’i jetë dhënë një nga vlerat vijuese: [ %1$s ], '%2$s'.",
- "ExceptionNoRoleSet": "S’është caktuar ndonjë rol, por lypset të caktohet një prej këtyre: %s",
- "ExceptionMultipleRoleSet": "Mund të caktohet vetëm një rol, por janë caktuar disa njëherësh. Përdorni vetëm një nga: %s",
- "ExceptionAnonymousNoCapabilities": "S’mund t’i caktoni ndonjë aftësi përdoruesit 'anonim'.",
+ "ExceptionAccessValues": "Parametrit për hyrjet duhet t’i jetë dhënë një nga vlerat vijuese: [ %1$s ], '%2$s'.",
"ExceptionAnonymousAccessNotPossible": "Përdoruesit 'anonim' mund t’i caktoni vetëm hyrje %1$s ose %2$s.",
+ "ExceptionAnonymousNoCapabilities": "S’mund t’i caktoni ndonjë aftësi përdoruesit 'anonim'.",
"ExceptionDeleteDoesNotExist": "Përdoruesi '%s' s'ekziston, ndaj s’mund të fshihet.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "Fshirja e përdoruesit '%s' s’është e mundur.",
- "ExceptionEditAnonymous": "Përdoruesi anonim nuk mund të fshihet, as mund të përpunohet të dhënat e tij. Përdoret nga Matomo për të përkufizuar një përdorues që s’ka bërë ende hyrjen. Për shembull, mund t’i bëni statistikat tuaja publike duke lejuar hyrje për 'parje' për përdoruesin 'anonim'.",
+ "ExceptionEditAnonymous": "Përdoruesi anonim s’mund të fshihet, as mund të përpunohet të dhënat e tij. Përdoret nga Matomo për të përkufizuar një përdorues që s’ka bërë ende hyrjen. Për shembull, mund t’i bëni statistikat tuaja publike, duke lejuar hyrje për 'parje' për përdoruesin 'anonim'.",
"ExceptionEmailExists": "Ka tashmë një përdorues me email-in '%s'.",
+ "ExceptionEmailExistsAsLogin": "Email-i '%s' është i përdorur tashmë si një emër përdoruesi.",
"ExceptionInvalidEmail": "Email-i s’është në format të vlefshëm.",
"ExceptionInvalidLoginFormat": "Emri i përdoruesit duhet të jetë ndërmjet %1$s dhe %2$s shenja i gjatë dhe të përmbajë vetëm shkronja, numra, ose shenjën '_' ose '-' ose '.' ose '@' ose '+'",
"ExceptionInvalidPassword": "Gjatësia e fjalëkalimeve duhet të jetë më e madhe se %1$s shenja.",
- "ExceptionInvalidPasswordTooLong": "Gjatësia e fjalëkalimit duhet të jetë më pak se %1$s shenja.",
+ "ExceptionInvalidPasswordTooLong": "Gjatësia e fjalëkalimeve duhet të jetë më pak se %1$s shenja.",
"ExceptionLoginExists": "Ka tashmë një përdorues '%s'.",
+ "ExceptionLoginExistsAsEmail": "Emër përdoruesi '%s' tashmë i përdorur si një email.",
+ "ExceptionMultipleRoleSet": "Mund të caktohet vetëm një rol, por janë caktuar disa njëherësh. Përdorni vetëm një nga: %s",
+ "ExceptionNoRoleSet": "S’është caktuar ndonjë rol, por lypset të caktohet një prej këtyre: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Ju lutemi, jepni një emër përdoruesi ose adresë email.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth pret një fjalëkalim hash MD5 (varg 32 shenja të gjatë). Ju lutemi, zbatojeni funksionin md5() mbi fjalëkalimin përpara zbatimit të kësaj metode.",
- "ExceptionRemoveSuperUserAccessOnlySuperUser": "Heqja e lejeve Superpërdoruesi për përdoruesin '%s' s’është e mundur.",
- "ExceptionSuperUserAccess": "Ky përdorues ka hyrje Superpërdoruesi dhe ka tashmë leje të hyjë dhe modifikojë krejt sajtet në këtë instalim Matomo. Mund t’ia hiqni të drejtat e Superpërdoruesit këtij përdoruesi dhe të riprovoni.",
- "ExceptionUserHasSuperUserAccess": "Përdoruesi '%s' ka hyrje Superpërdoruesi dhe ka tashmë leje të hyjë dhe modifikojë krejt sajtet në këtë instalim Matomo. Mund t’ia hiqni të drejtat e Superpërdoruesit këtij përdoruesi dhe të riprovoni.",
+ "ExceptionRemoveSuperUserAccessOnlySuperUser": "S’është e mundur heqja e lejeve Superpërdoruesi për përdoruesin '%s'.",
+ "ExceptionSuperUserAccess": "Ky përdorues ka hyrje Superpërdoruesi dhe ka tashmë leje të hyjë dhe ndryshojë krejt sajtet në këtë instalim Matomo. Mund t’ia hiqni të drejtat e Superpërdoruesit këtij përdoruesi dhe të riprovoni.",
"ExceptionUserDoesNotExist": "Përdoruesi '%s' s’ekziston.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Duhet të ketë të paktën një përdorues me hyrje Superpërdoruesi. Ju lutemi, së pari akordojini të drejta Superpërdoruesi një përdoruesi tjetër.",
+ "ExceptionUserHasSuperUserAccess": "Përdoruesi '%s' ka hyrje Superpërdoruesi dhe ka tashmë leje të hyjë dhe modifikojë krejt sajtet në këtë instalim Matomo. Mund t’ia hiqni të drejtat e Superpërdoruesit këtij përdoruesi dhe të riprovoni.",
"ExceptionUserHasViewAccessAlready": "Ky përdorues ka tashmë hyrje në këtë sajt.",
- "ExceptionNoValueForUsernameOrEmail": "Ju lutemi, jepni një emër përdoruesi ose adresë email.",
- "ExcludeVisitsViaCookie": "Përjashtoni vizitat tuaja, përmes përdorimit të një \"cookie\"",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Duhet të ketë të paktën një përdorues me hyrje Superpërdoruesi. Ju lutemi, së pari akordojini të drejta Superpërdoruesi një përdoruesi tjetër.",
+ "ExcludeVisitsViaCookie": "Përjashtoni vizitat tuaja, përmes përdorimit të një “cookie”",
+ "ExpireDate": "Datë skadimi",
+ "ExpiredTokensDeleteAutomatically": "Token-ët me një datë skadimi do të fshihen automatikisht.",
+ "FilterByAccess": "Filtroji sipas hyrjesh",
+ "FilterByWebsite": "Filtroji sipas sajtesh",
+ "FirstSiteInlineHelp": "Lypset që gjatë krijimit një përdoruesi të ri t’i jepet rol parjesh për një sajt. Nëse nuk jepet, gjatë hyrjes në llogarinë e tij, përdoruesi do të shohë një gabim. Pasi përdoruesi të jetë krijuar, mund t’i jepni më tepër leje, që nga skeda 'Leje' që do të shfaqet në të majtë.",
+ "FirstWebsitePermission": "Leje për sajtin e parë",
"ForAnonymousUsersReportDateToLoadByDefault": "Datë raporti që duhet ngarkuar si parazgjedhje për përdoruesit anonimë",
- "GiveUserAccess": "Jepini '%1$s' %2$s hyrje për te %3$s.",
+ "GiveAccessToAll": "Lejoji këtij përdoruesi hyrje në Krejt Sajtet",
+ "GiveUserAccess": "Jepini '%1$s' hyrje %2$s për te %3$s.",
"GiveViewAccess": "Jepini %1$s hyrje për parje",
+ "GiveViewAccessInstructions": "Për t’i dhënë një përdoruesi ekzistues hyrje për parje të raporteve për %s, jepni emrin e përdoruesit ose adresën email të një përdoruesi ekzistues",
"GiveViewAccessTitle": "Jepini një përdoruesi ekzistues hyrje për të parë raportet për %s",
- "GiveViewAccessInstructions": "Për t’i dhënë një përdoruesi ekzistues hyrje për parje të raporteve për %s jepni emrin e përdoruesit ose adresën email të një përdoruesi ekzistues",
+ "GoBackSecurityPage": "Shkoni pas te faqja e sigurisë.",
+ "HasSuperUserAccess": "Ka Leje Superpërdoruesi",
+ "IfThisWasYouIgnoreIfNot": "Nëse qetë ju, mos ngurroni ta shpërfillni këtë email. Nëse s’qetë, ju lutemi, bëni hyrjen në llogarinë tuaj, ndreqni adresën tuaj email, ndryshoni fjalëkalimin tuaj dhe lidhuni me përgjegjësin e instancës tuaj Matomo.",
+ "IfThisWasYouPasswordChange": "Nëse qetë ju, shpërfilleni pa problem këtë email. Nëse s’qetë, ju lutemi, lidhuni menjëherë me përgjegjësin e instancës tuaj Matomo, ngaqë mund të jetë komprometuar llogaria juaj!",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Nëse dëshironi të ndryshoni fjalëkalimin, shtypni një të ri. Përndryshe lëreni të zbrazët.",
- "YourCurrentPassword": "Fjalëkalimi juaj i tanishëm",
- "CurrentPasswordNotCorrect": "Fjalëkalim i tanishëm që dhatë s’është i saktë.",
- "ConfirmWithPassword": "Që të ripohoni këtë ndryshim, jepni fjalëkalimin tuaj.",
+ "IncludedInUsersRole": "E përfshirë në këtë rol përdoruesi.",
"InjectedHostCannotChangePwd": "Po e vizitoni me një strehë të panjohur (%1$s). S’mund ta ndryshoni fjalëkalimin, pa ndrequr këtë problem.",
"LastSeen": "Këndej pari së fundi më",
- "MainDescription": "Vendosni cilët përdorues kanë hyrje te sajtet tuaj. Mund të jepni edhe hyrje për te krejt sajtet njëherësh, duke zgjedhur \"Zbatoje për krejt sajtet\" te përzgjedhësi i sajtit.",
+ "LastUsed": "Përdorur së fundi më",
+ "MainDescription": "Vendosni cilët përdorues kanë hyrje te sajtet tuaj. Mund të jepni edhe hyrje për te krejt sajtet njëherësh, duke zgjedhur “Zbatoje për krejt sajtet” te përzgjedhësi i sajtit.",
"ManageAccess": "Administroni hyrjet",
+ "ManageUsers": "Administroni Përdorues",
+ "ManageUsersAdminDesc": "Krijoni përdorues të rinj ose përditësoni përdoruesit ekzistues. Mandej këtu mundeni të ujdisni lejet për ta. Ju lutemi, kini parasysh se keni hyrë si një përgjegjës. Kjo do të thotë se vetëm ju shihni dhe administroni përdorues që kanë hyrje te sajte specifike, ku keni leje “përgjegjësi”. Vetëm një përdorues me hyrje superpërdoruesi mund të shohë dhe të administrojë krejt përdoruesit nëpër krejt sajtet.",
+ "ManageUsersDesc": "Krijoni përdorues të rinj ose përditësoni përdoruesit ekzistues. Mandej këtu mund të caktoni edhe lejet për ta.",
"MenuAnonymousUserSettings": "Rregullime përdoruesi anonim",
- "MenuUsers": "Përdorues",
- "MenuUserSettings": "Rregullime përdoruesi",
"MenuPersonal": "Personale",
- "PersonalSettings": "Rregullime personale",
+ "MenuUserSettings": "Rregullime përdoruesi",
+ "MenuUsers": "Përdorues",
+ "NewsletterSignupFailureMessage": "Hëm, diç shkoi ters. S’qemë në gjendje t’ju regjistronim për buletinin tonë.",
+ "NewsletterSignupMessage": "Pajtohuni te buletini ynë, për të marrë informacione periodike rreth Matomo-s. Mund të shpajtoheni kur të doni. Ky shërbim përdor MadMimi. Mësoni më tepër rreth tij, te %1$sfaqja e Rregullave të Privatësisë në Matomo%2$s.",
+ "NewsletterSignupSuccessMessage": "Super, u regjistruat! Do të lidhemi së shpejti bashkë.",
+ "NewsletterSignupTitle": "Regjistrim Për Buletin",
+ "NoAccessWarning": "Këtij përdoruesi s’i është lejuar hyrje në ndonjë sajt. Kur të bëjë hyrjen në llogari, do të shohë një mesazh gabimi. Për ta parandaluar këtë, shtoni më poshtë hyrjen në një sajt.",
+ "NoTokenCreatedYetCreateNow": "Ende pa token të krijuar, %1$skrijoni një token të ri tani%2$s.",
+ "NoUsersExist": "Ende s’ka përdorues.",
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Shënim: Nuk mund të ndryshoni rregullimet në këtë ndarje, ngaqë s’keni ndonjë sajt ku mund të hyhet si përdorues anonim.",
- "NoUsersExist": "Ende nuk ka përdorues.",
- "PluginDescription": "Administrimi i Përdoruesve ju lejon të shtoni përdorues të rinj, përpunoni përdoruesit ekzistues dhe t’u jepni atyre hyrje për të parë ose administruar sajte.",
+ "OrManageIndividually": "Ose administroni hyrjen e këtij përdoruesi individualisht për çdo sajt",
+ "PasswordChangeNotificationSubject": "Fjalëkalimi i llogarisë tuaj Matomo sapo u ndryshua",
+ "PasswordChangedEmail": "Fjalëkalimi juaj sapo u ndryshua. Ndryshimi zuri fill prej pajisjes vijuese: %1$s (Adresë IP = %2$s).",
+ "Permissions": "Leje",
+ "PersonalSettings": "Rregullime personale",
+ "PleaseStoreToken": "Ju lutemi, depozitojeni token-in tuaj në vend të sigurt, ngaqë s’do të jeni në gjendje të hyni në të ose ta shihni sërish.",
+ "PluginDescription": "Administrimi i Përdoruesve ju lejon të shtoni përdorues të rinj, përpunoni përdorues ekzistues dhe t’u jepni atyre hyrje për të parë ose administruar sajte.",
"PrivAdmin": "Përgjegjës",
"PrivAdminDescription": "Përdoruesit me këtë rol mund të administrojnë një sajt dhe t’u japin përdoruesve të tjerë të drejta hyrjeje në sajt. Ata mund të bëjnë gjithashtu gjithçka që mund të bëjë roli %s.",
- "PrivWrite": "Shkrimi",
- "PrivWriteDescription": "Përdoruesit me këtë rol mund të shohin krejt lëndën, plus të krijojnë, administrojnë dhe fshijnë për këtë sajt njësi të tilla si Objektiva, Hinka, Harta Zonash të Nxehta, Regjistrime Sesionesh dhe Formularë.",
"PrivNone": "Pa hyrje",
"PrivView": "Pamje",
"PrivViewDescription": "Një përdorues me këtë rol mund të shohë krejt raportet.",
+ "PrivWrite": "Shkrimi",
+ "PrivWriteDescription": "Përdoruesit me këtë rol mund të shohin krejt lëndën, plus të krijojnë, administrojnë dhe fshijnë për këtë sajt njësi të tilla si Objektiva, Hinka, Harta Zonash të Nxehta, Regjistrime Sesionesh dhe Formularë.",
+ "RemoveAllAccessToThisSite": "Hiqi krejt hyrjen në këtë sajt",
+ "RemovePermissions": "Hiqni Leje",
+ "RemoveSuperuserAccessConfirm": "Heqja e fuqive si superpërdorues do ta lërë përdoruesin pa leje (do t’ju duhet t’i shtoni ato më pas). Që të vazhdohet, jepni fjalëkalimin tuaj.",
"RemoveUserAccess": "Hiqjani '%1$s' hyrjen për te %2$s.",
"ReportDateToLoadByDefault": "Datë raporti që duhet ngarkuar si parazgjedhje",
"ReportToLoadByDefault": "Raport që duhet ngarkuar si parazgjedhje",
+ "ResetTwoFactorAuthentication": "Riktheje mirëfilltësimin dyfaktorësh te parazgjedhjet",
+ "ResetTwoFactorAuthenticationInfo": "Nëse përdoruesi s’bën dot hyrjen, për shkak se ka humbur kodet e rimarrjeve ose pajisjen e përdorur për mirëfilltësime, mund ta rirregulloni mirëfilltësimin dyfaktorësh për përdoruesin, që ai të mund të bëjë hyrje sërish.",
+ "Role": "Rol",
+ "RoleFor": "Rol për",
+ "RolesHelp": "Rolet përcaktojnë se ç’mund të bëjë një përdorues nën Matomo me një sajt të dhënë. Mësoni më tepër rreth roleve %1$sParje%2$s dhe %3$sPërgjegjës%4$s.",
+ "SaveBasicInfo": "Ruaj Hollësi Elementare",
+ "SetPermission": "Caktoni Leje",
+ "SuperUserAccess": "Hyrje Superpërdoruesi",
"SuperUserAccessManagement": "Administroni hyrje Superpërdoruesish",
"SuperUserAccessManagementGrantMore": "Që këtu mund t’u akordoni të drejta Superpërdoruesi përdoruesve të tjerë. Ju lutemi, përdoreni me kujdes këtë veçori.",
"SuperUserAccessManagementMainDescription": "Superpërdoruesit kanë lejet më të fuqishme. Ata mund të kryejnë krejt veprimet administrative, të tilla si shtim sajtesh të rinj për mbikëqyrje, shtim përdoruesish, ndryshim lejesh përdoruesish, aktivizim dhe çaktivizim shtojcash, deri edhe instalim shtojcash të reja nga Marketplace-i.",
+ "SuperUserIntro1": "Superpërdoruesit kanë lejet më të fuqishme. Ata mund të kryejnë krejt veprimet administrative, të tilla si shtim sajtesh të rinj për mbikëqyrje, shtim përdoruesish, ndryshim lejesh përdoruesish, aktivizim dhe çaktivizim shtojcash, deri edhe instalim shtojcash të reja nga Marketplace-i. Përdoruesve të tjerë nga Divezone mund t’u akordoni Leje Superpërdoruesi që nga këtu.",
+ "SuperUserIntro2": "Ju lutemi, përdoreni me kujdes këtë veçori.",
+ "SuperUsersPermissionsNotice": "Superpërdoruesit kanë leje përgjegjësi mbi krejt sajtet, ndaj s’ka nevojë të administrohen lejet e tyre sipas sajtesh.",
+ "TheDisplayedUsersAreSelected": "Janë përzgjedhur %1$s përdorues të shfaqur.",
+ "TheDisplayedWebsitesAreSelected": "Janë përzgjedhur %1$s sajte të shfaqur.",
"TheLoginScreen": "Skena e hyrjes",
"ThereAreCurrentlyNRegisteredUsers": "Deri tani ka %s përdorues të regjistruar.",
"TokenAuth": "Token Mirëfilltësimi API",
+ "TokenAuthIntro": "Token-ët që keni krijuar mund të përdoren për hyrje te API e Matomo-s për raportime, API e Matomo-s për ndjekje dhe widget-e Matomo të eksportuar dhe që kanë të njëjtat leje me të hyrjes tuaj për përdorues të rregullt. Këta token-ë mund t’i përdorni edhe për aplikacione Matomo për celular.",
"TokenRegenerateConfirmSelf": "Ndryshimi i token-it të mirëfilltësimit të API-t do të bëjë të pavlefshëm token-in tuaj. Nëse token-i i tanishëm është në përdorim, lypset të përditësoni krejt klientët API me token-in e prodhuar rishtazi. Doni vërtet të ndryshohet token-i juaj i mirëfilltësimit?",
"TokenRegenerateTitle": "Riprodhoje",
- "TokensSuccessfullyDeleted": "Krejt token-ët u fshinë me sukses",
"TokenSuccessfullyDeleted": "Token-i u fshi me sukses",
- "DeleteAllTokens": "Fshiji krejt token-ët",
- "ExpiredTokensDeleteAutomatically": "Token-ët me një datë skadimi dotë fshihen automatikisht.",
+ "TokenSuccessfullyGenerated": "Token-i u prodhua me sukses",
+ "TokensSuccessfullyDeleted": "Krejt token-ët u fshinë me sukses",
"TokensWithExpireDateCreationBySystem": "Token-ët me datë skadimi aktualisht mund të krijohen vetëm nga sistemi",
- "TokenAuthIntro": "Token-ët që keni krijuar mund të përdoren për hyrje te API e Matomo-s për raportime, API e Matomo-s për ndjekje, dhe widget-e Matomo të eksportuar dhe që kanë të njëjtat leje me të hyrjes tuaj për përdorues të rregullt. Këta token-ë mund t’i përdorni edhe për aplikacione Matomo Mobile.",
- "TypeYourPasswordAgain": "Shtypeni sërish fjalëkalimin e ri.",
+ "TwoFactorAuthentication": "Mirëfilltësim dyfaktorësh",
"TypeYourCurrentPassword": "Ju lutemi, shtypni fjalëkalimin tuaj të tanishëm që të ripohoni ndryshimin e fjalëkalimit.",
+ "TypeYourPasswordAgain": "Shtypeni sërish fjalëkalimin e ri.",
"User": "Përdorues",
- "UserHasPermission": "%1$s ka hyrje për %2$s për te %3$s.",
"UserHasNoPermission": "%1$s ka %2$s për te %3$s",
+ "UserHasPermission": "%1$s aktualisht ka %2$s hyrje për %3$s.",
+ "UserSearch": "Kërkim përdoruesi",
+ "Username": "Emër përdoruesi",
"UsersManagement": "Administrim Përdoruesish",
"UsersManagementMainDescription": "Krijoni përdorues të rinj ose përditësoni përdoruesit ekzistues. Mandej mund t’u caktoni lejet më sipër.",
+ "UsesTwoFactorAuthentication": "Përdor mirëfilltësim dyfaktorësh",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Kur përdoruesit s’kanë bërë hyrjen në llogari dhe vizitojnë Matomo-n, fillimisht do të duhej të shihnin",
+ "YourCurrentPassword": "Fjalëkalimi juaj i tanishëm",
"YourUsernameCannotBeChanged": "Emri juaj i përdoruesit s’mund të ndryshohet.",
- "YourVisitsAreIgnoredOnDomain": "%1$sVizitat tuaja te %2$s %3$s janë shpërfillur nga Matomo (te shfletuesi juaj u gjet \\\"cookie\\\" për shpërfillje nga Matomo).",
- "YourVisitsAreNotIgnored": "%1$sVizitat tuaja nuk janë shpërfillur nga Matomou%2$s (te shfletuesi juaj nuk u gjet \\\"cookie\\\" për shpërfillje nga Matomo).",
- "AddUserNoInitialAccessError": "Përdoruesve të rinj u duhet dhënë hyrje te një sajt, ju lutemi, jepini parametrit 'initialIdSite' një vlerë.",
- "AtLeastView": "Me më pak parje",
- "ManageUsers": "Administroni Përdorues",
- "ManageUsersDesc": "Krijoni përdorues të rinj ose përditësoni përdoruesit ekzistues. Mandej këtu mund të caktoni edhe lejet për ta.",
- "NoAccessWarning": "Këtij përdoruesi s’i është lejuar hyrje në ndonjë sajt. Kur të bëjë hyrjen në llogari, do të shohë një mesazh gabimi. Për ta parandaluar këtë, shtoni më poshtë hyrjen në një sajt.",
- "BulkActions": "Veprime Në Masë",
- "SetPermission": "Caktoni Leje",
- "RemovePermissions": "Hiqni Leje",
- "RolesHelp": "Rolet përcaktojnë se ç’mund të bëjë një përdorues nën Matomo me një sajt të dhënë. Mësoni më tepër rreth roleve %1$sShihni%2$s dhe %3$sPërgjegjës%4$s.",
- "Role": "Rol",
- "TheDisplayedWebsitesAreSelected": "Janë përzgjedhur %1$s sajte të shfaqur.",
- "ClickToSelectAll": "Klikoni që të përzgjidhen krejt %1$s.",
- "AllWebsitesAreSelected": "Janë përzgjedhur krejt %1$s sajtet.",
- "ClickToSelectDisplayedWebsites": "Klikoni që të përzgjidhen %1$s sajtet e shfaqur.",
- "DeletePermConfirmSingle": "Jeni i sigurt se doni të hiqet hyrja te %2$s për %1$s?",
- "DeletePermConfirmMultiple": "Jeni i sigurt se doni të hiqet hyrja te %2$s sajtet e përzgjedhur për %1$s?",
- "ChangePermToSiteConfirmSingle": "Jeni i sigurt se doni të ndryshohet roli për %1$s te %2$s në %3$s?",
- "ChangePermToSiteConfirmMultiple": "Jeni i sigurt se doni të ndryshohet roli për %1$s te %2$s sajtet e përzgjedhur në %3$s?",
- "BasicInformation": "Të dhëna Bazë",
- "Permissions": "Leje",
- "SuperUserAccess": "Hyrje Superpërdoruesi",
- "FirstSiteInlineHelp": "Lypset që gjatë krijimit një përdoruesi të ri t’i jepet rol parjesh për një sajt. Nëse nuk jepet, përdoruesi do të shohë një gabim gjatë hyrjes në llogarinë e tij. Pasi përdoruesi të jetë krijuar mund t’i jepni më tepër leje, që nga skeda 'Leje' që do të shfaqet në të majtë.",
- "SuperUsersPermissionsNotice": "Superpërdoruesit kanë leje përgjegjësi mbi krejt sajtet, ndaj s’ka nevojë të administrohen lejet e tyre sipas sajtesh.",
- "SuperUserIntro1": "Superpërdoruesit kanë lejet më të fuqishme. Ata mund të kryejnë krejt veprimet administrative, të tilla si shtim sajtesh të rinj për mbikëqyrje, shtim përdoruesish, ndryshim lejesh përdoruesish, aktivizim dhe çaktivizim shtojcash, deri edhe instalim shtojcash të reja nga Marketplace-i. Përdoruesve të tjerë nga Divezone mund t’u akordoni Leje Superpërdoruesi që nga këtu.",
- "SuperUserIntro2": "Ju lutemi, përdoreni me kujdes këtë veçori.",
- "HasSuperUserAccess": "Ka Leje Superpërdoruesi",
- "AreYouSure": "Jeni i sigurt?",
- "RemoveSuperuserAccessConfirm": "Heqja e fuqive si superpërdorues do ta lërë përdoruesin pa leje (do t’ju duhet t’i shtoni ato më pas). Që të vazhdohet, jepni fjalëkalimin tuaj.",
- "AddSuperuserAccessConfirm": "Dhënia një përdoruesi e fuqive si superpërdorues do ta lejojë përdoruesin të ketë kontroll të plotë mbi Matomo-n dhe duhet bërë me kursim. Që të vazhdohet, jepni fjalëkalimin tuaj.",
- "DeleteUsers": "Fshini Përdorues",
- "UserSearch": "Kërkim përdoruesi",
- "FilterByAccess": "Filtroji sipas lejesh",
- "FilterByWebsite": "Filtroji sipas sajtesh",
- "ShowAll": "Shfaqi krejt",
- "Username": "Emër përdoruesi",
- "RoleFor": "Rol për",
- "TheDisplayedUsersAreSelected": "Janë përzgjedhur %1$s përdorues të shfaqur.",
- "AllUsersAreSelected": "Janë përzgjedhur krejt %1$s përdoruesit.",
- "ClickToSelectDisplayedUsers": "Klikoni që të përzgjidhen %1$s përdoruesit e shfaqur.",
- "RemoveAllAccessToThisSite": "Hiqi krejt hyrjen në këtë sajt",
- "DeleteUserConfirmSingle": "Jeni i sigurt se doni të fshihet %1$s?",
- "DeleteUserConfirmMultiple": "Jeni i sigurt se doni të fshihen %1$s përdoruesit e përzgjedhur?",
- "DeleteUserPermConfirmSingle": "Jeni i sigurt se doni të ndryshoni rolin për %1$s në %2$s për %3$s?",
- "DeleteUserPermConfirmMultiple": "Jeni i sigurt se doni të ndryshoni rolin për %1$s përdoruesit e përzgjedhur në %2$s për %3$s?",
- "AreYouSureChangeDetails": "Jeni i sigurt se doni të ndryshohen të dhënat e përdoruesit për %s?",
- "AnonymousUserRoleChangeWarning": "Dhënia përdoruesit %1$s e rolit %2$s do t’i bëjë të dhënat e sajtit publike dhe të përdorshme nga kushdo, madje edhe pa patur llogari në Matomo.",
- "GiveAccessToAll": "Lejoji këtij përdoruesi hyrje në Krejt Sajtet",
- "OrManageIndividually": "Ose administroni hyrjen e këtij përdoruesi individualisht për çdo sajt",
- "ChangePermToAllSitesConfirm": "Jeni i sigurt se doni t’i lejoni përdoruesi %1$s hyrje për %2$s te çdo sajt te i cili keni hyrje përgjegjësi?",
- "ChangePermToAllSitesConfirm2": "Shënim: kjo do të prekë vetëm sajtet ekzistues. Sajte të rinj që mund të krijoni, nuk do të jenë automatikisht të passhëm për këtë përdorues.",
- "CapabilitiesHelp": "Aftësitë janë zotësi individuale që mund t’u akordohen përdoruesve. Si parazgjedhje, rolet mund të kenë të akorduara disa aftësi. Për shembull, roli i Përgjegjësit mund të lejojë automatikisht përdoruesit të përpunojnë etiketa te Përgjegjësi i Etiketave. Ndërsa, për përdorues me pak fuqi, mund të jepni shprehimisht aftësi.",
- "Capabilities": "Aftësi",
- "AreYouSureAddCapability": "Jeni i sigurt se doni t’i jepet %1$s aftësia %2$s për %3$s?",
- "AreYouSureRemoveCapability": "Jeni i sigurt se doni t’i hiqet aftësia %1$s përdoruesit %2$s për %3$s?",
- "IncludedInUsersRole": "E përfshirë në këtë rol përdoruesi.",
- "Capability": "Aftësi",
- "EmailChangeNotificationSubject": "Adresa email e llogarisë tuaj Matomo sapo u ndryshua",
- "EmailChangedEmail1": "Adresa email përshoqëruar llogarisë tuaj sapo u ndryshua në %1$s",
- "EmailChangedEmail2": "Ky ndryshim zuri fill prej pajisjes vijuese: %1$s (Adresë IP = %2$s).",
- "IfThisWasYouIgnoreIfNot": "Nëse qetë ju, mos ngurroni ta shpërfillni këtë email. Nëse s’qetë ju, ju lutemi, bëni hyrjen në llogarinë tuaj, ndreqni adresën tuaj email, ndryshoni fjalëkalimin tuaj dhe lidhuni me përgjegjësin e instancës tuaj Matomo.",
- "IfThisWasYouPasswordChange": "Nëse jeni ju, shpërfilleni pa problem këtë email. Nëse s’qetë ju, ju lutemi, lidhuni menjëherë me përgjegjësin e instancës tuaj Matomo, ngaqë mund të jetë komprometuar llogaria juaj!",
- "PasswordChangeNotificationSubject": "Fjalëkalimi i llogarisë tuaj Matomo sapo u ndryshua",
- "PasswordChangedEmail": "Fjalëkalimi juaj sapo u ndryshua. Ndryshimi zuri fill prej pajisjes vijuese: %1$s (Adresë IP = %2$s).",
- "NewsletterSignupTitle": "Regjistrim Për Buletin",
- "NewsletterSignupMessage": "Pajtohuni te buletini ynë për të marrë informacione periodike rreth Matomo-s. Mund të shpajtoheni kur të doni. Ky shërbim përdor MadMimi. Mësoni më tepër rreth tij te %1$sfaqja e Rregullave tona të Privatësisë%2$s.",
- "NewsletterSignupFailureMessage": "Hëm, diç shkoi ters. S’qemë në gjendje t’ju regjistronim për buletinin tonë.",
- "NewsletterSignupSuccessMessage": "Super, u regjistruat! Do të lidhemi së shpejti."
+ "YourVisitsAreIgnoredOnDomain": "%1$sVizitat tuaja te %2$s %3$s janë shpërfillur nga Matomo (te shfletuesi juaj u gjet “cookie” për shpërfillje nga Matomo).",
+ "YourVisitsAreNotIgnored": "%1$sVizitat tuaja nuk janë shpërfillur nga Matomo%2$s (te shfletuesi juaj s’u gjet “cookie” për shpërfillje nga Matomo)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/sr.json b/plugins/UsersManager/lang/sr.json
index a1999a63fa..88047566a1 100644
--- a/plugins/UsersManager/lang/sr.json
+++ b/plugins/UsersManager/lang/sr.json
@@ -24,30 +24,30 @@
"ExceptionInvalidLoginFormat": "Korisničko ime mora biti dugačko između %1$s i %2$s znakova i može da sadrži samo slova, brojeve ili znakove '_', '-', '.', '@' i '+'",
"ExceptionInvalidPassword": "Dužina lozinke mora biti veća od %1$s znakova.",
"ExceptionLoginExists": "Korisničko ime '%s' već postoji.",
+ "ExceptionNoValueForUsernameOrEmail": "Molimo vas da upišete korisničko ime ili mejl adresu.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth očekuje MD5 hash lozinku (niz od 32 znaka). Molimo vas da primenite funkciju md5() nad lozinkom pre poziva ovog metoda. Hvala.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Uklanjanje superkorisničkog nivoa pristupa korisniku '%s' nije moguće.",
"ExceptionSuperUserAccess": "Ovaj korisnik već ima superkorisnički nivo pristupa. Možete mu ukloniti taj nivo i pokušati ponovo.",
"ExceptionUserDoesNotExist": "Korisnik '%s' ne postoji.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Mora postojati barem jedan korisnik sa superkorisničkim pristupom. Molimo vas da prvo dodelite superkorisnički pristup nekom od korisnika.",
"ExceptionUserHasViewAccessAlready": "Ovaj korisnik već ima pristup ovom sajtu.",
- "ExceptionNoValueForUsernameOrEmail": "Molimo vas da upišete korisničko ime ili mejl adresu.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Mora postojati barem jedan korisnik sa superkorisničkim pristupom. Molimo vas da prvo dodelite superkorisnički pristup nekom od korisnika.",
"ExcludeVisitsViaCookie": "Isključite vaše posete pomoću kolačića",
"ForAnonymousUsersReportDateToLoadByDefault": "Za anonimne korisnike, datum izveštaja koji podrazumevano treba prikazati je:",
"GiveUserAccess": "Dodeli '%1$s' %2$s pristup za %3$s.",
"GiveViewAccess": "Dodeli pristup prikaza za %1$s",
- "GiveViewAccessTitle": "Dodeli postojećem korisniku pristup prikaza izveštaja za %s",
"GiveViewAccessInstructions": "Ukoliko želite da postojećem korisniku dodelite pristup prikaza za %s, upišite korisničko ime ili mejl adresu tog korisnika",
+ "GiveViewAccessTitle": "Dodeli postojećem korisniku pristup prikaza izveštaja za %s",
"InjectedHostCannotChangePwd": "Trenutno pristupate sa nepoznatog hosta (%1$s). Lozinku ne možete promeniti dok ovo ne ispravite.",
"LastSeen": "Poslednji put viđen",
"MainDescription": "Odredite koji korisnici imaju pristup vašim sajtovima. Možete im dodeliti prostup svim sajtovima izborom opcije \"Primeni na sve sajtove\".",
"ManageAccess": "Kontrola pristupa",
"MenuAnonymousUserSettings": "Podešavanja anonimnih korisnika",
- "MenuUsers": "Korisnici",
- "MenuUserSettings": "Tekući korisnik",
"MenuPersonal": "Lično",
- "PersonalSettings": "Lična podešavanja",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Ne možete menjati podešavanja u ovoj sekciji zato što nemate nijedan sajt kojem se može pristupiti kao anonimni korisnik.",
+ "MenuUserSettings": "Tekući korisnik",
+ "MenuUsers": "Korisnici",
"NoUsersExist": "Još uvek nema korisnika.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Ne možete menjati podešavanja u ovoj sekciji zato što nemate nijedan sajt kojem se može pristupiti kao anonimni korisnik.",
+ "PersonalSettings": "Lična podešavanja",
"PluginDescription": "Upravljanje korisnicima vam omogućuje dodavanje novih korisnika, izmenu postojećih kao i dodelu pristupa za prikaz i administraciju sajtova.",
"PrivAdmin": "Administracija",
"PrivNone": "Nema pristup",
@@ -64,14 +64,13 @@
"TokenRegenerateTitle": "Regenerisanje",
"TypeYourPasswordAgain": "Upišite novu lozinku ponovo",
"User": "Korisnik",
- "UserHasPermission": "%1$s trenutno ima %2$s pristup za %3$s.",
"UserHasNoPermission": "%1$s trenutno ima %2$s za %3$s.",
+ "UserHasPermission": "%1$s trenutno ima %2$s pristup za %3$s.",
+ "Username": "Korisničko ime",
"UsersManagement": "Upravljanje korisnicima",
"UsersManagementMainDescription": "Dodavanje novih i promena postojećih korisničkih naloga, dodeljivanje privilegija.",
"YourUsernameCannotBeChanged": "Vaše korisničko ime ne može biti promenjeno.",
"YourVisitsAreIgnoredOnDomain": "%1$s Matomo ignoriše vaše posete %2$s %3$s (pronađen je specijalni kolačić u vašem brauzeru).",
- "YourVisitsAreNotIgnored": "%1$s Matomo ne ignoriše vaše posete%2$s (nije pronađen kolačić u vašem brauzeru).",
- "ShowAll": "Prikaži sve",
- "Username": "Korisničko ime"
+ "YourVisitsAreNotIgnored": "%1$s Matomo ne ignoriše vaše posete%2$s (nije pronađen kolačić u vašem brauzeru)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/sv.json b/plugins/UsersManager/lang/sv.json
index 098afc3fe8..a627206506 100644
--- a/plugins/UsersManager/lang/sv.json
+++ b/plugins/UsersManager/lang/sv.json
@@ -1,48 +1,70 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "Använd tvåfaktorsautentisering.",
- "TwoFactorAuthentication": "Tvåfaktorsautentisering",
- "ResetTwoFactorAuthentication": "Återställ tvåfaktorsautentisering",
- "ResetTwoFactorAuthenticationInfo": "Om användaren inte längre kan logga in på grund av förlorade återställningskoder eller en förlorad verifieringsenhet kan du återställa tvåfaktorautentisering för användaren så att den kan logga in igen.",
- "AddUser": "Lägg till en ny användare",
"AddExistingUser": "Lägg till en befintlig användare",
"AddNewUser": "Lägg till en ny användare",
- "EditUser": "Redigera användare",
- "CreateUser": "Skapa användare",
- "SaveBasicInfo": "Spara grundläggande information",
+ "AddSuperuserAccessConfirm": "Genom att ge en användare superanvändare-tillgång kommer användaren att ha full kontroll över Matomo och detta bör göras sparsamt. Ange ditt lösenord för att fortsätta.",
+ "AddUser": "Lägg till en ny användare",
+ "AddUserNoInitialAccessError": "Nya användare måste få tillgång till en webbplats, vänligen ange parametern 'initialIdSite'.",
+ "AllUsersAreSelected": "Alla %1$s användare är markerade.",
"AllWebsites": "Alla webbplatser",
- "LastUsed": "Senast använd",
- "ExpireDate": "Utgångsdatum",
- "AuthTokens": "Auth tokens",
- "AuthTokenPurpose": "Vad använder du denna token till?",
- "NoTokenCreatedYetCreateNow": "Ingen token skapad ännu, %1$sskapa en ny token nu%2$s.",
- "TokenSuccessfullyGenerated": "Token framgångsrikt genererat",
- "ConfirmTokenCopied": "Jag bekräftar att jag kopierade token och förstår att jag inte ska dela denna token med någon annan.",
- "GoBackSecurityPage": "Gå tillbaka till säkerhetssidan.",
- "PleaseStoreToken": "Vänligen lagra din token på ett säkert sätt, eftersom du inte kan komma åt eller se denna token igen.",
- "DoNotStoreToken": "Dela inte denna token med någon annan eftersom det är lika hemligt som din inloggning och ditt lösenord.",
- "CreateNewToken": "Skapa ny token",
+ "AllWebsitesAreSelected": "Alla %1$s sidorna är markerade.",
"AnonymousAccessConfirmation": "Du håller på att ge anonyma besökare \"visa\" åtkomst till den här webbplatsen. Det innebär att dina analysrapporter och dina besökarinformation kommer att kunna ses av alla, även utan inloggning. Är du säker på att du vill fortsätta?",
"AnonymousUser": "Anonym användare",
"AnonymousUserHasViewAccess": "Observera: Användare %1$s och användare %2$s har nu tillgång till den här webbsidan.",
"AnonymousUserHasViewAccess2": "Dina analysrapporter och informationen om dina besökare är publika.",
+ "AnonymousUserRoleChangeWarning": "Att ge användare %1$s %2$s rollen kommer göra denna webbsidas data publik och tillgänglig för alla, även om de inte har något Matomo-login.",
"ApplyToAllWebsites": "Använd för alla webbplatser",
+ "AreYouSure": "Är du säker?",
+ "AreYouSureAddCapability": "Är du säker på att du vill ge %1$s %2$smöjlighet till %3$s?",
+ "AreYouSureChangeDetails": "Är du säker på att du vill ändra användarinformationen för %s?",
+ "AreYouSureRemoveCapability": "Är du säker på att du vill ta bort %1$s möjligheten från %2$s för %3$s?",
+ "AtLeastView": "Åtminstone visa",
+ "AuthTokenPurpose": "Vad använder du denna token till?",
+ "AuthTokens": "Auth tokens",
+ "BasicInformation": "Grundläggande information",
+ "BulkActions": "Massändra",
+ "Capabilities": "Möjligheter",
+ "CapabilitiesHelp": "Möjligheter är individuella möjligheter som användare kan beviljas. Roller kan som standard ge vissa möjligheter. Till exempel kommer administratörsrollen att automatiskt tillåta användare att redigera taggar i tagghanteraren. För mindre kraftfulla användare kan du dock uttryckligen ge användarna möjligheter.",
+ "Capability": "Förmåga",
"ChangeAllConfirm": "Är du säker på att du vill ge '%s' tillgång till alla webbplatserna?",
+ "ChangePermToAllSitesConfirm": "Är du säker på att du vill ge %1$s användare %2$s rättigheter, till alla webbplatser som du för närvarande har administrationsrättigheter till?",
+ "ChangePermToAllSitesConfirm2": "Obs: detta kommer endast att påverka de befintliga webbplatserna. Nya webbplatser som du skapar kommer inte att vara automatiskt tillgängliga för den här användaren.",
+ "ChangePermToSiteConfirmMultiple": "Är du säker på att du vill ändra %1$s's roll till de %2$s markerade sidorna till %3$s?",
+ "ChangePermToSiteConfirmSingle": "Är du säker på att du vill ändra %1$s's roll för %2$s till %3$s?",
"ClickHereToDeleteTheCookie": "Klicka här för att ta bort kakan så att Matomo börjar spåra dina besök igen",
"ClickHereToSetTheCookieOnDomain": "Klicka här för att sätta kakan som exkluderar dina besök spårade av Matomo för webbplatsen %s",
+ "ClickToSelectAll": "Klicka för att välja alla %1$s.",
+ "ClickToSelectDisplayedUsers": "Klicka för att markera de %1$s visade användarna.",
+ "ClickToSelectDisplayedWebsites": "Klicka för att markera de %1$s visade sidorna.",
"ConfirmGrantSuperUserAccess": "Vill du verkligen bevilja '%s' Superanvändarbehörighet? Varning: Användaren kommer ha tillgång till alla dina webbsidor och ha möjlighet att utföra administrativa uppdrag.",
"ConfirmProhibitMySuperUserAccess": "%s, vill du verkligen ta bort din egen Superanvändarbehörighet? Du kommer att förlora behörigheten till alla dina webbsidor och loggas ut från Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Vill du verkligen radera Super User behörigheten från '%s'? Användaren kommer förlora alla behörigheter till alla webbsidor. Säkerställ att eventuell behörighet ges till valda webbsidor efteråt.",
+ "ConfirmTokenCopied": "Jag bekräftar att jag kopierade token och förstår att jag inte ska dela denna token med någon annan.",
+ "ConfirmWithPassword": "Vänligen ange ditt lösenord för att godkänna ändringen.",
+ "CreateNewToken": "Skapa ny token",
+ "CreateUser": "Skapa användare",
+ "CurrentPasswordNotCorrect": "Lösenordet du angav är inte korrekt.",
+ "DeleteAllTokens": "Ta bort alla tokens",
"DeleteConfirm": "Är du säker på att du vill ta bort användaren %s?",
+ "DeletePermConfirmMultiple": "Är du säker på att du vill ta bort %1$s's tillgång till de%2$s markerade sidorna?",
+ "DeletePermConfirmSingle": "Är du säker på att du vill ta bort %1$s's tillgång till %2$s?",
+ "DeleteUserConfirmMultiple": "Är du säker på att du vill ta bort de %1$s markerade användarna?",
+ "DeleteUserConfirmSingle": "Är du säker på att du vill ta bort %1$s?",
+ "DeleteUserPermConfirmMultiple": "Är du säker på att du vill ändra de %1$s markerade användarnas roll till %2$s för %3$s?",
+ "DeleteUserPermConfirmSingle": "Är du säker på att du vill ändra %1$s's roll till %2$s för %3$s?",
+ "DeleteUsers": "Ta bort användare",
+ "DoNotStoreToken": "Dela inte denna token med någon annan eftersom det är lika hemligt som din inloggning och ditt lösenord.",
+ "EditUser": "Redigera användare",
"Email": "E-post",
+ "EmailChangeNotificationSubject": "Ditt Matomo-kontos e-postadress har just ändrats",
+ "EmailChangedEmail1": "E-postadressen som är kopplad till ditt konto har ändrats till %1$s",
+ "EmailChangedEmail2": "Denna ändring initierades från följande enhet: %1$s (IP-adress = %2$s).",
"EmailYourAdministrator": "%1$sE-posta din administratör om det här problemet%2$s.",
"EnterUsernameOrEmail": "Ange ett användarnamn eller en e-postadress.",
"ExceptionAccessValues": "Parameter-tillgången måste ha ett av följande värden: [ %1$s ], '%2$s'.",
- "ExceptionNoRoleSet": "Ingen roll är inställd men en av dessa måste tilldelas: %s",
- "ExceptionMultipleRoleSet": "Endast en roll kan ställas in men flera har tilldelats. Tilldela endast en av följande: %s",
- "ExceptionAnonymousNoCapabilities": "Du kan inte tilldela några rättigheter till den \"anonyma\" användaren.",
"ExceptionAnonymousAccessNotPossible": "Du kan endast bevilja tillgång %1$s eller %2$s tillgång till den \"anonyma\" användaren.",
+ "ExceptionAnonymousNoCapabilities": "Du kan inte tilldela några rättigheter till den \"anonyma\" användaren.",
"ExceptionDeleteDoesNotExist": "Användaren '%s' finns inte och kan därför inte tas bort.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "Att radera användare '%s' är inte möjligt.",
"ExceptionEditAnonymous": "Den anonyma användaren kan inte redigeras eller tas bort. Den används av Matomo för att definiera en användare som inte har loggat in ännu. Till exempel kan du göra din statistik publik genom att bevilja \\\"Visa\\\" tillgång till \\\"anonyma\\\" användare.",
@@ -52,137 +74,114 @@
"ExceptionInvalidPassword": "Ditt lösenord måste vara längre %1$s tecken.",
"ExceptionInvalidPasswordTooLong": "Lösenordet måste vara kortare än %1$s tecken.",
"ExceptionLoginExists": "Användaren '%s' finns redan.",
+ "ExceptionMultipleRoleSet": "Endast en roll kan ställas in men flera har tilldelats. Tilldela endast en av följande: %s",
+ "ExceptionNoRoleSet": "Ingen roll är inställd men en av dessa måste tilldelas: %s",
+ "ExceptionNoValueForUsernameOrEmail": "Ange ett användarnamn eller en e-postadress.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth förväntar sig MD5-hashar av lösenorden (32 tecken lång sträng). Anropa gärna md5() funktionen på lösenord innan du anropar den här metoden.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Att ta bort Superanvändarbehörigheten från användare '%s' är inte möjligt.",
"ExceptionSuperUserAccess": "Den här användaren har redan Superanvändarbehörighet och tillåtelse att ändra alla sidor i Matomo. Du kan ta bort Superanvändarbehörigheten från den här användaren och försöka igen.",
- "ExceptionUserHasSuperUserAccess": "Den här användaren '%s' har redan Superanvändarbehörighet och tillåtelse att ändra alla sidor i Matomo. Du kan ta bort Superanvändarbehörigheten från den här användaren och försöka igen.",
"ExceptionUserDoesNotExist": "Användaren '%s' finns inte.",
- "ExceptionYouMustGrantSuperUserAccessFirst": "Det måste finnas minst en användare med Superanvändarbehörighet. Var vänlig och bevilja Superanvändarbehörighet till en annan användare först.",
+ "ExceptionUserHasSuperUserAccess": "Den här användaren '%s' har redan Superanvändarbehörighet och tillåtelse att ändra alla sidor i Matomo. Du kan ta bort Superanvändarbehörigheten från den här användaren och försöka igen.",
"ExceptionUserHasViewAccessAlready": "Denna användare har redan behörighet till denna webbsida.",
- "ExceptionNoValueForUsernameOrEmail": "Ange ett användarnamn eller en e-postadress.",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "Det måste finnas minst en användare med Superanvändarbehörighet. Var vänlig och bevilja Superanvändarbehörighet till en annan användare först.",
"ExcludeVisitsViaCookie": "Exkludera spårning av dina besök",
+ "ExpireDate": "Utgångsdatum",
+ "ExpiredTokensDeleteAutomatically": "Tokens med utgångsdatum raderas automatiskt.",
+ "FilterByAccess": "Filtrera på rättighet",
+ "FilterByWebsite": "Filtrera på webbsida",
+ "FirstSiteInlineHelp": "Det är nödvändigt att ge en ny användare en visaroll för en webbplats vid skapandet. Om ingen åtkomst ges, kommer användaren att se ett fel vid inloggning. Du kan ge fler behörigheter efter att användaren har skapats på fliken \"Behörigheter\" som visas till vänster.",
"ForAnonymousUsersReportDateToLoadByDefault": "Rapport som laddas som standard för anonyma användare.",
+ "GiveAccessToAll": "Ge denna användaren åtkomst till Alla webbplatser",
"GiveUserAccess": "Ge '%1$s'%2$s behörighet till %3$s.",
"GiveViewAccess": "Ge \"visa\" behörighet till %1$s",
- "GiveViewAccessTitle": "Ge en existerande användare behörighet att visa rapporter för %s",
"GiveViewAccessInstructions": "För att ge en befintlig användare läsrättighet för %s skriv in användarnamnet eller e-postadressen för den befintliga användaren.",
+ "GiveViewAccessTitle": "Ge en existerande användare behörighet att visa rapporter för %s",
+ "GoBackSecurityPage": "Gå tillbaka till säkerhetssidan.",
+ "HasSuperUserAccess": "Har Superanvändarrättigheter",
+ "IfThisWasYouIgnoreIfNot": "Om det var du kan du ignorera detta e-postmeddelande. Om det inte var du, vänligen logga in, granska din e-postadress, ändra ditt lösenord och kontakta din Matomo-administratör.",
+ "IfThisWasYouPasswordChange": "Om det var du kan du ignorera detta e-postmeddelande. Om det inte var du, kontakta din Matomo-administratör omedelbart, eftersom ditt konto kan ha äventyrats!",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Om du vill ändra lösenordet skriver du ett nytt. Annars, lämna detta tomt.",
- "YourCurrentPassword": "Ditt nuvarande lösenord",
- "CurrentPasswordNotCorrect": "Lösenordet du angav är inte korrekt.",
- "ConfirmWithPassword": "Vänligen ange ditt lösenord för att godkänna ändringen.",
+ "IncludedInUsersRole": "Ingår i den här användarens roll.",
"InjectedHostCannotChangePwd": "Du besöker för närvarande sidan genom ett okänt värdnamn (%1$s). Du kan inte ändra ditt lösenord innan det här prblemet är åtgärdat.",
"LastSeen": "Senast sedd",
+ "LastUsed": "Senast använd",
"MainDescription": "Välj vilka användare som ska få tillgång till dina webbplatser. Du kan också ge tillgång till alla webbplatser samtidigt genom att välja \"Tillämpa på alla webbplatser\" i webbplatsväljaren.",
"ManageAccess": "Hantera rättigheter",
+ "ManageUsers": "Hantera användare",
+ "ManageUsersDesc": "Skapa nya användare eller ändra befintliga. Du kan sedan ändra deras rättigheter.",
"MenuAnonymousUserSettings": "Inställningar för anonyma användare",
- "MenuUsers": "Användare",
- "MenuUserSettings": "Användarinställningar",
"MenuPersonal": "Personligt",
- "PersonalSettings": "Personliga inställningar",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Notera: Eftersom att inga webbplaster tillåter anonym åtkomst till analysdata, så kan inga ändringar göras i den här sektionen.",
+ "MenuUserSettings": "Användarinställningar",
+ "MenuUsers": "Användare",
+ "NewsletterSignupFailureMessage": "Oj, något gick fel. Vi kunde inte registrera dig för nyhetsbrevet.",
+ "NewsletterSignupMessage": "Prenumerera på vårt nyhetsbrev för att få regelbunden information om Matomo. Du kan när som helst avsluta prenumerationen. Den här tjänsten använder MadMimi. Läs mer om det på vår %1$ssekretesspolicy-sida%2$s.",
+ "NewsletterSignupSuccessMessage": "Super, du har registrerat dig! Vi kommer snart att höra av oss.",
+ "NewsletterSignupTitle": "Registrering av nyhetsbrev",
+ "NoAccessWarning": "Den här användare har inte fått tillgång till en webbplats. När de loggar in kommer de att se ett felmeddelande. För att förhindra detta så behöver du lägga till åtkomst till en webbplats nedan.",
+ "NoTokenCreatedYetCreateNow": "Ingen token skapad ännu, %1$sskapa en ny token nu%2$s.",
"NoUsersExist": "Det finns inga användare än.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Notera: Eftersom att inga webbplaster tillåter anonym åtkomst till analysdata, så kan inga ändringar göras i den här sektionen.",
+ "OrManageIndividually": "Eller ange denna användares behörighet individuellt för varje webbplats",
+ "PasswordChangeNotificationSubject": "Ditt Matomo-kontos lösenord har just ändrats",
+ "PasswordChangedEmail": "Ditt lösenord har just ändrats. Ändringen initierades från följande enhet: %1$s (IP-address = %2$s).",
+ "Permissions": "Rättigheter",
+ "PersonalSettings": "Personliga inställningar",
+ "PleaseStoreToken": "Vänligen lagra din token på ett säkert sätt, eftersom du inte kan komma åt eller se denna token igen.",
"PluginDescription": "Användarhanteringen låter dig lägga till nya användare, redigera befintliga användare och ge dom tillgång till läsrättighet eller administrera webbplatser.",
"PrivAdmin": "Administratör",
"PrivAdminDescription": "Användare med denna roll kan ändra en webbplats och ge andra användare tillgång till den. Dom kan också göra allt som %s rollen kan göra.",
- "PrivWrite": "Skriv",
- "PrivWriteDescription": "Användare med denna roll kan se allt innehåll plus skapa, hantera och ta bort enheter som mål, trattar, heatmaps, sessioninspelningar och formulär för denna webbplats.",
"PrivNone": "Inga rättigheter",
"PrivView": "Visa",
"PrivViewDescription": "En användare med denna roll kan se alla rapporter.",
+ "PrivWrite": "Skriv",
+ "PrivWriteDescription": "Användare med denna roll kan se allt innehåll plus skapa, hantera och ta bort enheter som mål, trattar, heatmaps, sessioninspelningar och formulär för denna webbplats.",
+ "RemoveAllAccessToThisSite": "Ta bort all tillgång till denna webbplats.",
+ "RemovePermissions": "Ta bort rättighet",
+ "RemoveSuperuserAccessConfirm": "Om du tar bort superanvändaråtkomst kommer användaren inte att ha behörighet (du måste lägga till dem efteråt). Ange ditt lösenord för att fortsätta.",
"RemoveUserAccess": "Ta bort behörigheten för '%1$s' till %2$s.",
"ReportDateToLoadByDefault": "Rapport som laddas som standard",
"ReportToLoadByDefault": "Rapport som laddas som standard",
+ "ResetTwoFactorAuthentication": "Återställ tvåfaktorsautentisering",
+ "ResetTwoFactorAuthenticationInfo": "Om användaren inte längre kan logga in på grund av förlorade återställningskoder eller en förlorad verifieringsenhet kan du återställa tvåfaktorautentisering för användaren så att den kan logga in igen.",
+ "Role": "Roll",
+ "RoleFor": "Roll för",
+ "RolesHelp": "Roller bestämmer vad en användare kan göra i Matomo med hänsyn till en specifik webbplats . Läs mer om %1$sVisa%2$s och %3$sAdmin%4$s rollerna.",
+ "SaveBasicInfo": "Spara grundläggande information",
+ "SetPermission": "Ange rättighet",
+ "SuperUserAccess": "Superanvändarrättigheter",
"SuperUserAccessManagement": "Hantera Superanvändare access",
"SuperUserAccessManagementGrantMore": "Du kan få Superanvändarbehörighet till andra Matomoanvändare här. Använd den behörigheten med försiktighet.",
"SuperUserAccessManagementMainDescription": "Superanvändaren har fullständig åtkomst. De kan utföra alla administrativa uppgifter. Till exempel lägga till en ny webbsida för analys, lägga till användare, ändra användaråtkomst, aktivera och avaktivera plugins och installera nya plugins från Marketplace.",
+ "SuperUserIntro1": "Superanvändare har fullständig åtkomst. De kan utföra alla administrativa uppgifter såsom lägga till en ny webbsida för analys, lägga till användare, ändra användaråtkomst, aktivera och avaktivera plugins och installera nya plugins från Marketplace. Du kan tillåta superanvändare tillgång till andra användare av Divezone här.",
+ "SuperUserIntro2": "Vänligen använd denna funktion med försiktighet.",
+ "SuperUsersPermissionsNotice": "Superanvändare har administratörsrättigheter till alla webbplatser, så det är inte nödvändigt att hantera deras rättigheter per webbplats.",
+ "TheDisplayedUsersAreSelected": "De %1$s visade användarna är markerade.",
+ "TheDisplayedWebsitesAreSelected": "De %1$s visade sidorna är markerade.",
"TheLoginScreen": "Inloggningsrutan",
"ThereAreCurrentlyNRegisteredUsers": "Det finns just nu %s registrerade användare.",
"TokenAuth": "API-autentiseringstoken",
+ "TokenAuthIntro": "Tokens du har genererat kan användas för att komma åt API för Matomo-rapportering, API för Matomo-spårning och exporterade Matomo-widgetar och ha samma behörigheter som din vanliga användarinloggning. Du kan även använda dessa tokens för Matomos mobil-app.",
"TokenRegenerateConfirmSelf": "Ändring av API-autentiseringstoken ogiltigförklarar ditt egna token. Om detta token är i användning, måste du uppdatera alla API-klienter med det nygenererade tokenet. Vill du verkligen ändra ditt autentiseringstoken?",
"TokenRegenerateTitle": "Återskapa",
- "TokensSuccessfullyDeleted": "Alla tokens har tagits bort",
"TokenSuccessfullyDeleted": "Token har tagits bort",
- "DeleteAllTokens": "Ta bort alla tokens",
- "ExpiredTokensDeleteAutomatically": "Tokens med utgångsdatum raderas automatiskt.",
+ "TokenSuccessfullyGenerated": "Token framgångsrikt genererat",
+ "TokensSuccessfullyDeleted": "Alla tokens har tagits bort",
"TokensWithExpireDateCreationBySystem": "Tokens med utgångsdatum kan för närvarande endast skapas av systemet",
- "TokenAuthIntro": "Tokens du har genererat kan användas för att komma åt API för Matomo-rapportering, API för Matomo-spårning och exporterade Matomo-widgetar och ha samma behörigheter som din vanliga användarinloggning. Du kan även använda dessa tokens för Matomos mobil-app.",
- "TypeYourPasswordAgain": "Bekräfta lösenordet genom att skriva in det igen.",
+ "TwoFactorAuthentication": "Tvåfaktorsautentisering",
"TypeYourCurrentPassword": "Skriv ditt nuvarande lösenord för att bekräfta lösenordsändringen.",
+ "TypeYourPasswordAgain": "Bekräfta lösenordet genom att skriva in det igen.",
"User": "Användare",
- "UserHasPermission": "%1$s har förnärvarande %2$s behörighet till %3$s.",
"UserHasNoPermission": "%1$s har förnärvarande %2$s till %3$s",
+ "UserHasPermission": "%1$s har förnärvarande %2$s behörighet till %3$s.",
+ "UserSearch": "Sök användare",
+ "Username": "Användarnamn",
"UsersManagement": "Användarhantering",
"UsersManagementMainDescription": "Skapa eller ändra befintliga användare. Du kan sedan ändra deras rättigheter ovan.",
+ "UsesTwoFactorAuthentication": "Använd tvåfaktorsautentisering.",
"WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "När användare inte är inloggade och besöker Matomo bör de först se",
+ "YourCurrentPassword": "Ditt nuvarande lösenord",
"YourUsernameCannotBeChanged": "Ditt användarnamn kan inte ändras.",
"YourVisitsAreIgnoredOnDomain": "%1$sDina besök ignoreras av Matomo för webbplatsen %2$s %3$s (Matomos kaka hittades i din webbläsare).",
- "YourVisitsAreNotIgnored": "%1$sSus visitas no son ignoradas por Matomo%2$s (la cookie de ignorar a Matomo no fue encontrada en su navegador).",
- "AddUserNoInitialAccessError": "Nya användare måste få tillgång till en webbplats, vänligen ange parametern 'initialIdSite'.",
- "AtLeastView": "Åtminstone visa",
- "ManageUsers": "Hantera användare",
- "ManageUsersDesc": "Skapa nya användare eller ändra befintliga. Du kan sedan ändra deras rättigheter.",
- "NoAccessWarning": "Den här användare har inte fått tillgång till en webbplats. När de loggar in kommer de att se ett felmeddelande. För att förhindra detta så behöver du lägga till åtkomst till en webbplats nedan.",
- "BulkActions": "Massändra",
- "SetPermission": "Ange rättighet",
- "RemovePermissions": "Ta bort rättighet",
- "RolesHelp": "Roller bestämmer vad en användare kan göra i Matomo med hänsyn till en specifik webbplats . Läs mer om %1$sVisa%2$s och %3$sAdmin%4$s rollerna.",
- "Role": "Roll",
- "TheDisplayedWebsitesAreSelected": "De %1$s visade sidorna är markerade.",
- "ClickToSelectAll": "Klicka för att välja alla %1$s.",
- "AllWebsitesAreSelected": "Alla %1$s sidorna är markerade.",
- "ClickToSelectDisplayedWebsites": "Klicka för att markera de %1$s visade sidorna.",
- "DeletePermConfirmSingle": "Är du säker på att du vill ta bort %1$s's tillgång till %2$s?",
- "DeletePermConfirmMultiple": "Är du säker på att du vill ta bort %1$s's tillgång till de%2$s markerade sidorna?",
- "ChangePermToSiteConfirmSingle": "Är du säker på att du vill ändra %1$s's roll för %2$s till %3$s?",
- "ChangePermToSiteConfirmMultiple": "Är du säker på att du vill ändra %1$s's roll till de %2$s markerade sidorna till %3$s?",
- "BasicInformation": "Grundläggande information",
- "Permissions": "Rättigheter",
- "SuperUserAccess": "Superanvändarrättigheter",
- "FirstSiteInlineHelp": "Det är nödvändigt att ge en ny användare en visaroll för en webbplats vid skapandet. Om ingen åtkomst ges, kommer användaren att se ett fel vid inloggning. Du kan ge fler behörigheter efter att användaren har skapats på fliken \"Behörigheter\" som visas till vänster.",
- "SuperUsersPermissionsNotice": "Superanvändare har administratörsrättigheter till alla webbplatser, så det är inte nödvändigt att hantera deras rättigheter per webbplats.",
- "SuperUserIntro1": "Superanvändare har fullständig åtkomst. De kan utföra alla administrativa uppgifter såsom lägga till en ny webbsida för analys, lägga till användare, ändra användaråtkomst, aktivera och avaktivera plugins och installera nya plugins från Marketplace. Du kan tillåta superanvändare tillgång till andra användare av Divezone här.",
- "SuperUserIntro2": "Vänligen använd denna funktion med försiktighet.",
- "HasSuperUserAccess": "Har Superanvändarrättigheter",
- "AreYouSure": "Är du säker?",
- "RemoveSuperuserAccessConfirm": "Om du tar bort superanvändaråtkomst kommer användaren inte att ha behörighet (du måste lägga till dem efteråt). Ange ditt lösenord för att fortsätta.",
- "AddSuperuserAccessConfirm": "Genom att ge en användare superanvändare-tillgång kommer användaren att ha full kontroll över Matomo och detta bör göras sparsamt. Ange ditt lösenord för att fortsätta.",
- "DeleteUsers": "Ta bort användare",
- "UserSearch": "Sök användare",
- "FilterByAccess": "Filtrera på rättighet",
- "FilterByWebsite": "Filtrera på webbsida",
- "ShowAll": "Visa alla",
- "Username": "Användarnamn",
- "RoleFor": "Roll för",
- "TheDisplayedUsersAreSelected": "De %1$s visade användarna är markerade.",
- "AllUsersAreSelected": "Alla %1$s användare är markerade.",
- "ClickToSelectDisplayedUsers": "Klicka för att markera de %1$s visade användarna.",
- "RemoveAllAccessToThisSite": "Ta bort all tillgång till denna webbplats.",
- "DeleteUserConfirmSingle": "Är du säker på att du vill ta bort %1$s?",
- "DeleteUserConfirmMultiple": "Är du säker på att du vill ta bort de %1$s markerade användarna?",
- "DeleteUserPermConfirmSingle": "Är du säker på att du vill ändra %1$s's roll till %2$s för %3$s?",
- "DeleteUserPermConfirmMultiple": "Är du säker på att du vill ändra de %1$s markerade användarnas roll till %2$s för %3$s?",
- "AreYouSureChangeDetails": "Är du säker på att du vill ändra användarinformationen för %s?",
- "AnonymousUserRoleChangeWarning": "Att ge användare %1$s %2$s rollen kommer göra denna webbsidas data publik och tillgänglig för alla, även om de inte har något Matomo-login.",
- "GiveAccessToAll": "Ge denna användaren åtkomst till Alla webbplatser",
- "OrManageIndividually": "Eller ange denna användares behörighet individuellt för varje webbplats",
- "ChangePermToAllSitesConfirm": "Är du säker på att du vill ge %1$s användare %2$s rättigheter, till alla webbplatser som du för närvarande har administrationsrättigheter till?",
- "ChangePermToAllSitesConfirm2": "Obs: detta kommer endast att påverka de befintliga webbplatserna. Nya webbplatser som du skapar kommer inte att vara automatiskt tillgängliga för den här användaren.",
- "CapabilitiesHelp": "Möjligheter är individuella möjligheter som användare kan beviljas. Roller kan som standard ge vissa möjligheter. Till exempel kommer administratörsrollen att automatiskt tillåta användare att redigera taggar i tagghanteraren. För mindre kraftfulla användare kan du dock uttryckligen ge användarna möjligheter.",
- "Capabilities": "Möjligheter",
- "AreYouSureAddCapability": "Är du säker på att du vill ge %1$s %2$smöjlighet till %3$s?",
- "AreYouSureRemoveCapability": "Är du säker på att du vill ta bort %1$s möjligheten från %2$s för %3$s?",
- "IncludedInUsersRole": "Ingår i den här användarens roll.",
- "Capability": "Förmåga",
- "EmailChangeNotificationSubject": "Ditt Matomo-kontos e-postadress har just ändrats",
- "EmailChangedEmail1": "E-postadressen som är kopplad till ditt konto har ändrats till %1$s",
- "EmailChangedEmail2": "Denna ändring initierades från följande enhet: %1$s (IP-adress = %2$s).",
- "IfThisWasYouIgnoreIfNot": "Om det var du kan du ignorera detta e-postmeddelande. Om det inte var du, vänligen logga in, granska din e-postadress, ändra ditt lösenord och kontakta din Matomo-administratör.",
- "IfThisWasYouPasswordChange": "Om det var du kan du ignorera detta e-postmeddelande. Om det inte var du, kontakta din Matomo-administratör omedelbart, eftersom ditt konto kan ha äventyrats!",
- "PasswordChangeNotificationSubject": "Ditt Matomo-kontos lösenord har just ändrats",
- "PasswordChangedEmail": "Ditt lösenord har just ändrats. Ändringen initierades från följande enhet: %1$s (IP-address = %2$s).",
- "NewsletterSignupTitle": "Registrering av nyhetsbrev",
- "NewsletterSignupMessage": "Prenumerera på vårt nyhetsbrev för att få regelbunden information om Matomo. Du kan när som helst avsluta prenumerationen. Den här tjänsten använder MadMimi. Läs mer om det på vår %1$ssekretesspolicy-sida%2$s.",
- "NewsletterSignupFailureMessage": "Oj, något gick fel. Vi kunde inte registrera dig för nyhetsbrevet.",
- "NewsletterSignupSuccessMessage": "Super, du har registrerat dig! Vi kommer snart att höra av oss."
+ "YourVisitsAreNotIgnored": "%1$sSus visitas no son ignoradas por Matomo%2$s (la cookie de ignorar a Matomo no fue encontrada en su navegador)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/ta.json b/plugins/UsersManager/lang/ta.json
index ea09a7b9f3..22733319fd 100644
--- a/plugins/UsersManager/lang/ta.json
+++ b/plugins/UsersManager/lang/ta.json
@@ -3,7 +3,6 @@
"Email": "மின்னஞ்சல்",
"MenuUsers": "பாவனையாளர்கள்",
"PrivView": "பார்க்க",
- "ShowAll": "முழுவதையும் காட்டு",
"Username": "பயனாளர் பெயர்"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/th.json b/plugins/UsersManager/lang/th.json
index 63dd9848c3..95545a775c 100644
--- a/plugins/UsersManager/lang/th.json
+++ b/plugins/UsersManager/lang/th.json
@@ -17,8 +17,8 @@
"ForAnonymousUsersReportDateToLoadByDefault": "สำหรับผู้ใช้ที่ไม่ระบุชื่อ รายงานวันที่โหลด โดยค่าเริ่มต้น",
"ManageAccess": "จัดการการเข้าถึง",
"MenuAnonymousUserSettings": "การตั้งค่าผู้ใช้ที่ไม่ระบุชื่อ",
- "MenuUsers": "ผู้ใช้",
"MenuUserSettings": "ตั้งค่าผู้ใช้",
+ "MenuUsers": "ผู้ใช้",
"PrivAdmin": "จัดการ",
"PrivNone": "ไม่เข้าใช้งาน",
"PrivView": "มุมมอง",
@@ -27,12 +27,11 @@
"TheLoginScreen": "หน้าจอการเข้าสู่ระบบ",
"TypeYourPasswordAgain": "พิมพ์รหัสผ่านของคุณใหม่อีกครั้ง",
"User": "ผู้ใช้",
+ "Username": "ชื่อผู้ใช้",
"UsersManagement": "การจัดการผู้ใช้",
"UsersManagementMainDescription": "สร้างผู้ใช้ใหม่หรืออัพเดตผู้ใช้ที่มีอยู่ จากนั้นคุณสามารถกำหนดสิทธิ์ของพวกเขาได้",
"YourUsernameCannotBeChanged": "ชื่อผู้ใช้ของคุณไม่สามารถเปลี่ยนแปลงได้",
"YourVisitsAreIgnoredOnDomain": "%1$s ผู้เข้าชมของคุณจะถูกละเว้น โดย Matomo บน %2$s %3$s (Matomo ละเว้นการที่พบคุกกี้ในเบราว์เซอร์ของคุณ)",
- "YourVisitsAreNotIgnored": "%1$s ผู้เข้าชมของคุณจะถูกละเว้นโดย Matomo %2$s (Matomo ละเว้นไม่พบคุกกี้ในเบราว์เซอร์ของคุณ)",
- "ShowAll": "แสดงทั้งหมด",
- "Username": "ชื่อผู้ใช้"
+ "YourVisitsAreNotIgnored": "%1$s ผู้เข้าชมของคุณจะถูกละเว้นโดย Matomo %2$s (Matomo ละเว้นไม่พบคุกกี้ในเบราว์เซอร์ของคุณ)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/tl.json b/plugins/UsersManager/lang/tl.json
index a3a7d805b4..51a65c57d7 100644
--- a/plugins/UsersManager/lang/tl.json
+++ b/plugins/UsersManager/lang/tl.json
@@ -1,5 +1,6 @@
{
"UsersManager": {
+ "2FA": "2FA",
"AddUser": "Magdagdag ng bagong user",
"AllWebsites": "Ang lahat ng mga website",
"AnonymousUserHasViewAccess": "Tandaan: ang %1$s user ay may %2$s na access sa website na ito",
@@ -28,10 +29,10 @@
"LastSeen": "Huling nakita",
"ManageAccess": "Pamahalaan ang access",
"MenuAnonymousUserSettings": "Mga settings ng anonymous na user",
- "MenuUsers": "Users",
"MenuUserSettings": "Mga setting ng user",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Tandaan: Hindi mo maaring baguhin ang mga setting sa seksyo na ito dahil wala kang anumang website na maaaring ma-access sa pamamagitan ng anonymous user",
+ "MenuUsers": "Users",
"NoUsersExist": "Walang pang mga gumagamit.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Tandaan: Hindi mo maaring baguhin ang mga setting sa seksyo na ito dahil wala kang anumang website na maaaring ma-access sa pamamagitan ng anonymous user",
"PrivAdmin": "Admin",
"PrivNone": "Walang access",
"PrivView": "Tingnan",
@@ -48,7 +49,6 @@
"UsersManagementMainDescription": "Lumikha ng mga bagong user o i-update ang mga mayroon nang user. Pagkatapos ay maaari mong itakda ang kanilang mga permiso sa itaas.",
"YourUsernameCannotBeChanged": "Hindi maaaring mabago ang iyong username.",
"YourVisitsAreIgnoredOnDomain": "%1$s Ang iyong bisita ay hindi na-ignore ng Matomo %2$s %3$s (ang Matomo ignore cookie ay hindi nakita sa iyong browser).",
- "YourVisitsAreNotIgnored": "%1$s Ang iyong bisita ay hindi na-ignore ng Matomo%2$s (ang Matomo ignore cookie ay hindi nakita sa iyong browser).",
- "ShowAll": "Ipakita lahat"
+ "YourVisitsAreNotIgnored": "%1$s Ang iyong bisita ay hindi na-ignore ng Matomo%2$s (ang Matomo ignore cookie ay hindi nakita sa iyong browser)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/tr.json b/plugins/UsersManager/lang/tr.json
index f99ee037d0..0589ae1a36 100644
--- a/plugins/UsersManager/lang/tr.json
+++ b/plugins/UsersManager/lang/tr.json
@@ -152,7 +152,6 @@
"RolesHelp": "Matomo üzerinde bir kullanıcının belirli bir web sitesi üzerinde yapabileceği işlemler roller tarafından belirlenir. Roller hakkında ayrıntılı bilgi almak için %1$sGörüntüleme%2$s ve %3$sYönetici%4$s bölümlerine bakabilirsiniz.",
"SaveBasicInfo": "Temel bilgileri kaydet",
"SetPermission": "İzinleri ayarla",
- "ShowAll": "Tümünü görüntüle",
"SuperUserAccess": "Süper kullanıcı izni",
"SuperUserAccessManagement": "Süper kullanıcı izni yönetimi",
"SuperUserAccessManagementGrantMore": "Diğer Matomo kullanıcılarına Süper Yönetici izinleri bu bölümden verilebilir. Lütfen bu özelliği dikkatli kullanın.",
diff --git a/plugins/UsersManager/lang/uk.json b/plugins/UsersManager/lang/uk.json
index b6d2c9ee71..31ef7e669a 100644
--- a/plugins/UsersManager/lang/uk.json
+++ b/plugins/UsersManager/lang/uk.json
@@ -55,7 +55,6 @@
"RemoveUserAccess": "Видалити доступ '%1$s' для %2$s.",
"ReportDateToLoadByDefault": "Звіт за замовчуванням за",
"ReportToLoadByDefault": "Звіт за замовчуванням",
- "ShowAll": "Показати все",
"SuperUserAccessManagement": "Управління суперкористувачами",
"SuperUserAccessManagementGrantMore": "Ви можете надати права суперкористувача іншим користувачам Matomo тут. Будь ласка, використовуйте цю функцію з обережністю.",
"SuperUserAccessManagementMainDescription": "Суперкористувачі мають найвищі дозволи. Вони можуть виконувати всі адміністративні завдання, такі як додавання нових сайтів для моніторингу, додавання користувачів, зміна прав доступу користувачів, активація і деактивація плагінів і навіть встановлення нових плагінів з Маркету.",
diff --git a/plugins/UsersManager/lang/vi.json b/plugins/UsersManager/lang/vi.json
index dd90e800ed..8ac822495d 100644
--- a/plugins/UsersManager/lang/vi.json
+++ b/plugins/UsersManager/lang/vi.json
@@ -17,21 +17,21 @@
"ExceptionEmailExists": "Người dùng với email '%s' đã tồn tại.",
"ExceptionInvalidEmail": "Email không có một định dạng hợp lệ.",
"ExceptionLoginExists": "Tên người dùng '%s' đã tồn tại sẵn.",
+ "ExceptionNoValueForUsernameOrEmail": "Vui lòng nhập một tên người dùng hoặc địa chỉ email.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth là yêu cầu một mật khẩu băm MD5 (chuỗi 32 char long). Xin vui lòng gọi hàm md5() trên mật khẩu trước khi gọi phương thức này.",
"ExceptionUserDoesNotExist": "Người dùng '%s' không tồn tại.",
- "ExceptionNoValueForUsernameOrEmail": "Vui lòng nhập một tên người dùng hoặc địa chỉ email.",
"ExcludeVisitsViaCookie": "Loại bỏ các truy cập của bạn sử dụng một cookie",
"ForAnonymousUsersReportDateToLoadByDefault": "Đối với người dùng ẩn danh, báo cáo thep ngày nạp theo mặc định",
"InjectedHostCannotChangePwd": "Bạn đang truy cập với một máy chủ không xác định (%1$s). Bạn không thể thay đổi mật khẩu của bạn cho đến khi vấn đề này được xử lý.",
"LastSeen": "Lần xem cuối",
"ManageAccess": "Quản lý truy cập",
"MenuAnonymousUserSettings": "Thiết lập người dùng ẩn danh",
- "MenuUsers": "Các người dùng",
- "MenuUserSettings": "Thiết lập người dùng",
"MenuPersonal": "Cá nhân",
- "PersonalSettings": "Thiết lập cá nhân",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Lưu ý: Bạn không thể thay đổi các thiết lập trong phần này, bởi vì bạn không có bất kỳ trang web nào có thể truy cập bởi người dùng ẩn danh.",
+ "MenuUserSettings": "Thiết lập người dùng",
+ "MenuUsers": "Các người dùng",
"NoUsersExist": "Chưa có người dùng nào.",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Lưu ý: Bạn không thể thay đổi các thiết lập trong phần này, bởi vì bạn không có bất kỳ trang web nào có thể truy cập bởi người dùng ẩn danh.",
+ "PersonalSettings": "Thiết lập cá nhân",
"PrivAdmin": "Quản trị viên",
"PrivNone": "Không có truy cập",
"PrivView": "Xem",
@@ -41,12 +41,11 @@
"ThereAreCurrentlyNRegisteredUsers": "Hiện tại có %s người dùng đăng ký.",
"TypeYourPasswordAgain": "Gõ lại mật khẩu mới.",
"User": "Người dùng",
+ "Username": "Tên truy nhập",
"UsersManagement": "Quản lý người dùng",
"UsersManagementMainDescription": "Tạo người dùng mới hoặc cập nhật các người dùng hiện tại. Sau đó bạn có thể thiết lập quyền của họ.",
"YourUsernameCannotBeChanged": "Tên đăng nhập của bạn không thể thay đổi.",
"YourVisitsAreIgnoredOnDomain": "%1$s lượt truy cập của bạn sẽ được bỏ qua bởi Matomo trên %2$s %3$s (cookie Matomo bỏ qua đã được tìm thấy trong trình duyệt của bạn).",
- "YourVisitsAreNotIgnored": "%1$s lượt truy cập của bạn không được bỏ qua bởi Matomo %2$s (cookie Matomo bỏ qua đã không tìm thấy trong trình duyệt của bạn).",
- "ShowAll": "Hiển thị tất cả",
- "Username": "Tên truy nhập"
+ "YourVisitsAreNotIgnored": "%1$s lượt truy cập của bạn không được bỏ qua bởi Matomo %2$s (cookie Matomo bỏ qua đã không tìm thấy trong trình duyệt của bạn)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/lang/zh-cn.json b/plugins/UsersManager/lang/zh-cn.json
index d373051fd2..79df880308 100644
--- a/plugins/UsersManager/lang/zh-cn.json
+++ b/plugins/UsersManager/lang/zh-cn.json
@@ -148,7 +148,6 @@
"RolesHelp": "角色确定用户可以在Matomo中针对特定网站执行的操作。 了解有关%1$s视图%2$s和%3$s管理%4$s角色的更多信息。",
"SaveBasicInfo": "保存基本信息",
"SetPermission": "设定权限",
- "ShowAll": "显示全部",
"SuperUserAccess": "超级用户访问",
"SuperUserAccessManagement": "管理超级用户访问",
"SuperUserAccessManagementGrantMore": "您可以在这里向Matomo的其他用户授予超级用户访问权限。 请谨慎使用此功能。",
diff --git a/plugins/UsersManager/lang/zh-tw.json b/plugins/UsersManager/lang/zh-tw.json
index 9b6ecf09b7..9b4bd74a1f 100644
--- a/plugins/UsersManager/lang/zh-tw.json
+++ b/plugins/UsersManager/lang/zh-tw.json
@@ -1,36 +1,33 @@
{
"UsersManager": {
"2FA": "2FA",
- "UsesTwoFactorAuthentication": "使用兩步驟驗證",
- "TwoFactorAuthentication": "兩步驟驗證",
- "ResetTwoFactorAuthentication": "重置兩步驟驗證",
- "AddUser": "新增使用者",
"AddExistingUser": "新增現有使用者",
"AddNewUser": "新增使用者",
- "EditUser": "編輯使用者",
- "CreateUser": "建立使用者",
- "SaveBasicInfo": "保存基本資料",
+ "AddUser": "新增使用者",
"AllWebsites": "所有網站",
- "AuthTokens": "存取權杖",
"AnonymousAccessConfirmation": "你將要授予匿名使用者這個網站的「檢視」權限。這代表你的分析報表和你的訪客資訊將會被公開,就算沒登入也可查看。你確定要繼續?",
"AnonymousUser": "匿名使用者",
"AnonymousUserHasViewAccess": "注意:使用者 %1$s 有權限 %2$s 存取這個網站。",
"AnonymousUserHasViewAccess2": "你的分析報表跟你的訪客資訊是可以公開查看的。",
"ApplyToAllWebsites": "套用到所有網站",
+ "AuthTokens": "存取權杖",
+ "BasicInformation": "基本資料",
+ "BulkActions": "批量操作",
"ChangeAllConfirm": "你確定要給「%s」訪問所有網站的權限?",
"ClickHereToDeleteTheCookie": "點擊這裡刪除 cookie 讓 Matomo 追蹤你的訪問紀錄",
"ClickHereToSetTheCookieOnDomain": "點擊這裡設定 cookie 讓 Matomo 不會在 %s 中追蹤你的訪問紀錄",
"ConfirmGrantSuperUserAccess": "你真的要授予「%s」超級使用者訪問權限?警告:該使用者將有權訪問所有的網站,並能夠執行管理任務。",
"ConfirmProhibitMySuperUserAccess": "%s,你真的要刪除自己的超級使用者訪問權限?你將失去所有的權限和訪問所有網站,並會從 Matomo 中登出。",
"ConfirmProhibitOtherUsersSuperUserAccess": "你真的要將「%s」的超級使用者權限移除?該使用者將會失去所有權限以及無法訪問所有網站。如果有需要,請記得稍後要重新給其訪問特定網站的權限。",
+ "CreateUser": "建立使用者",
"DeleteConfirm": "你確定要刪除使用者 %s 嗎?",
+ "EditUser": "編輯使用者",
"Email": "Email",
"EmailYourAdministrator": "%1$s透過信件傳送此問題給你的系統管理員%2$s。",
"EnterUsernameOrEmail": "輸入使用者名稱或 Email",
"ExceptionAccessValues": "參數存取必須包含其中一個值:[ %1$s ],目前僅有「%2$s」。",
- "ExceptionMultipleRoleSet": "只能設定一個角色,但是已被設定多個。請只使用其中之一:%s",
- "ExceptionAnonymousNoCapabilities": "你不能給匿名使用者任何權限。",
"ExceptionAnonymousAccessNotPossible": "你只能給匿名使用者設定 %1$s 或 %2$s 存取權限。",
+ "ExceptionAnonymousNoCapabilities": "你不能給匿名使用者任何權限。",
"ExceptionDeleteDoesNotExist": "使用者「%s」不存在,所以無法刪除它。",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "無法刪除使用者「%s」",
"ExceptionEditAnonymous": "匿名使用者無法修改或刪除。因為 Matomo 用來定義一個還未登入的使用者。舉例來說,你可以把「檢視」權限給匿名使用者來公開你的統計資料。",
@@ -40,39 +37,50 @@
"ExceptionInvalidPassword": "密碼長度必須多餘 %1$s 字元。",
"ExceptionInvalidPasswordTooLong": "密碼長度必須少於 %1$s 字元。",
"ExceptionLoginExists": "使用者名稱「%s」已經存在。",
+ "ExceptionMultipleRoleSet": "只能設定一個角色,但是已被設定多個。請只使用其中之一:%s",
+ "ExceptionNoValueForUsernameOrEmail": "請輸入使用者名稱或 Email。",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth 是以 MD5 加密的密碼(32 個字元字串)。在使用此方法前請先呼叫 md5() 函式。",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "無法刪除使用者「%s」的超級使用者權限。",
"ExceptionSuperUserAccess": "該使用者擁有超級使用者訪問權限,並且已有權限訪問和修改 Matomo 中的所有網站。你可以移除該使用者的超級使用者訪問權限,然後再試一次。",
- "ExceptionUserHasSuperUserAccess": "使用者「%s」擁有超級使用者存取權限,並且已有權限存取和修改 Matomo 中的所有網站。你可以移除該使用者的超級使用者存取權限,然後再試一次。",
"ExceptionUserDoesNotExist": "使用者「%s」不存在。",
- "ExceptionYouMustGrantSuperUserAccessFirst": "必須至少一個有使用者有超級使用者權限。請先將超級使用者權限授予給另一個使用者。",
+ "ExceptionUserHasSuperUserAccess": "使用者「%s」擁有超級使用者存取權限,並且已有權限存取和修改 Matomo 中的所有網站。你可以移除該使用者的超級使用者存取權限,然後再試一次。",
"ExceptionUserHasViewAccessAlready": "這個使用者已經有權限存取這個網站了。",
- "ExceptionNoValueForUsernameOrEmail": "請輸入使用者名稱或 Email。",
+ "ExceptionYouMustGrantSuperUserAccessFirst": "必須至少一個有使用者有超級使用者權限。請先將超級使用者權限授予給另一個使用者。",
"ExcludeVisitsViaCookie": "以 cookie 排除你的訪問紀錄",
"ForAnonymousUsersReportDateToLoadByDefault": "匿名使用者預設載入日期",
"GiveUserAccess": "給予「%1$s」在 %3$s 中的 %2$s 權限。",
"GiveViewAccess": "給予 %1$s 訪問權限",
- "GiveViewAccessTitle": "給現有的使用者查看 %s 的報表權限",
"GiveViewAccessInstructions": "要給現有的使用者查看 %s 的報表權限,輸入他的使用者名稱或 Email。",
+ "GiveViewAccessTitle": "給現有的使用者查看 %s 的報表權限",
"InjectedHostCannotChangePwd": "你目前正使用未知的身分訪問(%1$s)。請先解決此問題後才能變更你的密碼。",
"LastSeen": "最後訪問",
"MainDescription": "決定哪個使用者有權訪問你的網站。你也可以在網站選擇清單中選擇「套用到所有網站」來一次給予所有網站的權限。",
"ManageAccess": "管理權限",
+ "ManageUsersDesc": "建立新的使用者或更新現有使用者。你也可以在下方設定他們的權限。",
"MenuAnonymousUserSettings": "匿名使用者設定",
- "MenuUsers": "使用者",
- "MenuUserSettings": "使用者設定",
"MenuPersonal": "個人",
- "PersonalSettings": "個人化設定",
- "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "注意:你不能更改本區塊中的設定,因為你沒有任何可以訪問網站的匿名使用者。",
+ "MenuUserSettings": "使用者設定",
+ "MenuUsers": "使用者",
"NoUsersExist": "還沒有任何使用者。",
+ "NoteNoAnonymousUserAccessSettingsWontBeUsed2": "注意:你不能更改本區塊中的設定,因為你沒有任何可以訪問網站的匿名使用者。",
+ "Permissions": "權限",
+ "PersonalSettings": "個人化設定",
"PluginDescription": "使用者管理讓你可以新增、編輯現有使用者和給他們訪問或管理網站的權限。",
"PrivAdmin": "管理員",
- "PrivWrite": "編輯",
"PrivNone": "無法存取",
"PrivView": "檢視",
+ "PrivWrite": "編輯",
+ "RemovePermissions": "移除權限",
"RemoveUserAccess": "移除「%1$s」在 %2$s 中的權限。",
"ReportDateToLoadByDefault": "預設載入日期",
"ReportToLoadByDefault": "預設載入報表",
+ "ResetTwoFactorAuthentication": "重置兩步驟驗證",
+ "Role": "角色",
+ "RoleFor": "網站角色設定",
+ "RolesHelp": "角色決定了使用者能在 Matomo 中特定網站上進行的操作。了解更多關於%1$s檢視%2$s和%3$s管理員%4$s角色。",
+ "SaveBasicInfo": "保存基本資料",
+ "SetPermission": "設定權限",
+ "SuperUserAccess": "超級使用者權限",
"SuperUserAccessManagement": "管理超級使用者訪問權限",
"SuperUserAccessManagementGrantMore": "你可以在這裡授予超級使用者訪問其他 Matomo 使用者的權限。請小心使用此功能。",
"SuperUserAccessManagementMainDescription": "超級使用者擁有最高權限。他們可以執行所有的管理任務,如添加新的網站進行監控,增加使用者,修改使用者權限,啟用和停用插件,甚至從市集安裝新的外掛。",
@@ -80,26 +88,17 @@
"ThereAreCurrentlyNRegisteredUsers": "目前有 %s 位使用者。",
"TokenAuth": "API 存取權杖",
"TokenRegenerateTitle": "重新產生",
+ "TwoFactorAuthentication": "兩步驟驗證",
"TypeYourPasswordAgain": "再輸入一次新的密碼。",
"User": "使用者",
- "UserHasPermission": "%1$s 目前有 %3$s 中的 %2$s 權限。",
"UserHasNoPermission": "%1$s 目前%2$s %3$s",
+ "UserHasPermission": "%1$s 目前有 %3$s 中的 %2$s 權限。",
+ "Username": "使用者名稱",
"UsersManagement": "使用者管理",
"UsersManagementMainDescription": "建立新的使用者或更新現有使用者。你可以在上方設定他們的權限。",
+ "UsesTwoFactorAuthentication": "使用兩步驟驗證",
"YourUsernameCannotBeChanged": "你的使用者名稱無法變更。",
"YourVisitsAreIgnoredOnDomain": "%1$s你的訪問紀錄已在 %2$s 被 Matomo 忽略%3$s(在你的瀏覽器中找到忽略 Matomo 的 cookie)",
- "YourVisitsAreNotIgnored": "%1$s你的訪問紀錄沒有被 Matomo 忽略%2$s(在你的瀏覽器中找不到忽略 Matomo 的 cookie)",
- "ManageUsersDesc": "建立新的使用者或更新現有使用者。你也可以在下方設定他們的權限。",
- "BulkActions": "批量操作",
- "SetPermission": "設定權限",
- "RemovePermissions": "移除權限",
- "RolesHelp": "角色決定了使用者能在 Matomo 中特定網站上進行的操作。了解更多關於%1$s檢視%2$s和%3$s管理員%4$s角色。",
- "Role": "角色",
- "BasicInformation": "基本資料",
- "Permissions": "權限",
- "SuperUserAccess": "超級使用者權限",
- "ShowAll": "顯示全部",
- "Username": "使用者名稱",
- "RoleFor": "網站角色設定"
+ "YourVisitsAreNotIgnored": "%1$s你的訪問紀錄沒有被 Matomo 忽略%2$s(在你的瀏覽器中找不到忽略 Matomo 的 cookie)"
}
-} \ No newline at end of file
+}
diff --git a/plugins/UsersManager/templates/anonymousSettings.twig b/plugins/UsersManager/templates/anonymousSettings.twig
index 0e8369a8b9..e030c3f3fc 100644
--- a/plugins/UsersManager/templates/anonymousSettings.twig
+++ b/plugins/UsersManager/templates/anonymousSettings.twig
@@ -4,42 +4,15 @@
{% block content %}
{% if isSuperUser %}
-<div piwik-content-block content-title="{{ title|e('html_attr') }}">
- {% if anonymousSites|length == 0 %}
-
- <div class="alert alert-info">
- {{ 'UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2'|translate }}
- </div>
-
- {% else %}
-
- <div piwik-form ng-controller="AnonymousSettingsController as anonymousSettings">
-
- <div piwik-field uicontrol="radio" name="anonymousDefaultReport"
- ng-model="anonymousSettings.defaultReport"
- introduction="{{ 'UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess'|translate|e('html_attr') }}"
- value="{{ anonymousDefaultReport }}"
- options="{{ defaultReportOptions|json_encode }}">
- </div>
-
- <div piwik-field uicontrol="select" name="anonymousDefaultReportWebsite"
- ng-model="anonymousSettings.defaultReportWebsite"
- options="{{ anonymousSites|json_encode }}"
- value="{{ anonymousDefaultSite }}">
- </div>
-
- <div piwik-field uicontrol="radio" name="anonymousDefaultDate"
- ng-model="anonymousSettings.defaultDate"
- introduction="{{ 'UsersManager_ForAnonymousUsersReportDateToLoadByDefault'|translate|e('html_attr') }}"
- value="{{ anonymousDefaultDate }}"
- options="{{ availableDefaultDates|json_encode }}">
- </div>
-
- <div piwik-save-button saving="anonymousSettings.loading" onconfirm="anonymousSettings.save()"></div>
-
- </div>
-
- {% endif %}
-</div>
+<div
+ matomo-anonymous-settings
+ title="{{ title|json_encode|e('html_attr') }}"
+ anonymous-sites="{{ anonymousSites|json_encode|e('html_attr') }}"
+ anonymous-default-report="{{ anonymousDefaultReport|json_encode|e('html_attr') }}"
+ anonymous-default-site="{{ anonymousDefaultSite|json_encode|e('html_attr') }}"
+ anonymous-default-date="{{ anonymousDefaultDate|json_encode|e('html_attr') }}"
+ available-default-dates="{{ availableDefaultDates|json_encode|e('html_attr') }}"
+ default-report-options="{{ defaultReportOptions|json_encode|e('html_attr') }}"
+></div>
{% endif %}
{% endblock %} \ No newline at end of file
diff --git a/plugins/UsersManager/templates/userSettings.twig b/plugins/UsersManager/templates/userSettings.twig
index 237f6c21af..7bc6199b33 100644
--- a/plugins/UsersManager/templates/userSettings.twig
+++ b/plugins/UsersManager/templates/userSettings.twig
@@ -3,115 +3,26 @@
{% set title %}{{ 'UsersManager_PersonalSettings'|translate }}{% endset %}
{% block content %}
-
-<div piwik-content-block content-title="{{ title|e('html_attr') }}" feature="true">
- <form id="userSettingsTable" piwik-form ng-controller="PersonalSettingsController as personalSettings">
-
- <div piwik-field uicontrol="text" name="username"
- data-title="{{ 'General_Username'|translate|e('html_attr') }}"
- value="{{ userLogin }}" data-disabled="true"
- ng-model="personalSettings.username"
- inline-help="{{ 'UsersManager_YourUsernameCannotBeChanged'|translate|e('html_attr') }}">
- </div>
-
- {% if isUsersAdminEnabled %}
- <div piwik-field uicontrol="text" name="email"
- ng-model="personalSettings.email"
- ng-change="personalSettings.requirePasswordConfirmation()"
- maxlength="100"
- data-title="{{ 'UsersManager_Email'|translate|e('html_attr') }}"
- value="{{ userEmail }}">
- </div>
- {% endif %}
-
- <div id="languageHelp" class="inline-help-node">
- <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/translations/">
- {{ 'LanguagesManager_AboutPiwikTranslations'|translate }}</a>
- </div>
-
- <div piwik-field uicontrol="select" name="language"
- ng-model="personalSettings.language"
- data-title="{{ 'General_Language'|translate|e('html_attr') }}"
- options="{{ languageOptions|json_encode }}"
- inline-help="#languageHelp"
- value="{{ currentLanguageCode }}">
- </div>
-
- <div piwik-field uicontrol="select" name="timeformat"
- ng-model="personalSettings.timeformat"
- data-title="{{ 'General_TimeFormat'|translate|e('html_attr') }}"
- value="{{ currentTimeformat }}" options="{{ timeFormats|json_encode }}">
- </div>
-
- <div piwik-field uicontrol="radio" name="defaultReport"
- ng-model="personalSettings.defaultReport"
- introduction="{{ 'UsersManager_ReportToLoadByDefault'|translate|e('html_attr') }}"
- data-title="{{ 'General_AllWebsitesDashboard'|translate|e('html_attr') }}"
- value="{{ defaultReport }}" options="{{ defaultReportOptions|json_encode }}">
- </div>
-
- <div piwik-siteselector
- ng-model="personalSettings.site"
- show-selected-site="true"
- class="sites_autocomplete"
- siteid="{{ defaultReportIdSite }}"
- sitename="{{ defaultReportSiteName|rawSafeDecoded }}"
- switch-site-on-select="false"
- show-all-sites-item="false"
- showselectedsite="true"
- id="defaultReportSiteSelector"
- ></div>
-
- <div piwik-field uicontrol="radio" name="defaultDate"
- ng-model="personalSettings.defaultDate"
- introduction="{{ 'UsersManager_ReportDateToLoadByDefault'|translate|e('html_attr') }}"
- value="{{ defaultDate }}" options="{{ availableDefaultDates|json_encode }}">
- </div>
-
- <div piwik-save-button onconfirm="personalSettings.save()"
- saving="personalSettings.loading"></div>
-
- <div class="modal" id="confirmChangesWithPassword">
- <div class="modal-content">
- <h2>{{ 'UsersManager_ConfirmWithPassword'|translate }}</h2>
-
- <div piwik-field uicontrol="password" name="currentPassword" autocomplete="off"
- ng-model="personalSettings.passwordCurrent"
- full-width="true"
- data-title="{{ 'UsersManager_YourCurrentPassword'|translate|e('html_attr') }}"
- value="">
- </div>
- </div>
- <div class="modal-footer">
- <a href="javascript:void(0)" class="modal-action btn" ng-click="personalSettings.save()">{{ 'General_Ok'|translate }}</a>
- <a href="javascript:void(0)" class="modal-action modal-close modal-no" ng-click="personalSettings.cancelSave()">{{ 'General_Cancel'|translate }}</a>
- </div>
- </div>
-
- </form>
-</div>
+<div
+ matomo-personal-settings
+ is-users-admin-enabled="{{ isUsersAdminEnabled|json_encode|e('html_attr') }}"
+ title="{{ title|json_encode|e('html_attr') }}"
+ user-login="{{ userLogin|json_encode|e('html_attr') }}"
+ user-email="{{ userEmail|json_encode|e('html_attr') }}"
+ current-language-code="{{ currentLanguageCode|json_encode|e('html_attr') }}"
+ language-options="{{ languageOptions|json_encode|e('html_attr') }}"
+ current-timeformat="{{ currentTimeformat|json_encode|e('html_attr') }}"
+ time-formats="{{ timeFormats|json_encode|e('html_attr') }}"
+ default-report="{{ defaultReport|json_encode|e('html_attr') }}"
+ default-report-options="{{ defaultReportOptions|json_encode|e('html_attr') }}"
+ default-report-id-site="{{ defaultReportIdSite|json_encode|e('html_attr') }}"
+ default-report-site-name="{{ defaultReportSiteName|json_encode|e('html_attr') }}"
+ default-date="{{ defaultDate|json_encode|e('html_attr') }}"
+ available-default-dates="{{ availableDefaultDates|json_encode|e('html_attr') }}"
+></div>
{% if showNewsletterSignup %}
- <div ng-controller="PersonalSettingsController as personalSettings">
- <div piwik-content-block id="newsletterSignup"
- ng-show="personalSettings.showNewsletterSignup"
- content-title="{{ 'UsersManager_NewsletterSignupTitle'|translate|e('html_attr') }}">
-
- <div piwik-field uicontrol="checkbox" name="newsletterSignupCheckbox" id="newsletterSignupCheckbox"
- ng-model="personalSettings.newsletterSignupCheckbox"
- full-width="true"
- data-title="{{ 'UsersManager_NewsletterSignupMessage'|translate('<a href="https://matomo.org/privacy-policy/" target="_blank">', '</a>')|e('html_attr') }}"
- >
- </div>
-
- <div piwik-save-button id="newsletterSignupBtn"
- onconfirm="personalSettings.signupForNewsletter()"
- data-disabled="!personalSettings.newsletterSignupCheckbox"
- value="{{ '{{ personalSettings.newsletterSignupButtonTitle }}'|raw }}"
- saving="personalSettings.isProcessingNewsletterSignup">
- </div>
- </div>
- </div>
+ <div matomo-newsletter-settings></div>
{% endif %}
<div piwik-plugin-settings mode="user"></div>
diff --git a/plugins/UsersManager/tests/Integration/ModelTest.php b/plugins/UsersManager/tests/Integration/ModelTest.php
index c19e974b9a..6dd9f6b881 100644
--- a/plugins/UsersManager/tests/Integration/ModelTest.php
+++ b/plugins/UsersManager/tests/Integration/ModelTest.php
@@ -10,20 +10,15 @@ namespace Piwik\Plugins\UsersManager\tests\Integration;
use Piwik\Access\Role\View;
use Piwik\Access\Role\Write;
-use Piwik\Auth\Password;
use Piwik\Common;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
use Piwik\Plugins\UsersManager\API;
use Piwik\Plugins\UsersManager\Model;
-use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Access\Role\Admin;
/**
diff --git a/plugins/UsersManager/tests/Integration/UsersManagerTest.php b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
index 0599554b34..6a8bc89220 100644
--- a/plugins/UsersManager/tests/Integration/UsersManagerTest.php
+++ b/plugins/UsersManager/tests/Integration/UsersManagerTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Plugins\UsersManager\tests\Integration;
use Piwik\Access;
use Piwik\Auth\Password;
-use Piwik\Common;
use Piwik\Date;
use Piwik\Option;
use Piwik\Plugins\SitesManager\API as APISitesManager;
diff --git a/plugins/UsersManager/tests/UI/UserSettings_spec.js b/plugins/UsersManager/tests/UI/UserSettings_spec.js
index ffc0eb2e2b..a2023acf11 100644
--- a/plugins/UsersManager/tests/UI/UserSettings_spec.js
+++ b/plugins/UsersManager/tests/UI/UserSettings_spec.js
@@ -76,7 +76,7 @@ describe("UserSettings", function () {
$('#userSettingsTable input#email').val('testlogin123@example.com').change();
});
await page.waitForTimeout(100);
- await page.click('#userSettingsTable [piwik-save-button] .btn');
+ await page.click('#userSettingsTable .matomo-save-button .btn');
await page.waitForTimeout(500); // wait for animation
let pageWrap = await page.$('.modal.open');
diff --git a/plugins/UsersManager/tests/UI/UsersManager_spec.js b/plugins/UsersManager/tests/UI/UsersManager_spec.js
index b9f2c51921..1ff59e8477 100644
--- a/plugins/UsersManager/tests/UI/UsersManager_spec.js
+++ b/plugins/UsersManager/tests/UI/UsersManager_spec.js
@@ -466,7 +466,7 @@ describe("UsersManager", function () {
it('should go back to the manage users page when the back link is clicked', async function () {
await page.click('.userEditForm .entityCancelLink');
- await page.waitForSelector('piwik-paged-users-list');
+ await page.waitForSelector('.pagedUsersList');
await page.evaluate(function () { // remove filter so new user shows
$('#user-text-filter').val('').change();
@@ -504,7 +504,7 @@ describe("UsersManager", function () {
});
it('should show error when wrong password entered', async function () {
- await page.type('.modal.open #currentUserPassword', 'test123456');
+ await page.type('.modal.open #currentUserPasswordChangePwd', 'test123456');
var btnNo = await page.jQuery('.change-password-modal .modal-close:not(.modal-no):visible');
await btnNo.click();
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UserSettings_asks_confirmation.png b/plugins/UsersManager/tests/UI/expected-screenshots/UserSettings_asks_confirmation.png
index 4fbb807a72..90ee5faaf0 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UserSettings_asks_confirmation.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UserSettings_asks_confirmation.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ed7c2aaa7a060410004f1b8d22eca038465a1c72254b2615fbeb7bb27687e168
-size 16213
+oid sha256:c9ce5c7a28757bc04c97626dd2df8470952194338da91f71edebe57239ec0df0
+size 16206
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
index 9b7294a945..b4ddae6abf 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_email.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:322e4af33f14372e3cdeee30ff3a894b4d79c31b0e5191a6b44e82b8840c3d1b
-size 43087
+oid sha256:664a67f71e227435655611321244984e8fd45c50307e6a78a01088626f39adec
+size 43505
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
index df66b655bf..68148fe8be 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_by_login.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c29ed387022c7048504661dfb838a51e8c70b68f637bb6dbadc84ed47d7ebfce
-size 41205
+oid sha256:d93ccc782e8833251fff45b5e27c4f7b75d69fca7de6f4df17424fe82d24a00d
+size 41616
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
index 49d0c49a37..f858369b34 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_add_user_not_exists.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b81cd40cfebf00039992dd4ba2d6ba6fc23c16fe1a15098f11e6d450fbe0dd40
-size 38944
+oid sha256:1ae16a952b6d81218e48df3b9f4f5fb32fa48ee8bb7c9260d0c0821563bdd0da
+size 39356
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_existing_user_modal.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_existing_user_modal.png
index 244275bc14..8c5d9c15db 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_existing_user_modal.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_existing_user_modal.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9fa76ca9a9d819b5a95cd787831165498117f3d2be1cb368fad779c771a30f68
-size 9166
+oid sha256:25190bcc743a54cf01dcdc08c91ce48a2c58cb26eea6b7f2bf7ab875bb94045f
+size 9065
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
index 55e399c6cd..45ae1ea2ef 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_admin_view_admin_load.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:31fdb55a0a1f1894a8bb5dc898a753ae87a088c07a5ac1232be5be4efe2ecc4a
-size 106427
+oid sha256:953227e3282c4b1fba3ec4702181a243e5d18b8fc70f17acee7da982997d784c
+size 106870
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
index e763718e7c..06dca069c8 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_edit_user_basic_confirmed_wrong_password.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:098ac1a3d84991f550f53a186a723eac9b438943508b5c81f2071f735b60396c
-size 31199
+oid sha256:c566d17dbe717f31a674a5f620f0cdbc2a7fb3d00e5c3743054b527029dbbd30
+size 31042
diff --git a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_select_multiple.png b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_select_multiple.png
index 80374d4346..830864f35e 100644
--- a/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_select_multiple.png
+++ b/plugins/UsersManager/tests/UI/expected-screenshots/UsersManager_permissions_select_multiple.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ddf93c313a84367b78c4787fdc4d45c30a91b3d0c9165247ead77b8419f697cc
-size 91927
+oid sha256:76e20b38c58d6b39b66a00eee1ff00223b54f23faf0c4f70a9a9a49e8e28419c
+size 91941
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.js b/plugins/UsersManager/vue/dist/UsersManager.umd.js
index 94c94d7b08..e4ab913ac6 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.js
@@ -129,6 +129,10 @@ __webpack_require__.d(__webpack_exports__, "CapabilitiesEdit", function() { retu
__webpack_require__.d(__webpack_exports__, "UserPermissionsEdit", function() { return /* reexport */ UserPermissionsEdit; });
__webpack_require__.d(__webpack_exports__, "UserEditForm", function() { return /* reexport */ UserEditForm; });
__webpack_require__.d(__webpack_exports__, "PagedUsersList", function() { return /* reexport */ PagedUsersList; });
+__webpack_require__.d(__webpack_exports__, "UsersManager", function() { return /* reexport */ UsersManager; });
+__webpack_require__.d(__webpack_exports__, "NewsletterSettings", function() { return /* reexport */ AnonymousSettings; });
+__webpack_require__.d(__webpack_exports__, "AnonymousSettings", function() { return /* reexport */ NewsletterSettings; });
+__webpack_require__.d(__webpack_exports__, "PersonalSettings", function() { return /* reexport */ PersonalSettings; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
@@ -1438,102 +1442,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=3d9513be
+// 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
-var UserEditFormvue_type_template_id_3d9513be_hoisted_1 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_1 = {
class: "row"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_2 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_2 = {
key: 0,
class: "col m2 entityList"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_3 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_3 = {
class: "listCircle"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_4 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_4 = {
key: 0,
class: "icon-warning"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var UserEditFormvue_type_template_id_6467f54f_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_3d9513be_hoisted_6 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_6 = {
href: "",
class: "entityCancelLink"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_7 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_7 = {
class: "visibleTab col m10"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_8 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_8 = {
key: 0,
class: "basic-info-tab"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_9 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_9 = {
key: 0,
class: "entityCancel"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_10 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_10 = {
key: 1,
class: "user-permissions"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_11 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_11 = {
key: 0
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_12 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_12 = {
key: 1,
class: "alert alert-info"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_13 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_13 = {
key: 2,
class: "superuser-access"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_14 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_14 = {
class: "superuser-confirm-modal modal",
ref: "superUserConfirmModal"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_15 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_15 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_16 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_16 = {
key: 0
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_17 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_17 = {
key: 1
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_18 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_18 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_19 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_19 = {
key: 3,
class: "twofa-reset"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_20 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_20 = {
class: "resetTwoFa"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_21 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_21 = {
class: "twofa-confirm-modal modal",
ref: "twofaConfirmModal"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_22 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_22 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_23 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_23 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_24 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_24 = {
class: "change-password-modal modal",
ref: "changePasswordModal"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_25 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_25 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_3d9513be_hoisted_26 = ["innerHTML"];
-var UserEditFormvue_type_template_id_3d9513be_hoisted_27 = {
+var UserEditFormvue_type_template_id_6467f54f_hoisted_26 = ["innerHTML"];
+var UserEditFormvue_type_template_id_6467f54f_hoisted_27 = {
class: "modal-footer"
};
-function UserEditFormvue_type_template_id_3d9513be_render(_ctx, _cache, $props, $setup, $data, $options) {
+function UserEditFormvue_type_template_id_6467f54f_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");
@@ -1551,7 +1555,7 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_3d9513be_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", UserEditFormvue_type_template_id_3d9513be_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_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", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'basic'
}, "menuBasicInfo"])
@@ -1572,7 +1576,7 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_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", {
key: 0,
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'superuser'
@@ -1592,12 +1596,12 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_6467f54f_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_3d9513be_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_3d9513be_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_3d9513be_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_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, {
modelValue: _ctx.theUser.login,
"onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.theUser.login = $event;
@@ -1650,13 +1654,13 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_6467f54f_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_3d9513be_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_3d9513be_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_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, {
"user-login": _ctx.theUser.login,
onUserHasAccessDetected: _cache[11] || (_cache[11] = function ($event) {
return _ctx.userHasAccess = $event.hasAccess;
@@ -1666,7 +1670,7 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_3d9513be_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_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, {
modelValue: _ctx.superUserAccessChecked,
"onUpdate:modelValue": _cache[13] || (_cache[13] = function ($event) {
return _ctx.superUserAccessChecked = $event;
@@ -1678,7 +1682,7 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_3d9513be_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_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, {
modelValue: _ctx.passwordConfirmationForSuperUser,
"onUpdate:modelValue": _cache[15] || (_cache[15] = function ($event) {
return _ctx.passwordConfirmationForSuperUser = $event;
@@ -1688,7 +1692,7 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_6467f54f_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) {
@@ -1705,23 +1709,23 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_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_3d9513be_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_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, {
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_3d9513be_hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_3d9513be_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_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, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[19] || (_cache[19] = function ($event) {
return _ctx.passwordConfirmation = $event;
}),
uicontrol: "password",
- name: "currentUserPassword",
+ name: "currentUserPasswordTwoFa",
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_3d9513be_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_6467f54f_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) {
@@ -1737,19 +1741,19 @@ function UserEditFormvue_type_template_id_3d9513be_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_3d9513be_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_3d9513be_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
+ }, 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_3d9513be_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, {
+ }, 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, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[22] || (_cache[22] = function ($event) {
return _ctx.passwordConfirmation = $event;
}),
uicontrol: "password",
- name: "currentUserPassword",
+ name: "currentUserPasswordChangePwd",
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_3d9513be_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_6467f54f_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) {
@@ -1767,7 +1771,7 @@ function UserEditFormvue_type_template_id_3d9513be_render(_ctx, _cache, $props,
_: 1
}, 8, ["class", "content-title"]);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=3d9513be
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=6467f54f
// 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
@@ -1951,7 +1955,7 @@ var UserEditFormvue_type_script_lang_ts_window = window,
dismissible: false,
onOpenEnd: function onOpenEnd() {
_this4.isShowingPasswordConfirm = false;
- UserEditFormvue_type_script_lang_ts_$('.modal.open #currentUserPassword').focus().off('keypress').keypress(onEnter);
+ UserEditFormvue_type_script_lang_ts_$('.modal.open #currentUserPasswordChangePwd').focus().off('keypress').keypress(onEnter);
}
}).modal('open');
},
@@ -1994,10 +1998,6 @@ var UserEditFormvue_type_script_lang_ts_window = window,
password: this.isPasswordModified && this.theUser.password ? this.theUser.password : undefined,
passwordConfirmation: this.passwordConfirmation ? this.passwordConfirmation : undefined,
email: this.theUser.email
- }).catch(function (e) {
- _this6.isSavingUserInfo = false;
- _this6.passwordConfirmation = '';
- throw e;
}).then(function () {
_this6.isSavingUserInfo = false;
_this6.passwordConfirmation = '';
@@ -2007,6 +2007,9 @@ var UserEditFormvue_type_script_lang_ts_window = window,
_this6.resetPasswordVar();
_this6.showUserSavedNotification();
+ }).catch(function () {
+ _this6.isSavingUserInfo = false;
+ _this6.passwordConfirmation = '';
});
},
setSuperUserAccessChecked: function setSuperUserAccessChecked() {
@@ -2039,7 +2042,7 @@ var UserEditFormvue_type_script_lang_ts_window = window,
-UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_3d9513be_render
+UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_6467f54f_render
/* harmony default export */ var UserEditForm = (UserEditFormvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.adapter.ts
@@ -2084,202 +2087,199 @@ UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_3d
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=e9714b9a
+// 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
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_1 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_1 = {
class: "userListFilters row"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_2 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_2 = {
class: "col s12 m12 l6"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_3 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_3 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_4 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_4 = {
id: "user-list-bulk-actions",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_5 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_5 = {
class: "dropdown-trigger",
"data-target": "bulk-set-access"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_6 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_6 = {
id: "bulk-set-access",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_7 = ["onClick"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_8 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_7 = ["onClick"];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_8 = {
key: 0
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_9 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_9 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_10 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_10 = {
class: "permissions-for-selector"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_11 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_11 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_12 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_12 = {
key: 0,
class: "input-field col s12 m12 l6 users-list-pagination-container"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_13 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_13 = {
class: "usersListPagination"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_14 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_14 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_15 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_15 = {
class: "counter"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_16 = {
- key: 0
-};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_17 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_16 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_18 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_17 = {
key: 0,
class: "roles-help-notification"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_19 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_20 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_18 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_19 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_21 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_20 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+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_e9714b9a_hoisted_23 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_22 = {
class: "first"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_24 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_23 = {
class: "role_header"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_25 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_24 = {
style: {
"margin-right": "3.5px"
}
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_26 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-help"
}, null, -1);
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_27 = [PagedUsersListvue_type_template_id_e9714b9a_hoisted_26];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_28 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_26 = [PagedUsersListvue_type_template_id_2bc7ec27_hoisted_25];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_27 = {
key: 0
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_29 = ["title"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_30 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_28 = ["title"];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_29 = {
key: 2
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_31 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_30 = {
class: "actions-cell-header"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_32 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_31 = {
key: 0,
class: "select-all-row"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_33 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_32 = {
colspan: "8"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_34 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_33 = {
key: 0
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_35 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_36 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_37 = {
+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 = {
key: 1
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_38 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_39 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_40 = ["id"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_41 = {
+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 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_42 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_41 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_43 = ["id", "onUpdate:modelValue"];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_42 = ["id", "onUpdate:modelValue"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_44 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+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_e9714b9a_hoisted_45 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_44 = {
id: "userLogin"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_46 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_45 = {
class: "access-cell"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_47 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_46 = {
key: 0,
id: "email"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_48 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_47 = {
key: 1,
id: "twofa"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_49 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_48 = {
key: 0,
class: "icon-ok"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_50 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_49 = {
key: 1,
class: "icon-close"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_51 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_50 = {
key: 2,
id: "last_seen"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_52 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_51 = {
class: "center actions-cell"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_53 = ["onClick"];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_52 = ["onClick"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_54 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-edit"
}, null, -1);
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_55 = [PagedUsersListvue_type_template_id_e9714b9a_hoisted_54];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_56 = ["onClick"];
+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_e9714b9a_hoisted_57 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-delete"
}, null, -1);
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_58 = [PagedUsersListvue_type_template_id_e9714b9a_hoisted_57];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_59 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_57 = [PagedUsersListvue_type_template_id_2bc7ec27_hoisted_56];
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_58 = {
class: "delete-user-confirm-modal modal",
ref: "deleteUserConfirmModal"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_60 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_59 = {
class: "modal-content"
};
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_61 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_62 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_e9714b9a_hoisted_63 = {
+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 = {
class: "modal-footer"
};
-var _hoisted_64 = {
+var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_63 = {
class: "change-user-role-confirm-modal modal",
ref: "changeUserRoleConfirmModal"
};
-var _hoisted_65 = {
+var _hoisted_64 = {
class: "modal-content"
};
-var _hoisted_66 = ["innerHTML"];
-var _hoisted_67 = {
+var _hoisted_65 = ["innerHTML"];
+var _hoisted_66 = {
key: 1
};
+var _hoisted_67 = ["innerHTML"];
var _hoisted_68 = ["innerHTML"];
-var _hoisted_69 = ["innerHTML"];
-var _hoisted_70 = {
+var _hoisted_69 = {
class: "modal-footer"
};
-function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PagedUsersListvue_type_template_id_2bc7ec27_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");
@@ -2296,13 +2296,13 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_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_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", {
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_e9714b9a_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_e9714b9a_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_e9714b9a_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_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) {
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", {
@@ -2313,7 +2313,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props
_ctx.showAccessChangeConfirm();
}, ["prevent"])
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_e9714b9a_hoisted_7)]);
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_2bc7ec27_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) {
@@ -2322,12 +2322,12 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_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_2bc7ec27_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_e9714b9a_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_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_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, {
"model-value": _ctx.userTextFilter,
"onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
return _ctx.onUserTextFilterChange($event);
@@ -2336,7 +2336,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_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_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, {
"model-value": _ctx.accessLevelFilter,
"onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
_ctx.accessLevelFilter = $event;
@@ -2351,24 +2351,27 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_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_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", {
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_e9714b9a_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_e9714b9a_hoisted_15, [!_ctx.isLoadingUsers ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_e9714b9a_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Pagination', _ctx.paginationLowerBound, _ctx.paginationUpperBound, _ctx.totalEntries)), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.isLoadingUsers ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_ActivityIndicator, {
- key: 1,
+ }, [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", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ visibility: _ctx.isLoadingUsers ? 'hidden' : 'visible'
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Pagination', _ctx.paginationLowerBound, _ctx.paginationUpperBound, _ctx.totalEntries)), 3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isLoadingUsers
- }, null, 8, ["loading"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["loading"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["btn next", {
disabled: _ctx.searchParams.offset + _ctx.searchParams.limit >= _ctx.totalEntries
}]),
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_e9714b9a_hoisted_17, 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_e9714b9a_hoisted_18, [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_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, {
context: "info",
type: "persistent",
noclear: true
@@ -2376,7 +2379,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props
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_e9714b9a_hoisted_19)];
+ }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_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, {
@@ -2386,7 +2389,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_e9714b9a_hoisted_21, [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_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", {
type: "checkbox",
id: "paged_users_select_all",
checked: "checked",
@@ -2396,7 +2399,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_22])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_e9714b9a_hoisted_23, 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_e9714b9a_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_e9714b9a_hoisted_25, 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_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", {
href: "",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["helpIcon", {
sticky: _ctx.isRoleHelpToggled
@@ -2404,7 +2407,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_27, 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_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, {
class: "permissions-for-selector",
"model-value": _ctx.permissionsForSite,
"onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
@@ -2414,38 +2417,38 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_28, 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_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", {
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_e9714b9a_hoisted_29)) : 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_e9714b9a_hoisted_30, 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_e9714b9a_hoisted_31, [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_e9714b9a_hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_e9714b9a_hoisted_33, [!_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_e9714b9a_hoisted_34, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, 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>")),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_35), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_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_e9714b9a_hoisted_36)])) : 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_e9714b9a_hoisted_37, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, 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>")),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_38), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_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_e9714b9a_hoisted_39)])) : 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) {
+ }, 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) {
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_e9714b9a_hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_e9714b9a_hoisted_42, [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_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", {
type: "checkbox",
id: "paged_users_select_row".concat(index),
"onUpdate:modelValue": function onUpdateModelValue($event) {
@@ -2454,7 +2457,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props
onClick: _cache[12] || (_cache[12] = function ($event) {
return _ctx.onRowSelected();
})
- }, null, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_43), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.selectedRows[index]]]), PagedUsersListvue_type_template_id_e9714b9a_hoisted_44])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_e9714b9a_hoisted_45, 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_e9714b9a_hoisted_46, [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_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, {
"model-value": user.role,
"onUpdate:modelValue": function onUpdateModelValue($event) {
_ctx.userToChange = user;
@@ -2465,7 +2468,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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_e9714b9a_hoisted_47, 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_e9714b9a_hoisted_48, [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_e9714b9a_hoisted_49)) : 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_e9714b9a_hoisted_50)) : 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_e9714b9a_hoisted_51, 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_e9714b9a_hoisted_52, [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_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", {
key: 0,
class: "edituser table-action",
title: "Edit",
@@ -2474,7 +2477,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props
user: user
});
}
- }, PagedUsersListvue_type_template_id_e9714b9a_hoisted_55, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_53)) : 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_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", {
key: 1,
class: "deleteuser table-action",
title: "Delete",
@@ -2483,17 +2486,17 @@ function PagedUsersListvue_type_template_id_e9714b9a_render(_ctx, _cache, $props
_ctx.showDeleteConfirm();
}
- }, PagedUsersListvue_type_template_id_e9714b9a_hoisted_58, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_56)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_40);
+ }, 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);
}), 128))])], 2), [[_directive_content_table]])];
}),
_: 1
- }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_hoisted_59, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_hoisted_60, [_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_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", {
key: 0,
innerHTML: _ctx.translate('UsersManager_DeleteUserConfirmSingle', "<strong>".concat(_ctx.userToChange.login, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_61)) : 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", {
+ }, 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", {
key: 1,
innerHTML: _ctx.translate('UsersManager_DeleteUserConfirmMultiple', "<strong>".concat(_ctx.affectedUsersCount, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_e9714b9a_hoisted_62)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_e9714b9a_hoisted_63, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, 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", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[13] || (_cache[13] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -2509,15 +2512,15 @@ function PagedUsersListvue_type_template_id_e9714b9a_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", _hoisted_64, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_65, [_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_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", {
key: 0,
innerHTML: _ctx.$sanitize(_ctx.deleteUserPermConfirmSingleText)
- }, null, 8, _hoisted_66)) : 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_67, [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", {
+ }, 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))
- }, null, 8, _hoisted_68)])])) : 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", {
+ }, 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
- }, null, 8, _hoisted_69)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_70, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, 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",
onClick: _cache[15] || (_cache[15] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -2535,7 +2538,7 @@ function PagedUsersListvue_type_template_id_e9714b9a_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=e9714b9a
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=2bc7ec27
// 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
@@ -2793,7 +2796,7 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
-PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_e9714b9a_render
+PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_2bc7ec27_render
/* harmony default export */ var PagedUsersList = (PagedUsersListvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.adapter.ts
@@ -2855,6 +2858,1103 @@ PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_i
directiveName: 'piwikPagedUsersList',
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/UsersManager/UsersManager.vue?vue&type=template&id=db26d00e
+
+var UsersManagervue_type_template_id_db26d00e_hoisted_1 = {
+ class: "usersManager"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_2 = {
+ key: 0
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_3 = {
+ key: 1
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_4 = {
+ class: "row add-user-container"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_5 = {
+ class: "col s12"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_6 = {
+ class: "input-field",
+ style: {
+ "margin-right": "3.5px"
+ }
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_7 = {
+ key: 0,
+ class: "input-field"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_8 = {
+ key: 0
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_9 = {
+ class: "add-existing-user-modal modal",
+ ref: "addExistingUserModal"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_10 = {
+ class: "modal-content"
+};
+var UsersManagervue_type_template_id_db26d00e_hoisted_11 = {
+ class: "modal-footer"
+};
+function UsersManagervue_type_template_id_db26d00e_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_EnrichedHeadline = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("EnrichedHeadline");
+
+ var _component_PagedUsersList = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("PagedUsersList");
+
+ var _component_UserEditForm = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("UserEditForm");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _directive_content_intro = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-intro");
+
+ var _directive_tooltips = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("tooltips");
+
+ 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", UsersManagervue_type_template_id_db26d00e_hoisted_1, [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_["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_["createVNode"])(_component_EnrichedHeadline, {
+ "help-url": "https://matomo.org/docs/manage-users/",
+ "feature-name": "Users Management"
+ }, {
+ 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('UsersManager_ManageUsers')), 1)];
+ }),
+ _: 1
+ })]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_db26d00e_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'admin' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UsersManagervue_type_template_id_db26d00e_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ManageUsersAdminDesc')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "btn add-new-user",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.onAddNewUser();
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddUser')), 1)]), _ctx.currentUserRole !== 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "btn add-existing-user",
+ onClick: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.showAddExistingUserModal();
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddExistingUser')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_PagedUsersList, {
+ onEditUser: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.onEditUser($event.user);
+ }),
+ onChangeUserRole: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.onChangeUserRole($event.users, $event.role);
+ }),
+ onDeleteUser: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.onDeleteUser($event.users);
+ }),
+ onSearchChange: _cache[5] || (_cache[5] = function ($event) {
+ _ctx.searchParams = $event.params;
+
+ _ctx.fetchUsers();
+ }),
+ "initial-site-id": _ctx.initialSiteId,
+ "initial-site-name": _ctx.initialSiteName,
+ "is-loading-users": _ctx.isLoadingUsers,
+ "current-user-role": _ctx.currentUserRole,
+ "access-levels": _ctx.accessLevels,
+ "filter-access-levels": _ctx.actualFilterAccessLevels,
+ "search-params": _ctx.searchParams,
+ users: _ctx.users,
+ "total-entries": _ctx.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), [[_directive_content_intro]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isEditing]]), _ctx.isEditing ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserEditForm, {
+ onDone: _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.onDoneEditing($event.isUserModified);
+ }),
+ user: _ctx.userBeingEdited,
+ "current-user-role": _ctx.currentUserRole,
+ "access-levels": _ctx.accessLevels,
+ "filter-access-levels": _ctx.actualFilterAccessLevels,
+ "initial-site-id": _ctx.initialSiteId,
+ "initial-site-name": _ctx.initialSiteName,
+ onUpdated: _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.userBeingEdited = $event.user;
+ })
+ }, null, 8, ["user", "current-user-role", "access-levels", "filter-access-levels", "initial-site-id", "initial-site-name"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddExistingUser')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_EnterUsernameOrEmail')) + ":", 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.addNewUserLoginEmail,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.addNewUserLoginEmail = $event;
+ }),
+ name: "add-existing-user-email",
+ uicontrol: "text"
+ }, null, 8, ["modelValue"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UsersManagervue_type_template_id_db26d00e_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "",
+ class: "modal-action modal-close btn",
+ onClick: _cache[9] || (_cache[9] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.addExistingUser();
+ }, ["prevent"])),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Add')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "",
+ class: "modal-action modal-close modal-no",
+ onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.addNewUserLoginEmail = null;
+ }, ["prevent"]))
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])], 512)], 512)), [[_directive_tooltips]]);
+}
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=template&id=db26d00e
+
+// 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/UsersManager/UsersManager.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; }
+
+/* eslint-disable newline-per-chained-call */
+
+
+
+
+
+var NUM_USERS_PER_PAGE = 20;
+var UsersManagervue_type_script_lang_ts_window = window,
+ UsersManagervue_type_script_lang_ts_$ = UsersManagervue_type_script_lang_ts_window.$;
+/* harmony default export */ var UsersManagervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ currentUserRole: {
+ type: String,
+ required: true
+ },
+ initialSiteName: {
+ type: String,
+ required: true
+ },
+ initialSiteId: {
+ type: String,
+ required: true
+ },
+ accessLevels: {
+ type: Array,
+ required: true
+ },
+ filterAccessLevels: {
+ type: Array,
+ required: true
+ }
+ },
+ components: {
+ EnrichedHeadline: external_CoreHome_["EnrichedHeadline"],
+ PagedUsersList: PagedUsersList,
+ UserEditForm: UserEditForm,
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ directives: {
+ ContentIntro: external_CoreHome_["ContentIntro"],
+ Tooltips: external_CoreHome_["Tooltips"]
+ },
+ data: function data() {
+ return {
+ isEditing: !!external_CoreHome_["MatomoUrl"].urlParsed.value.showadduser,
+ isCurrentUserSuperUser: true,
+ users: [],
+ totalEntries: null,
+ searchParams: {
+ offset: 0,
+ limit: NUM_USERS_PER_PAGE,
+ filter_search: '',
+ filter_access: '',
+ idSite: this.initialSiteId
+ },
+ isLoadingUsers: false,
+ userBeingEdited: null,
+ addNewUserLoginEmail: ''
+ };
+ },
+ created: function created() {
+ this.fetchUsers();
+ },
+ watch: {
+ limit: function limit() {
+ this.fetchUsers();
+ }
+ },
+ methods: {
+ onEditUser: function onEditUser(user) {
+ external_CoreHome_["Matomo"].helper.lazyScrollToContent();
+ this.isEditing = true;
+ this.userBeingEdited = user;
+ },
+ onDoneEditing: function onDoneEditing(isUserModified) {
+ this.isEditing = false;
+
+ if (isUserModified) {
+ // if a user was modified, we must reload the users list
+ this.fetchUsers();
+ }
+ },
+ showAddExistingUserModal: function showAddExistingUserModal() {
+ UsersManagervue_type_script_lang_ts_$(this.$refs.addExistingUserModal).modal({
+ dismissible: false
+ }).modal('open');
+ },
+ onChangeUserRole: function onChangeUserRole(users, role) {
+ var _this = this;
+
+ this.isLoadingUsers = true;
+ Promise.resolve().then(function () {
+ if (users === 'all') {
+ return _this.getAllUsersInSearch();
+ }
+
+ return users;
+ }).then(function (usersResolved) {
+ return usersResolved.filter(function (u) {
+ return u.role !== 'superuser';
+ }).map(function (u) {
+ return u.login;
+ });
+ }).then(function (userLogins) {
+ var requests = userLogins.map(function (login) {
+ return {
+ method: 'UsersManager.setUserAccess',
+ userLogin: login,
+ access: role,
+ idSites: _this.searchParams.idSite,
+ ignoreSuperusers: 1
+ };
+ });
+ return external_CoreHome_["AjaxHelper"].fetch(requests, {
+ createErrorNotification: true
+ });
+ }).catch(function () {// ignore (errors will still be displayed to the user)
+ }).then(function () {
+ return _this.fetchUsers();
+ });
+ },
+ getAllUsersInSearch: function getAllUsersInSearch() {
+ return external_CoreHome_["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 onDeleteUser(users) {
+ var _this2 = this;
+
+ this.isLoadingUsers = true;
+ Promise.resolve().then(function () {
+ if (users === 'all') {
+ return _this2.getAllUsersInSearch();
+ }
+
+ return users;
+ }).then(function (usersResolved) {
+ return usersResolved.map(function (u) {
+ return u.login;
+ });
+ }).then(function (userLogins) {
+ var requests = userLogins.map(function (login) {
+ return {
+ method: 'UsersManager.deleteUser',
+ userLogin: login
+ };
+ });
+ return external_CoreHome_["AjaxHelper"].fetch(requests, {
+ createErrorNotification: true
+ });
+ }).catch(function () {// ignore (errors will still be displayed to the user)
+ }).then(function () {
+ return _this2.fetchUsers();
+ });
+ },
+ fetchUsers: function fetchUsers() {
+ var _this3 = this;
+
+ this.isLoadingUsers = true;
+ return external_CoreHome_["AjaxHelper"].fetch(Object.assign(Object.assign({}, this.searchParams), {}, {
+ method: 'UsersManager.getUsersPlusRole'
+ }), {
+ returnResponseObject: true
+ }).then(function (helper) {
+ var result = helper.getRequestHandle();
+ _this3.totalEntries = parseInt(result.getResponseHeader('x-matomo-total-results') || '0', 10);
+ _this3.users = result.responseJSON;
+ _this3.isLoadingUsers = false;
+ }).catch(function () {
+ _this3.isLoadingUsers = false;
+ });
+ },
+ addExistingUser: function addExistingUser() {
+ var _this4 = this;
+
+ this.isLoadingUsers = true;
+ return external_CoreHome_["AjaxHelper"].fetch({
+ method: 'UsersManager.userExists',
+ userLogin: this.addNewUserLoginEmail
+ }).then(function (response) {
+ if (response && response.value) {
+ return _this4.addNewUserLoginEmail;
+ }
+
+ return external_CoreHome_["AjaxHelper"].fetch({
+ method: 'UsersManager.getUserLoginFromUserEmail',
+ userEmail: _this4.addNewUserLoginEmail
+ }).then(function (r) {
+ return r.value;
+ });
+ }).then(function (login) {
+ return external_CoreHome_["AjaxHelper"].post({
+ method: 'UsersManager.setUserAccess'
+ }, {
+ userLogin: login,
+ access: 'view',
+ idSites: _this4.searchParams.idSite
+ });
+ }).then(function () {
+ return _this4.fetchUsers();
+ }).catch(function () {
+ _this4.isLoadingUsers = false;
+ });
+ },
+ onAddNewUser: function onAddNewUser() {
+ var parameters = {
+ isAllowed: true
+ };
+ external_CoreHome_["Matomo"].postEvent('UsersManager.initAddUser', parameters);
+
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.isEditing = true;
+ this.userBeingEdited = null;
+ }
+ },
+ computed: {
+ actualFilterAccessLevels: function actualFilterAccessLevels() {
+ if (this.currentUserRole === 'superuser') {
+ return [].concat(_toConsumableArray(this.filterAccessLevels), [{
+ key: 'superuser',
+ value: 'Superuser'
+ }]);
+ }
+
+ return this.filterAccessLevels;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.vue
+
+
+
+UsersManagervue_type_script_lang_ts.render = UsersManagervue_type_template_id_db26d00e_render
+
+/* harmony default export */ var UsersManager = (UsersManagervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UsersManager/UsersManager.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 UsersManager_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: UsersManager,
+ scope: {
+ currentUserRole: {
+ angularJsBind: '<'
+ },
+ initialSiteName: {
+ angularJsBind: '@'
+ },
+ initialSiteId: {
+ angularJsBind: '@'
+ },
+ accessLevels: {
+ angularJsBind: '<'
+ },
+ filterAccessLevels: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'piwikUsersManager',
+ 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/AnonymousSettings/AnonymousSettings.vue?vue&type=template&id=49762f75
+
+var AnonymousSettingsvue_type_template_id_49762f75_hoisted_1 = {
+ key: 0,
+ class: "alert alert-info"
+};
+var AnonymousSettingsvue_type_template_id_49762f75_hoisted_2 = {
+ key: 1
+};
+function AnonymousSettingsvue_type_template_id_49762f75_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");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_ContentBlock, {
+ "content-title": _ctx.title
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [_ctx.anonymousSites.length === 0 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", AnonymousSettingsvue_type_template_id_49762f75_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.anonymousSites.length > 0 ? 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", AnonymousSettingsvue_type_template_id_49762f75_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: "radio",
+ name: "anonymousDefaultReport",
+ modelValue: _ctx.defaultReport,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.defaultReport = $event;
+ }),
+ introduction: _ctx.translate('UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess'),
+ options: _ctx.defaultReportOptions
+ }, null, 8, ["modelValue", "introduction", "options"])]), 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: "anonymousDefaultReportWebsite",
+ modelValue: _ctx.defaultReportWebsite,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.defaultReportWebsite = $event;
+ }),
+ options: _ctx.anonymousSites
+ }, null, 8, ["modelValue", "options"])]), 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: "anonymousDefaultDate",
+ modelValue: _ctx.defaultDate,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.defaultDate = $event;
+ }),
+ introduction: _ctx.translate('UsersManager_ForAnonymousUsersReportDateToLoadByDefault'),
+ options: _ctx.availableDefaultDates
+ }, null, 8, ["modelValue", "introduction", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ saving: _ctx.loading,
+ onConfirm: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.save();
+ })
+ }, null, 8, ["saving"])], 512)), [[_directive_form]]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
+ }),
+ _: 1
+ }, 8, ["content-title"]);
+}
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue?vue&type=template&id=49762f75
+
+// 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/AnonymousSettings/AnonymousSettings.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var AnonymousSettingsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ title: {
+ type: String,
+ required: true
+ },
+ anonymousSites: {
+ type: Array,
+ required: true
+ },
+ anonymousDefaultReport: {
+ type: [String, Number],
+ required: true
+ },
+ anonymousDefaultSite: {
+ type: String,
+ required: true
+ },
+ anonymousDefaultDate: {
+ type: String,
+ required: true
+ },
+ availableDefaultDates: {
+ type: Object,
+ required: true
+ },
+ defaultReportOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ loading: false,
+ defaultReport: "".concat(this.anonymousDefaultReport),
+ defaultReportWebsite: this.anonymousDefaultSite,
+ defaultDate: this.anonymousDefaultDate
+ };
+ },
+ methods: {
+ save: function save() {
+ var _this = this;
+
+ var postParams = {
+ anonymousDefaultReport: this.defaultReport === '1' ? this.defaultReportWebsite : this.defaultReport,
+ anonymousDefaultDate: this.defaultDate
+ };
+ this.loading = true;
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'UsersManager',
+ action: 'recordAnonymousUserSettings',
+ format: 'json'
+ }, postParams, {
+ withTokenInUrl: true
+ }).then(function () {
+ var id = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'anonymousUserSettings',
+ context: 'success',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(id);
+ }).finally(function () {
+ _this.loading = false;
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue
+
+
+
+AnonymousSettingsvue_type_script_lang_ts.render = AnonymousSettingsvue_type_template_id_49762f75_render
+
+/* harmony default export */ var AnonymousSettings = (AnonymousSettingsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.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 AnonymousSettings_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: AnonymousSettings,
+ scope: {
+ title: {
+ angularJsBind: '<'
+ },
+ anonymousSites: {
+ angularJsBind: '<'
+ },
+ anonymousDefaultReport: {
+ angularJsBind: '<'
+ },
+ anonymousDefaultSite: {
+ angularJsBind: '<'
+ },
+ anonymousDefaultDate: {
+ angularJsBind: '<'
+ },
+ availableDefaultDates: {
+ angularJsBind: '<'
+ },
+ defaultReportOptions: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'matomoAnonymousSettings'
+}));
+// 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/NewsletterSettings/NewsletterSettings.vue?vue&type=template&id=2cb03bb3
+
+var NewsletterSettingsvue_type_template_id_2cb03bb3_hoisted_1 = {
+ id: "newsletterSignup"
+};
+function NewsletterSettingsvue_type_template_id_2cb03bb3_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_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", NewsletterSettingsvue_type_template_id_2cb03bb3_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.translate('UsersManager_NewsletterSignupTitle')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [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: "newsletterSignupCheckbox",
+ id: "newsletterSignupCheckbox",
+ modelValue: _ctx.newsletterSignupCheckbox,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.newsletterSignupCheckbox = $event;
+ }),
+ "full-width": true,
+ title: _ctx.signupTitleText
+ }, null, 8, ["modelValue", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ id: "newsletterSignupBtn",
+ onConfirm: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.signupForNewsletter();
+ }),
+ disabled: !_ctx.newsletterSignupCheckbox,
+ value: _ctx.newsletterSignupButtonTitle,
+ saving: _ctx.isProcessingNewsletterSignup
+ }, null, 8, ["disabled", "value", "saving"])];
+ }),
+ _: 1
+ }, 8, ["content-title"])], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showNewsletterSignup]]);
+}
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue?vue&type=template&id=2cb03bb3
+
+// 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/NewsletterSettings/NewsletterSettings.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var NewsletterSettingsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ data: function data() {
+ return {
+ showNewsletterSignup: true,
+ newsletterSignupCheckbox: false,
+ isProcessingNewsletterSignup: false,
+ newsletterSignupButtonTitle: Object(external_CoreHome_["translate"])('General_Save')
+ };
+ },
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ computed: {
+ signupTitleText: function signupTitleText() {
+ return Object(external_CoreHome_["translate"])('UsersManager_NewsletterSignupMessage', '<a href="https://matomo.org/privacy-policy/" target="_blank">', '</a>');
+ }
+ },
+ methods: {
+ signupForNewsletter: function signupForNewsletter() {
+ var _this = this;
+
+ this.newsletterSignupButtonTitle = Object(external_CoreHome_["translate"])('General_Loading');
+ this.isProcessingNewsletterSignup = true;
+ external_CoreHome_["AjaxHelper"].fetch({
+ module: 'API',
+ method: 'UsersManager.newsletterSignup'
+ }, {
+ withTokenInUrl: true
+ }).then(function () {
+ _this.isProcessingNewsletterSignup = false;
+ _this.showNewsletterSignup = false;
+ var id = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('UsersManager_NewsletterSignupSuccessMessage'),
+ id: 'newslettersignup',
+ context: 'success',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(id);
+ }).catch(function () {
+ _this.isProcessingNewsletterSignup = false;
+ var id = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('UsersManager_NewsletterSignupFailureMessage'),
+ id: 'newslettersignup',
+ context: 'error',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(id);
+ _this.newsletterSignupButtonTitle = Object(external_CoreHome_["translate"])('General_PleaseTryAgain');
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue
+
+
+
+NewsletterSettingsvue_type_script_lang_ts.render = NewsletterSettingsvue_type_template_id_2cb03bb3_render
+
+/* harmony default export */ var NewsletterSettings = (NewsletterSettingsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.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 NewsletterSettings_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: NewsletterSettings,
+ scope: {},
+ directiveName: 'matomoNewsletterSettings'
+}));
+// 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/PersonalSettings/PersonalSettings.vue?vue&type=template&id=d46d01d4
+
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_1 = {
+ id: "userSettingsTable"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_2 = {
+ key: 0
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_3 = {
+ id: "languageHelp",
+ class: "inline-help-node"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_4 = {
+ target: "_blank",
+ rel: "noreferrer noopener",
+ href: "https://matomo.org/translations/"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_5 = {
+ class: "sites_autocomplete"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_6 = {
+ class: "modal",
+ id: "confirmChangesWithPassword",
+ ref: "confirmChangesWithPasswordModal"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_7 = {
+ class: "modal-content"
+};
+var PersonalSettingsvue_type_template_id_d46d01d4_hoisted_8 = {
+ class: "modal-footer"
+};
+function PersonalSettingsvue_type_template_id_d46d01d4_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SiteSelector = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SiteSelector");
+
+ 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_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_ContentBlock, {
+ "content-title": _ctx.title,
+ feature: 'true'
+ }, {
+ 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"])("form", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_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: "username",
+ title: _ctx.translate('General_Username'),
+ disabled: true,
+ modelValue: _ctx.username,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.username = $event;
+ }),
+ "inline-help": _ctx.translate('UsersManager_YourUsernameCannotBeChanged')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), _ctx.isUsersAdminEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "email",
+ "model-value": _ctx.email,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ _ctx.email = $event;
+ _ctx.doesRequirePasswordConfirmation = true;
+ }),
+ maxlength: 100,
+ title: _ctx.translate('UsersManager_Email')
+ }, null, 8, ["model-value", "title"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('LanguagesManager_AboutPiwikTranslations')), 1)]), 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: "language",
+ modelValue: _ctx.language,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.language = $event;
+ }),
+ title: _ctx.translate('General_Language'),
+ options: _ctx.languageOptions,
+ "inline-help": "#languageHelp"
+ }, null, 8, ["modelValue", "title", "options"])]), 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: "timeformat",
+ modelValue: _ctx.timeformat,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.timeformat = $event;
+ }),
+ title: _ctx.translate('General_TimeFormat'),
+ options: _ctx.timeFormats
+ }, null, 8, ["modelValue", "title", "options"])]), 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: "defaultReport",
+ modelValue: _ctx.theDefaultReport,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.theDefaultReport = $event;
+ }),
+ introduction: _ctx.translate('UsersManager_ReportToLoadByDefault'),
+ title: _ctx.translate('General_AllWebsitesDashboard'),
+ options: _ctx.defaultReportOptions
+ }, null, 8, ["modelValue", "introduction", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, {
+ modelValue: _ctx.site,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.site = $event;
+ }),
+ "show-selected-site": true,
+ "switch-site-on-select": false,
+ "show-all-sites-item": false,
+ showselectedsite: true,
+ id: "defaultReportSiteSelector"
+ }, null, 8, ["modelValue"])]), 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: "defaultDate",
+ modelValue: _ctx.theDefaultDate,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.theDefaultDate = $event;
+ }),
+ introduction: _ctx.translate('UsersManager_ReportDateToLoadByDefault'),
+ options: _ctx.availableDefaultDates
+ }, null, 8, ["modelValue", "introduction", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.loading
+ }, null, 8, ["saving"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", 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, {
+ uicontrol: "password",
+ name: "currentPassword",
+ autocomplete: false,
+ modelValue: _ctx.passwordCurrent,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.passwordCurrent = $event;
+ }),
+ "full-width": true,
+ title: _ctx.translate('UsersManager_YourCurrentPassword')
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PersonalSettingsvue_type_template_id_d46d01d4_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "",
+ class: "modal-action btn",
+ onClick: _cache[9] || (_cache[9] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.save();
+ }, ["prevent"])),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Ok')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "",
+ class: "modal-action modal-close modal-no",
+ onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.passwordCurrent = '';
+ }, ["prevent"]))
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])], 512)], 512), [[_directive_form]])];
+ }),
+ _: 1
+ }, 8, ["content-title"]);
+}
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=template&id=d46d01d4
+
+// 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/PersonalSettings/PersonalSettings.vue?vue&type=script&lang=ts
+
+
+
+var PersonalSettingsvue_type_script_lang_ts_window = window,
+ PersonalSettingsvue_type_script_lang_ts_$ = PersonalSettingsvue_type_script_lang_ts_window.$;
+/* harmony default export */ var PersonalSettingsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isUsersAdminEnabled: {
+ type: Boolean,
+ required: true
+ },
+ title: {
+ type: String,
+ required: true
+ },
+ userLogin: {
+ type: String,
+ required: true
+ },
+ userEmail: {
+ type: String,
+ required: true
+ },
+ currentLanguageCode: {
+ type: String,
+ required: true
+ },
+ languageOptions: {
+ type: Object,
+ required: true
+ },
+ currentTimeformat: {
+ type: Number,
+ required: true
+ },
+ timeFormats: {
+ type: Object,
+ required: true
+ },
+ defaultReport: {
+ type: String,
+ required: true
+ },
+ defaultReportOptions: {
+ type: Object,
+ required: true
+ },
+ defaultReportIdSite: {
+ type: [String, Number],
+ required: true
+ },
+ defaultReportSiteName: {
+ type: String,
+ required: true
+ },
+ defaultDate: {
+ type: String,
+ required: true
+ },
+ availableDefaultDates: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ Field: external_CorePluginsAdmin_["Field"],
+ SiteSelector: external_CoreHome_["SiteSelector"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ doesRequirePasswordConfirmation: false,
+ username: this.userLogin,
+ email: this.userEmail,
+ language: this.currentLanguageCode,
+ timeformat: this.currentTimeformat,
+ theDefaultReport: this.defaultReport,
+ site: {
+ id: this.defaultReportIdSite,
+ name: external_CoreHome_["Matomo"].helper.htmlDecode(this.defaultReportSiteName)
+ },
+ theDefaultDate: this.defaultDate,
+ loading: false,
+ passwordCurrent: ''
+ };
+ },
+ methods: {
+ save: function save() {
+ var _this = this;
+
+ if (this.doesRequirePasswordConfirmation && !this.passwordCurrent) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ PersonalSettingsvue_type_script_lang_ts_$(this.$refs.confirmChangesWithPasswordModal).modal({
+ dismissible: false,
+ ready: function ready() {
+ PersonalSettingsvue_type_script_lang_ts_$('.modal.open #currentPassword').focus();
+ }
+ }).modal('open');
+ return;
+ }
+
+ var modal = M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);
+
+ if (modal) {
+ modal.close();
+ }
+
+ var postParams = {
+ email: this.email,
+ defaultReport: this.theDefaultReport === 'MultiSites' ? this.theDefaultReport : this.site.id,
+ defaultDate: this.theDefaultDate,
+ language: this.language,
+ timeformat: this.timeformat
+ };
+
+ if (this.passwordCurrent) {
+ postParams.passwordConfirmation = this.passwordCurrent;
+ }
+
+ this.loading = true;
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'UsersManager',
+ action: 'recordUserSettings',
+ format: 'json'
+ }, postParams, {
+ withTokenInUrl: true
+ }).then(function () {
+ var id = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'PersonalSettingsSuccess',
+ context: 'success',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(id);
+ _this.doesRequirePasswordConfirmation = false;
+ _this.passwordCurrent = '';
+ _this.loading = false;
+ }).catch(function () {
+ _this.loading = false;
+ _this.passwordCurrent = '';
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue
+
+
+
+PersonalSettingsvue_type_script_lang_ts.render = PersonalSettingsvue_type_template_id_d46d01d4_render
+
+/* harmony default export */ var PersonalSettings = (PersonalSettingsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.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 PersonalSettings_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: PersonalSettings,
+ scope: {
+ isUsersAdminEnabled: {
+ angularJsBind: '<'
+ },
+ title: {
+ angularJsBind: '<'
+ },
+ userLogin: {
+ angularJsBind: '<'
+ },
+ userEmail: {
+ angularJsBind: '<'
+ },
+ currentLanguageCode: {
+ angularJsBind: '<'
+ },
+ languageOptions: {
+ angularJsBind: '<'
+ },
+ currentTimeformat: {
+ angularJsBind: '<'
+ },
+ timeFormats: {
+ angularJsBind: '<'
+ },
+ defaultReport: {
+ angularJsBind: '<'
+ },
+ defaultReportOptions: {
+ angularJsBind: '<'
+ },
+ defaultReportIdSite: {
+ angularJsBind: '<'
+ },
+ defaultReportSiteName: {
+ angularJsBind: '<'
+ },
+ defaultDate: {
+ angularJsBind: '<'
+ },
+ availableDefaultDates: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'matomoPersonalSettings'
+}));
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/index.ts
/*!
* Matomo - free/libre analytics platform
@@ -2870,6 +3970,14 @@ PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_i
+
+
+
+
+
+
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
index 21eac26475..643bff5ed7 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
@@ -1,32 +1,56 @@
-(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 i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,n),i.l=!0,i.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 i in e)n.d(s,i,function(t){return e[t]}.bind(null,i));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 jt})),n.d(t,"PagedUsersList",(function(){return Fn})),"undefined"!==typeof window){var s=window.document.currentScript,i=s&&s.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),o=n("8bbf"),a=["title"],c=["onClick"],l={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,i,r){var h=Object(o["resolveComponent"])("Field");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["capabilitiesEdit",{busy:e.isBusy}])},[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.actualCapabilities,(function(t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{key:t.id,class:"chip"},[Object(o["createElementVNode"])("span",{class:"capability-name",title:"".concat(t.description," ").concat(e.isIncludedInRole(t)?"<br/><br/>".concat(e.translate("UsersManager_IncludedInUsersRole")):"")},Object(o["toDisplayString"])(t.category)+": "+Object(o["toDisplayString"])(t.name),9,a),e.isIncludedInRole(t)?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",{key:0,class:"icon-close",onClick:function(n){e.capabilityToRemoveId=t.id,e.onToggleCapability(!1)}},null,8,c))])})),128)),e.availableCapabilitiesGrouped.length?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",l,[Object(o["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(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("div",d,[Object(o["createElementVNode"])("div",u,[e.isAddingCapability?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",{key:0,innerHTML:e.$sanitize(e.confirmAddCapabilityToggleContent)},null,8,m)):Object(o["createCommentVNode"])("",!0),e.isAddingCapability?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("h2",{key:1,innerHTML:e.$sanitize(e.confirmCapabilityToggleContent)},null,8,b))]),Object(o["createElementVNode"])("div",p,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[1]||(t[1]=Object(o["withModifiers"])((function(t){return e.toggleCapability()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=Object(o["withModifiers"])((function(t){e.capabilityToAddOrRemove=null,e.capabilityToAddId=null,e.capabilityToRemoveId=null}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var f=n("a5a2");function g(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 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}
/*!
* 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;g(this,e),v(this,"privateState",Object(o["reactive"])({isLoading:!1,capabilities:[]})),v(this,"state",Object(o["computed"])((function(){return Object(o["readonly"])(t.privateState)}))),v(this,"capabilities",Object(o["computed"])((function(){return t.state.value.capabilities}))),v(this,"isLoading",Object(o["computed"])((function(){return t.state.value.isLoading}))),v(this,"fetchPromise",void 0),this.fetchCapabilities()}return j(e,[{key:"fetchCapabilities",value:function(){var e=this;return this.fetchPromise||(this.privateState.isLoading=!0,this.fetchPromise=r["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}(),k=Object(r["lazyInitSingleton"])(C),N=window,y=N.$,A=Object(o["defineComponent"])({props:{idsite:[String,Number],siteName:{type:String,required:!0},userLogin:{type:String,required:!0},userRole:{type:String,required:!0},capabilities:Array},components:{Field:f["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;this.capabilities?this.theCapabilities=this.capabilities:(this.isBusy=!0,r["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&&y(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,r["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,r["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 k.capabilities.value},confirmAddCapabilityToggleContent:function(){return Object(r["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(r["translate"])("UsersManager_AreYouSureRemoveCapability","<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},siteNameText:function(){return r["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]}))}}});A.render=h;var E=A,V=(Object(r["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,i,r,o){o((function(){n.onCapabilitiesChange&&n.onCapabilitiesChange.call({capabilities:e})}))}}}),{key:0,class:"row"}),S={class:"row to-all-websites"},U={class:"col s12"},T={style:{"margin-right":"3.5px"}},w={id:"all-sites-access-select",style:{"margin-right":"3.5px"}},M={style:{"margin-top":"18px"}},B={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"},D={id:"user-permissions-bulk-set-access",class:"dropdown-content"},P=["onClick"],H={class:"input-field site-filter",style:{"margin-right":"3.5px"}},F=["value","placeholder"],I={class:"input-field access-filter",style:{"margin-right":"3.5px"}},G={key:0,class:"col s12 m12 l4 sites-for-permission-pagination-container"},$={class:"sites-for-permission-pagination"},J={class:"counter"},q=["textContent"],z={class:"roles-help-notification"},W=["innerHTML"],Y={class:"capabilities-help-notification"},X={id:"sitesForPermission"},K={class:"select-cell"},Q={class:"checkbox-container"},Z=["checked"],ee=Object(o["createElementVNode"])("span",null,null,-1),te={class:"role_header"},ne=["innerHTML"],se=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),ie=[se],re={class:"capabilities_header"},oe=["innerHTML"],ae=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),ce=[ae],le={key:0,class:"select-all-row"},de={colspan:"4"},ue={key:0},me=["innerHTML"],be=["innerHTML"],pe={key:1},he=["innerHTML"],fe=["innerHTML"],ge={class:"select-cell"},Oe={class:"checkbox-container"},je=["id","onUpdate:modelValue"],ve=Object(o["createElementVNode"])("span",null,null,-1),Ce={class:"role-select"},ke={class:"delete-access-confirm-modal modal",ref:"deleteAccessConfirmModal"},Ne={class:"modal-content"},ye=["innerHTML"],Ae=["innerHTML"],Ee={class:"modal-footer"},Ve={class:"change-access-confirm-modal modal",ref:"changeAccessConfirmModal"},Se={class:"modal-content"},Ue=["innerHTML"],Te=["innerHTML"],we={class:"modal-footer"},Me={class:"confirm-give-access-all-sites modal",ref:"confirmGiveAccessAllSitesModal"},Be={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),this.fetchCapabilities()}return j(e,[{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=Object(i["lazyInitSingleton"])(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;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"};
/*!
* 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,i,r){var a=Object(o["resolveComponent"])("Notification"),c=Object(o["resolveComponent"])("Field"),l=Object(o["resolveComponent"])("CapabilitiesEdit"),d=Object(o["resolveDirective"])("dropdown-menu"),u=Object(o["resolveDirective"])("content-table");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["userPermissionsEdit",{loading:e.isLoadingAccess}])},[e.hasAccessToAtLeastOneSite?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",V,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{context:"warning",type:"transient",noclear:!0},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("strong",null,Object(o["toDisplayString"])(e.translate("General_Warning"))+":",1),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("UsersManager_NoAccessWarning")),1)]})),_:1})])])),Object(o["createElementVNode"])("div",S,[Object(o["createElementVNode"])("div",U,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("span",T,Object(o["toDisplayString"])(e.translate("UsersManager_GiveAccessToAll"))+":",1),Object(o["createElementVNode"])("div",w,[Object(o["createVNode"])(c,{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(o["createElementVNode"])("a",{href:"",class:Object(o["normalizeClass"])(["btn",{disabled:e.isGivingAccessToAllSites}]),onClick:t[1]||(t[1]=Object(o["withModifiers"])((function(t){return e.showChangeAccessAllSitesModal()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_Apply")),3)]),Object(o["createElementVNode"])("p",M,Object(o["toDisplayString"])(e.translate("UsersManager_OrManageIndividually"))+":",1)])]),Object(o["createElementVNode"])("div",B,[Object(o["createElementVNode"])("div",_,[Object(o["createElementVNode"])("div",L,[Object(o["withDirectives"])(Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["dropdown-trigger btn",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-permissions-edit-bulk-actions"},[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[d,{activates:"#user-permissions-edit-bulk-actions"}]]),Object(o["createElementVNode"])("ul",R,[Object(o["createElementVNode"])("li",null,[Object(o["withDirectives"])(Object(o["createElementVNode"])("a",x,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[d,{activates:"#user-permissions-bulk-set-access"}]]),Object(o["createElementVNode"])("ul",D,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.filteredAccessLevels,(function(t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{key:t.key},[Object(o["createElementVNode"])("a",{href:"",onClick:Object(o["withModifiers"])((function(n){e.siteAccessToChange=null,e.roleToChangeTo=t.key,e.showChangeAccessConfirm()}),["prevent"])},Object(o["toDisplayString"])(t.value),9,P)])})),128))])]),Object(o["createElementVNode"])("li",null,[Object(o["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(o["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo="noaccess",e.showRemoveAccessConfirm()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)])])]),Object(o["createElementVNode"])("div",H,[Object(o["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,F)]),Object(o["createElementVNode"])("div",I,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(c,{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(o["openBlock"])(),Object(o["createElementBlock"])("div",G,[Object(o["createElementVNode"])("div",$,[Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["prev",{disabled:e.offset<=0}])},[Object(o["createElementVNode"])("span",{class:"pointer",onClick:t[6]||(t[6]=function(t){return e.gotoPreviousPage()})},"« "+Object(o["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(o["createElementVNode"])("span",J,[Object(o["createElementVNode"])("span",{textContent:Object(o["toDisplayString"])(e.paginationText)},null,8,q)]),Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["next",{disabled:e.offset+e.limit>=e.totalEntries}])},[Object(o["createElementVNode"])("span",{class:"pointer",onClick:t[7]||(t[7]=function(t){return e.gotoNextPage()})},Object(o["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(o["createCommentVNode"])("",!0)]),Object(o["createElementVNode"])("div",z,[e.isRoleHelpToggled?(Object(o["openBlock"])(),Object(o["createBlock"])(a,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,W)]})),_:1})):Object(o["createCommentVNode"])("",!0)]),Object(o["createElementVNode"])("div",Y,[e.isCapabilitiesHelpToggled?(Object(o["openBlock"])(),Object(o["createBlock"])(a,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.translate("UsersManager_CapabilitiesHelp")),1)]})),_:1})):Object(o["createCommentVNode"])("",!0)]),Object(o["withDirectives"])(Object(o["createElementVNode"])("table",X,[Object(o["createElementVNode"])("thead",null,[Object(o["createElementVNode"])("tr",null,[Object(o["createElementVNode"])("th",K,[Object(o["createElementVNode"])("span",Q,[Object(o["createElementVNode"])("label",null,[Object(o["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,Z),ee])])]),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_Name")),1),Object(o["createElementVNode"])("th",te,[Object(o["createElementVNode"])("span",{innerHTML:"".concat(e.translate("UsersManager_Role")," ")},null,8,ne),Object(o["createElementVNode"])("a",{href:"",class:Object(o["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(o["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},ie,2)]),Object(o["createElementVNode"])("th",re,[Object(o["createElementVNode"])("span",{innerHTML:"".concat(e.translate("UsersManager_Capabilities")," ")},null,8,oe),Object(o["createElementVNode"])("a",{href:"",class:Object(o["normalizeClass"])(["helpIcon",{sticky:e.isCapabilitiesHelpToggled}]),onClick:t[10]||(t[10]=Object(o["withModifiers"])((function(t){return e.isCapabilitiesHelpToggled=!e.isCapabilitiesHelpToggled}),["prevent"]))},ce,2)])])]),Object(o["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.siteAccess.length<e.totalEntries?(Object(o["openBlock"])(),Object(o["createElementBlock"])("tr",le,[Object(o["createElementVNode"])("td",de,[e.areAllResultsSelected?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ue,[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(e.theDisplayedWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,me),Object(o["createElementVNode"])("a",{href:"#",onClick:t[11]||(t[11]=Object(o["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectAllText)},null,8,be)])),e.areAllResultsSelected?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",pe,[Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(e.allWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,he),Object(o["createElementVNode"])("a",{href:"#",onClick:t[12]||(t[12]=Object(o["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectDisplayedWebsitesText)},null,8,fe)])):Object(o["createCommentVNode"])("",!0)])])):Object(o["createCommentVNode"])("",!0),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.siteAccess,(function(n,s){return Object(o["openBlock"])(),Object(o["createElementBlock"])("tr",{key:n.idsite},[Object(o["createElementVNode"])("td",ge,[Object(o["createElementVNode"])("span",Oe,[Object(o["createElementVNode"])("label",null,[Object(o["withDirectives"])(Object(o["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,je),[[o["vModelCheckbox"],e.selectedRows[s]]]),ve])])]),Object(o["createElementVNode"])("td",null,[Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(n.site_name),1)]),Object(o["createElementVNode"])("td",null,[Object(o["createElementVNode"])("div",Ce,[Object(o["createVNode"])(c,{"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(o["createElementVNode"])("td",null,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(l,{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(o["createElementVNode"])("div",ke,[Object(o["createElementVNode"])("div",Ne,[e.siteAccessToChange?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deletePermConfirmSingleText)},null,8,ye)):Object(o["createCommentVNode"])("",!0),e.siteAccessToChange?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.deletePermConfirmMultipleText)},null,8,Ae))]),Object(o["createElementVNode"])("div",Ee,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(o["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(o["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512),Object(o["createElementVNode"])("div",Ve,[Object(o["createElementVNode"])("div",Se,[e.siteAccessToChange?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.changePermToSiteConfirmSingleText)},null,8,Ue)):Object(o["createCommentVNode"])("",!0),e.siteAccessToChange?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.changePermToSiteConfirmMultipleText)},null,8,Te))]),Object(o["createElementVNode"])("div",we,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[17]||(t[17]=Object(o["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[18]||(t[18]=Object(o["withModifiers"])((function(t){e.siteAccessToChange.role=e.previousRole,e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512),Object(o["createElementVNode"])("div",Me,[Object(o["createElementVNode"])("div",Be,[Object(o["createElementVNode"])("h3",{innerHTML:e.$sanitize(e.changePermToAllSitesConfirmText)},null,8,_e),Object(o["createElementVNode"])("p",null,Object(o["toDisplayString"])(e.translate("UsersManager_ChangePermToAllSitesConfirm2")),1)]),Object(o["createElementVNode"])("div",Le,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[19]||(t[19]=Object(o["withModifiers"])((function(t){return e.giveAccessToAllSites()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[20]||(t[20]=function(e){return e.preventDefault()})},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var xe=window,De=xe.$,Pe=Object(o["defineComponent"])({props:{userLogin:{type:String,required:!0},limit:{type:Number,default:10},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0}},components:{Notification:r["Notification"],Field:f["Field"],CapabilitiesEdit:E},directives:{DropdownMenu:r["DropdownMenu"],ContentTable:r["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(r["debounce"])(this.onChangeSiteFilter,300),Object(o["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,r["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(){De(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 r["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 r["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(){De(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,r["AjaxHelper"].fetch({method:"SitesManager.getSitesWithAdminAccess"}).then((function(t){var n=t.map((function(e){return e.idsite}));return r["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(){De(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(r["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(r["translate"])("UsersManager_TheDisplayedWebsitesAreSelected","<strong>".concat(this.siteAccess.length,"</strong>"));return"".concat(e," ")},clickToSelectAllText:function(){return Object(r["translate"])("UsersManager_ClickToSelectAll","<strong>".concat(this.totalEntries,"</strong>"))},allWebsitesAreSelectedText:function(){return Object(r["translate"])("UsersManager_AllWebsitesAreSelected","<strong>".concat(this.totalEntries,"</strong>"))},clickToSelectDisplayedWebsitesText:function(){return Object(r["translate"])("UsersManager_ClickToSelectDisplayedWebsites","<strong>".concat(this.siteAccess.length,"</strong>"))},deletePermConfirmSingleText:function(){return Object(r["translate"])("UsersManager_DeletePermConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"))},deletePermConfirmMultipleText:function(){return Object(r["translate"])("UsersManager_DeletePermConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"))},changePermToSiteConfirmSingleText:function(){return Object(r["translate"])("UsersManager_ChangePermToSiteConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToSiteConfirmMultipleText:function(){return Object(r["translate"])("UsersManager_ChangePermToSiteConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToAllSitesConfirmText:function(){return Object(r["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?r["Matomo"].helper.htmlEntities(this.siteAccessToChange.site_name):""},paginationText:function(){var e=Object(r["translate"])("General_Pagination","".concat(this.paginationLowerBound),"".concat(this.paginationUpperBound),"".concat(this.totalEntries));return" ".concat(e," ")}}});Pe.render=Re;var He=Pe,Fe=(Object(r["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"}),Ie={key:0,class:"col m2 entityList"},Ge={class:"listCircle"},$e={key:0,class:"icon-warning"},Je=Object(o["createElementVNode"])("div",{class:"save-button-spacer hide-on-small-only"},null,-1),qe={href:"",class:"entityCancelLink"},ze={class:"visibleTab col m10"},We={key:0,class:"basic-info-tab"},Ye={key:0,class:"entityCancel"},Xe={key:1,class:"user-permissions"},Ke={key:0},Qe={key:1,class:"alert alert-info"},Ze={key:2,class:"superuser-access"},et={class:"superuser-confirm-modal modal",ref:"superUserConfirmModal"},tt={class:"modal-content"},nt={key:0},st={key:1},it={class:"modal-footer"},rt={key:3,class:"twofa-reset"},ot={class:"resetTwoFa"},at={class:"twofa-confirm-modal modal",ref:"twofaConfirmModal"},ct={class:"modal-content"},lt={class:"modal-footer"},dt={class:"change-password-modal modal",ref:"changePasswordModal"},ut={class:"modal-content"},mt=["innerHTML"],bt={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",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"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function pt(e,t,n,s,i,r){var a=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("SaveButton"),l=Object(o["resolveComponent"])("UserPermissionsEdit"),d=Object(o["resolveComponent"])("ContentBlock"),u=Object(o["resolveDirective"])("form");return Object(o["openBlock"])(),Object(o["createBlock"])(d,{class:Object(o["normalizeClass"])(["userEditForm",{loading:e.isSavingUserInfo}]),"content-title":"".concat(e.formTitle," ").concat(e.isAdd?"":"'".concat(e.theUser.login,"'"))},{default:Object(o["withCtx"])((function(){return[Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Fe,[e.isAdd?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ie,[Object(o["createElementVNode"])("ul",Ge,[Object(o["createElementVNode"])("li",{class:Object(o["normalizeClass"])([{active:"basic"===e.activeTab},"menuBasicInfo"])},[Object(o["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(o["withModifiers"])((function(t){return e.activeTab="basic"}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_BasicInformation")),1)],2),Object(o["createElementVNode"])("li",{class:Object(o["normalizeClass"])([{active:"permissions"===e.activeTab},"menuPermissions"])},[Object(o["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(o["withModifiers"])((function(t){return e.activeTab="permissions"}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("UsersManager_Permissions")),1),e.userHasAccess||e.theUser.superuser_access?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",$e))],2),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{key:0,class:Object(o["normalizeClass"])([{active:"superuser"===e.activeTab},"menuSuperuser"])},[Object(o["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(o["withModifiers"])((function(t){return e.activeTab="superuser"}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_SuperUserAccess")),1)],2)):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&e.theUser.uses_2fa&&!e.isAdd?(Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{key:1,class:Object(o["normalizeClass"])([{active:"2fa"===e.activeTab},"menuUserTwoFa"])},[Object(o["createElementVNode"])("a",{href:"",onClick:t[3]||(t[3]=Object(o["withModifiers"])((function(t){return e.activeTab="2fa"}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_TwoFactorAuthentication")),1)],2)):Object(o["createCommentVNode"])("",!0)]),Je,Object(o["createElementVNode"])("div",{class:"entityCancel",onClick:t[4]||(t[4]=Object(o["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},[Object(o["createElementVNode"])("a",qe,Object(o["toDisplayString"])(e.translate("Mobile_NavigationBack")),1)])])),Object(o["createElementVNode"])("div",ze,["basic"===e.activeTab?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",We,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{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(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{"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(o["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(o["openBlock"])(),Object(o["createBlock"])(a,{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(o["createCommentVNode"])("",!0)]),Object(o["createElementVNode"])("div",null,[e.isAdd?(Object(o["openBlock"])(),Object(o["createBlock"])(a,{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(o["createCommentVNode"])("",!0)]),Object(o["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(o["openBlock"])(),Object(o["createBlock"])(c,{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(o["createCommentVNode"])("",!0)]),e.isAdd?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ye,[Object(o["createElementVNode"])("a",{href:"",class:"entityCancelLink",onClick:t[10]||(t[10]=Object(o["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_Cancel")),1)])):Object(o["createCommentVNode"])("",!0)])):Object(o["createCommentVNode"])("",!0),e.isAdd?Object(o["createCommentVNode"])("",!0):Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Xe,[e.theUser.superuser_access?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ke,[Object(o["createVNode"])(l,{"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(o["openBlock"])(),Object(o["createElementBlock"])("div",Qe,Object(o["toDisplayString"])(e.translate("UsersManager_SuperUsersPermissionsNotice")),1)):Object(o["createCommentVNode"])("",!0)],512)),[[o["vShow"],"permissions"===e.activeTab]]),"superuser"!==e.activeTab||"superuser"!==e.currentUserRole||e.isAdd?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Ze,[Object(o["createElementVNode"])("p",null,Object(o["toDisplayString"])(e.translate("UsersManager_SuperUserIntro1")),1),Object(o["createElementVNode"])("p",null,[Object(o["createElementVNode"])("strong",null,Object(o["toDisplayString"])(e.translate("UsersManager_SuperUserIntro2")),1)]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{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(o["createElementVNode"])("div",et,[Object(o["createElementVNode"])("div",tt,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),e.theUser.superuser_access?(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",nt,Object(o["toDisplayString"])(e.translate("UsersManager_RemoveSuperuserAccessConfirm")),1)):Object(o["createCommentVNode"])("",!0),e.theUser.superuser_access?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",st,Object(o["toDisplayString"])(e.translate("UsersManager_AddSuperuserAccessConfirm")),1)),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{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(o["createElementVNode"])("div",it,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(o["withModifiers"])((function(t){return e.toggleSuperuserAccess()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(o["withModifiers"])((function(t){e.setSuperUserAccessChecked(),e.passwordConfirmationForSuperUser=""}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512)])),"superuser"!==e.currentUserRole||e.isAdd?Object(o["createCommentVNode"])("",!0):Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",rt,[Object(o["createElementVNode"])("p",null,Object(o["toDisplayString"])(e.translate("UsersManager_ResetTwoFactorAuthenticationInfo")),1),Object(o["createElementVNode"])("div",ot,[Object(o["createVNode"])(c,{saving:e.isResetting2FA,onConfirm:t[18]||(t[18]=function(t){return e.confirmReset2FA()}),value:e.translate("UsersManager_ResetTwoFactorAuthentication")},null,8,["saving","value"])]),Object(o["createElementVNode"])("div",at,[Object(o["createElementVNode"])("div",ct,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),Object(o["createElementVNode"])("p",null,Object(o["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[19]||(t[19]=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(o["createElementVNode"])("div",lt,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[20]||(t[20]=Object(o["withModifiers"])((function(t){return e.reset2FA()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[21]||(t[21]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512)],512)),[[o["vShow"],"2fa"===e.activeTab]])])],512),[[u]]),Object(o["createElementVNode"])("div",dt,[Object(o["createElementVNode"])("div",ut,[Object(o["createElementVNode"])("h2",{innerHTML:e.changePasswordTitle},null,8,mt),Object(o["createElementVNode"])("p",null,Object(o["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[22]||(t[22]=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(o["createElementVNode"])("div",bt,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[23]||(t[23]=Object(o["withModifiers"])((function(t){return e.updateUser()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[24]||(t[24]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(o["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,gt=ft.$,Ot=Object(o["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:r["ContentBlock"],Field:f["Field"],SaveButton:f["SaveButton"],UserPermissionsEdit:He},directives:{Form:f["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(){gt(this.$refs.superUserConfirmModal).modal({dismissible:!1}).modal("open")},confirmReset2FA:function(){gt(this.$refs.twofaConfirmModal).modal({dismissible:!1}).modal("open")},toggleSuperuserAccess:function(){var e=this;this.isSavingUserInfo=!0,r["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(o["readonly"])(e.theUser)})}))},createUser:function(){var e=this;return this.isSavingUserInfo=!0,r["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&&(gt(e.$refs.changePasswordModal).modal("close"),e.updateUser())};gt(this.$refs.changePasswordModal).modal({dismissible:!1,onOpenEnd:function(){e.isShowingPasswordConfirm=!1,gt(".modal.open #currentUserPassword").focus().off("keypress").keypress(t)}}).modal("open")},showUserSavedNotification:function(){r["NotificationsStore"].show({message:Object(r["translate"])("General_YourChangesHaveBeenSaved"),context:"success",type:"toast"})},reset2FA:function(){var e=this;return this.isResetting2FA=!0,r["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,r["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}).catch((function(t){throw e.isSavingUserInfo=!1,e.passwordConfirmation="",t})).then((function(){e.isSavingUserInfo=!1,e.passwordConfirmation="",e.isUserModified=!0,e.isPasswordModified=!1,e.resetPasswordVar(),e.showUserSavedNotification()}))},setSuperUserAccessChecked:function(){this.superUserAccessChecked=!!this.theUser.superuser_access},onDoneEditing:function(){this.$emit("done",{isUserModified:this.isUserModified})}},computed:{formTitle:function(){return this.isAdd?Object(r["translate"])("UsersManager_AddNewUser"):Object(r["translate"])("UsersManager_EditUser")},saveButtonLabel:function(){return this.isAdd?Object(r["translate"])("UsersManager_CreateUser"):Object(r["translate"])("UsersManager_SaveBasicInfo")},isAdd:function(){return!this.user},changePasswordTitle:function(){return Object(r["translate"])("UsersManager_AreYouSureChangeDetails","<strong>".concat(this.theUser.login,"</strong>"))}}});Ot.render=pt;var jt=Ot,vt=(Object(r["createAngularJsAdapter"])({component:jt,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"}),Ct={class:"col s12 m12 l6"},kt={class:"input-field col s12 m4 l4"},Nt={id:"user-list-bulk-actions",class:"dropdown-content"},yt={class:"dropdown-trigger","data-target":"bulk-set-access"},At={id:"bulk-set-access",class:"dropdown-content"},Et=["onClick"],Vt={key:0},St={class:"input-field col s12 m4 l4"},Ut={class:"permissions-for-selector"},Tt={class:"input-field col s12 m4 l4"},wt={key:0,class:"input-field col s12 m12 l6 users-list-pagination-container"},Mt={class:"usersListPagination"},Bt={class:"pointer"},_t={class:"counter"},Lt={key:0},Rt={class:"pointer"},xt={key:0,class:"roles-help-notification"},Dt=["innerHTML"],Pt={class:"select-cell"},Ht={class:"checkbox-container"},Ft=Object(o["createElementVNode"])("span",null,null,-1),It={class:"first"},Gt={class:"role_header"},$t={style:{"margin-right":"3.5px"}},Jt=Object(o["createElementVNode"])("span",{class:"icon-help"},null,-1),qt=[Jt],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"],on=["id"],an={class:"select-cell"},cn={class:"checkbox-container"},ln=["id","onUpdate:modelValue"],dn=Object(o["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"},fn={key:1,class:"icon-close"},gn={key:2,id:"last_seen"},On={class:"center actions-cell"},jn=["onClick"],vn=Object(o["createElementVNode"])("span",{class:"icon-edit"},null,-1),Cn=[vn],kn=["onClick"],Nn=Object(o["createElementVNode"])("span",{class:"icon-delete"},null,-1),yn=[Nn],An={class:"delete-user-confirm-modal modal",ref:"deleteUserConfirmModal"},En={class:"modal-content"},Vn=["innerHTML"],Sn=["innerHTML"],Un={class:"modal-footer"},Tn={class:"change-user-role-confirm-modal modal",ref:"changeUserRoleConfirmModal"},wn={class:"modal-content"},Mn=["innerHTML"],Bn={key:1},_n=["innerHTML"],Ln=["innerHTML"],Rn={class:"modal-footer"};
+ */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"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function xn(e,t,n,s,i,r){var a=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("ActivityIndicator"),l=Object(o["resolveComponent"])("Notification"),d=Object(o["resolveComponent"])("ContentBlock"),u=Object(o["resolveDirective"])("dropdown-menu"),m=Object(o["resolveDirective"])("content-table");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])(["pagedUsersList",{loading:e.isLoadingUsers}])},[Object(o["createElementVNode"])("div",vt,[Object(o["createElementVNode"])("div",Ct,[Object(o["createElementVNode"])("div",kt,[Object(o["withDirectives"])(Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["dropdown-trigger btn bulk-actions",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-list-bulk-actions"},[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[u]]),Object(o["createElementVNode"])("ul",Nt,[Object(o["createElementVNode"])("li",null,[Object(o["withDirectives"])(Object(o["createElementVNode"])("a",yt,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[u]]),Object(o["createElementVNode"])("ul",At,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.bulkActionAccessLevels,(function(t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("li",{key:t.key},[Object(o["createElementVNode"])("a",{href:"",onClick:Object(o["withModifiers"])((function(n){e.userToChange=null,e.roleToChangeTo=t.key,e.showAccessChangeConfirm()}),["prevent"])},Object(o["toDisplayString"])(t.value),9,Et)])})),128))])]),Object(o["createElementVNode"])("li",null,[Object(o["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(o["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo="noaccess",e.showAccessChangeConfirm()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)]),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("li",Vt,[Object(o["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(o["withModifiers"])((function(t){return e.showDeleteConfirm()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("UsersManager_DeleteUsers")),1)])):Object(o["createCommentVNode"])("",!0)])]),Object(o["createElementVNode"])("div",St,[Object(o["createElementVNode"])("div",Ut,[Object(o["createVNode"])(a,{"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(o["createElementVNode"])("div",Tt,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{"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(o["openBlock"])(),Object(o["createElementBlock"])("div",wt,[Object(o["createElementVNode"])("div",Mt,[Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["btn prev",{disabled:e.searchParams.offset<=0}]),onClick:t[4]||(t[4]=Object(o["withModifiers"])((function(t){return e.gotoPreviousPage()}),["prevent"]))},[Object(o["createElementVNode"])("span",Bt,"« "+Object(o["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(o["createElementVNode"])("div",_t,[e.isLoadingUsers?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",Lt,Object(o["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.totalEntries)),1)),e.isLoadingUsers?(Object(o["openBlock"])(),Object(o["createBlock"])(c,{key:1,loading:e.isLoadingUsers},null,8,["loading"])):Object(o["createCommentVNode"])("",!0)]),Object(o["createElementVNode"])("a",{class:Object(o["normalizeClass"])(["btn next",{disabled:e.searchParams.offset+e.searchParams.limit>=e.totalEntries}]),onClick:t[5]||(t[5]=Object(o["withModifiers"])((function(t){return e.gotoNextPage()}),["prevent"]))},[Object(o["createElementVNode"])("span",Rt,Object(o["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(o["createCommentVNode"])("",!0)]),e.isRoleHelpToggled?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",xt,[Object(o["createVNode"])(l,{context:"info",type:"persistent",noclear:!0},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("span",{innerHTML:e.rolesHelpText},null,8,Dt)]})),_:1})])):Object(o["createCommentVNode"])("",!0),Object(o["createVNode"])(d,null,{default:Object(o["withCtx"])((function(){return[Object(o["withDirectives"])(Object(o["createElementVNode"])("table",{id:"manageUsersTable",class:Object(o["normalizeClass"])({loading:e.isLoadingUsers})},[Object(o["createElementVNode"])("thead",null,[Object(o["createElementVNode"])("tr",null,[Object(o["createElementVNode"])("th",Pt,[Object(o["createElementVNode"])("span",Ht,[Object(o["createElementVNode"])("label",null,[Object(o["withDirectives"])(Object(o["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),[[o["vModelCheckbox"],e.isAllCheckboxSelected]]),Ft])])]),Object(o["createElementVNode"])("th",It,Object(o["toDisplayString"])(e.translate("UsersManager_Username")),1),Object(o["createElementVNode"])("th",Gt,[Object(o["createElementVNode"])("span",$t,Object(o["toDisplayString"])(e.translate("UsersManager_RoleFor")),1),Object(o["createElementVNode"])("a",{href:"",class:Object(o["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[8]||(t[8]=Object(o["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},qt,2),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{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(o["openBlock"])(),Object(o["createElementBlock"])("th",zt,Object(o["toDisplayString"])(e.translate("UsersManager_Email")),1)):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("th",{key:1,title:e.translate("UsersManager_UsesTwoFactorAuthentication")},Object(o["toDisplayString"])(e.translate("UsersManager_2FA")),9,Wt)):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("th",Yt,Object(o["toDisplayString"])(e.translate("UsersManager_LastSeen")),1)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("th",Xt,[Object(o["createElementVNode"])("div",null,Object(o["toDisplayString"])(e.translate("General_Actions")),1)])])]),Object(o["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.users.length&&e.users.length<e.totalEntries?(Object(o["openBlock"])(),Object(o["createElementBlock"])("tr",Kt,[Object(o["createElementVNode"])("td",Qt,[e.areAllResultsSelected?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Zt,[Object(o["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_TheDisplayedUsersAreSelected","<strong>".concat(e.users.length,"</strong>")),style:{"margin-right":"3.5px"}},null,8,en),Object(o["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[10]||(t[10]=Object(o["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(o["openBlock"])(),Object(o["createElementBlock"])("div",nn,[Object(o["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_AllUsersAreSelected","<strong>".concat(e.totalEntries,"</strong>")),style:{"margin-right":"3.5px"}},null,8,sn),Object(o["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[11]||(t[11]=Object(o["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.translate("UsersManager_ClickToSelectDisplayedUsers","<strong>".concat(e.users.length,"</strong>"))},null,8,rn)])):Object(o["createCommentVNode"])("",!0)])])):Object(o["createCommentVNode"])("",!0),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.users,(function(n,s){return Object(o["openBlock"])(),Object(o["createElementBlock"])("tr",{id:"row".concat(s),key:n.login},[Object(o["createElementVNode"])("td",an,[Object(o["createElementVNode"])("span",cn,[Object(o["createElementVNode"])("label",null,[Object(o["withDirectives"])(Object(o["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,ln),[[o["vModelCheckbox"],e.selectedRows[s]]]),dn])])]),Object(o["createElementVNode"])("td",un,Object(o["toDisplayString"])(n.login),1),Object(o["createElementVNode"])("td",mn,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{"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(o["openBlock"])(),Object(o["createElementBlock"])("td",bn,Object(o["toDisplayString"])(n.email),1)):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("td",pn,[n.uses_2fa?(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",hn)):Object(o["createCommentVNode"])("",!0),n.uses_2fa?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",fn))])):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(o["openBlock"])(),Object(o["createElementBlock"])("td",gn,Object(o["toDisplayString"])(n.last_seen?"".concat(n.last_seen," ago"):"-"),1)):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("td",On,["anonymous"!==n.login?(Object(o["openBlock"])(),Object(o["createElementBlock"])("button",{key:0,class:"edituser table-action",title:"Edit",onClick:function(t){return e.$emit("editUser",{user:n})}},Cn,8,jn)):Object(o["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&"anonymous"!==n.login?(Object(o["openBlock"])(),Object(o["createElementBlock"])("button",{key:1,class:"deleteuser table-action",title:"Delete",onClick:function(t){e.userToChange=n,e.showDeleteConfirm()}},yn,8,kn)):Object(o["createCommentVNode"])("",!0)])],8,on)})),128))])],2),[[m]])]})),_:1}),Object(o["createElementVNode"])("div",An,[Object(o["createElementVNode"])("div",En,[e.userToChange?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h3",{key:0,innerHTML:e.translate("UsersManager_DeleteUserConfirmSingle","<strong>".concat(e.userToChange.login,"</strong>"))},null,8,Vn)):Object(o["createCommentVNode"])("",!0),e.userToChange?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",{key:1,innerHTML:e.translate("UsersManager_DeleteUserConfirmMultiple","<strong>".concat(e.affectedUsersCount,"</strong>"))},null,8,Sn))]),Object(o["createElementVNode"])("div",Un,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[13]||(t[13]=Object(o["withModifiers"])((function(t){return e.deleteRequestedUsers()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[14]||(t[14]=Object(o["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512),Object(o["createElementVNode"])("div",Tn,[Object(o["createElementVNode"])("div",wn,[e.userToChange?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deleteUserPermConfirmSingleText)},null,8,Mn)):Object(o["createCommentVNode"])("",!0),e.userToChange&&"anonymous"===e.userToChange.login&&"view"===e.roleToChangeTo?(Object(o["openBlock"])(),Object(o["createElementBlock"])("h3",Bn,[Object(o["createElementVNode"])("em",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("General_Note"))+": ",1),Object(o["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_AnonymousUserRoleChangeWarning","anonymous",e.getRoleDisplay(e.roleToChangeTo))},null,8,_n)])])):Object(o["createCommentVNode"])("",!0),e.userToChange?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",{key:2,innerHTML:e.deleteUserPermConfirmMultipleText},null,8,Ln))]),Object(o["createElementVNode"])("div",Rn,[Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(o["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(o["toDisplayString"])(e.translate("General_Yes")),1),Object(o["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(o["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(o["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var Dn=window,Pn=Dn.$,Hn=Object(o["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:f["Field"],ActivityIndicator:r["ActivityIndicator"],Notification:r["Notification"],ContentBlock:r["ContentBlock"]},directives:{DropdownMenu:r["DropdownMenu"],ContentTable:r["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(r["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 i=parseInt(s,10);e.selectedRows[s]&&t[i]&&n.push(t[i])})),n},rolesHelpText:function(){var e="https://matomo.org/faq/general/faq_70/",t="https://matomo.org/faq/general/faq_69/";return Object(r["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(r["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(r["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}))}}});Hn.render=xn;var Fn=Hn;
+ */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"};
/*!
* 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:Fn,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"})}})}));
+ */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};
+/*!
+ * 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"});
+/*!
+ * 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"};
+/*!
+ * 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,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;
+/*!
+ * 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:Ms,scope:{isUsersAdminEnabled:{angularJsBind:"<"},title:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userEmail:{angularJsBind:"<"},currentLanguageCode:{angularJsBind:"<"},languageOptions:{angularJsBind:"<"},currentTimeformat:{angularJsBind:"<"},timeFormats:{angularJsBind:"<"},defaultReport:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"},defaultReportIdSite:{angularJsBind:"<"},defaultReportSiteName:{angularJsBind:"<"},defaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"}},directiveName:"matomoPersonalSettings"})}})}));
//# sourceMappingURL=UsersManager.umd.min.js.map \ No newline at end of file
diff --git a/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.adapter.ts b/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.adapter.ts
new file mode 100644
index 0000000000..527658d73c
--- /dev/null
+++ b/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.adapter.ts
@@ -0,0 +1,37 @@
+/*!
+ * 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 AnonymousSettings from './AnonymousSettings.vue';
+
+export default createAngularJsAdapter({
+ component: AnonymousSettings,
+ scope: {
+ title: {
+ angularJsBind: '<',
+ },
+ anonymousSites: {
+ angularJsBind: '<',
+ },
+ anonymousDefaultReport: {
+ angularJsBind: '<',
+ },
+ anonymousDefaultSite: {
+ angularJsBind: '<',
+ },
+ anonymousDefaultDate: {
+ angularJsBind: '<',
+ },
+ availableDefaultDates: {
+ angularJsBind: '<',
+ },
+ defaultReportOptions: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'matomoAnonymousSettings',
+});
diff --git a/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue b/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.vue
new file mode 100644
index 0000000000..7d0485fb4f
--- /dev/null
+++ b/plugins/UsersManager/vue/src/AnonymousSettings/AnonymousSettings.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>
+ <ContentBlock :content-title="title">
+ <div class="alert alert-info" v-if="anonymousSites.length === 0">
+ {{ translate('UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2') }}
+ </div>
+
+ <div v-form v-if="anonymousSites.length > 0">
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="anonymousDefaultReport"
+ v-model="defaultReport"
+ :introduction="translate(
+ 'UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess',
+ )"
+ :options="defaultReportOptions"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="select"
+ name="anonymousDefaultReportWebsite"
+ v-model="defaultReportWebsite"
+ :options="anonymousSites"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="anonymousDefaultDate"
+ v-model="defaultDate"
+ :introduction="translate('UsersManager_ForAnonymousUsersReportDateToLoadByDefault')"
+ :options="availableDefaultDates"
+ />
+ </div>
+
+ <SaveButton
+ :saving="loading"
+ @confirm="save()"
+ />
+ </div>
+ </ContentBlock>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ AjaxHelper,
+ ContentBlock,
+ NotificationsStore,
+ translate,
+} from 'CoreHome';
+import { Form, SaveButton, Field } from 'CorePluginsAdmin';
+
+interface AnonymousSettingsState {
+ defaultReport: string;
+ loading: boolean;
+ defaultReportWebsite: string|number;
+ defaultDate: string;
+}
+
+export default defineComponent({
+ props: {
+ title: {
+ type: String,
+ required: true,
+ },
+ anonymousSites: {
+ type: Array,
+ required: true,
+ },
+ anonymousDefaultReport: {
+ type: [String, Number],
+ required: true,
+ },
+ anonymousDefaultSite: {
+ type: String,
+ required: true,
+ },
+ anonymousDefaultDate: {
+ type: String,
+ required: true,
+ },
+ availableDefaultDates: {
+ type: Object,
+ required: true,
+ },
+ defaultReportOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ ContentBlock,
+ SaveButton,
+ Field,
+ },
+ directives: {
+ Form,
+ },
+ data(): AnonymousSettingsState {
+ return {
+ loading: false,
+ defaultReport: `${this.anonymousDefaultReport}`,
+ defaultReportWebsite: this.anonymousDefaultSite,
+ defaultDate: this.anonymousDefaultDate,
+ };
+ },
+ methods: {
+ save() {
+ const postParams = {
+ anonymousDefaultReport: this.defaultReport === '1'
+ ? this.defaultReportWebsite
+ : this.defaultReport,
+ anonymousDefaultDate: this.defaultDate,
+ };
+
+ this.loading = true;
+
+ AjaxHelper.post(
+ {
+ module: 'UsersManager',
+ action: 'recordAnonymousUserSettings',
+ format: 'json',
+ },
+ postParams,
+ { withTokenInUrl: true },
+ ).then(() => {
+ const id = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'anonymousUserSettings',
+ context: 'success',
+ type: 'transient',
+ });
+ NotificationsStore.scrollToNotification(id);
+ }).finally(() => {
+ this.loading = false;
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.adapter.ts b/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.adapter.ts
new file mode 100644
index 0000000000..3194a6976b
--- /dev/null
+++ b/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.adapter.ts
@@ -0,0 +1,15 @@
+/*!
+ * 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 NewsletterSettings from './NewsletterSettings.vue';
+
+export default createAngularJsAdapter({
+ component: NewsletterSettings,
+ scope: {},
+ directiveName: 'matomoNewsletterSettings',
+});
diff --git a/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue b/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue
new file mode 100644
index 0000000000..5b1dc203e8
--- /dev/null
+++ b/plugins/UsersManager/vue/src/NewsletterSettings/NewsletterSettings.vue
@@ -0,0 +1,116 @@
+<!--
+ 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="newsletterSignup"
+ v-show="showNewsletterSignup"
+ >
+ <ContentBlock
+ :content-title="translate('UsersManager_NewsletterSignupTitle')"
+ >
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="newsletterSignupCheckbox"
+ id="newsletterSignupCheckbox"
+ v-model="newsletterSignupCheckbox"
+ :full-width="true"
+ :title="signupTitleText"
+ />
+ </div>
+
+ <SaveButton
+ id="newsletterSignupBtn"
+ @confirm="signupForNewsletter()"
+ :disabled="!newsletterSignupCheckbox"
+ :value="newsletterSignupButtonTitle"
+ :saving="isProcessingNewsletterSignup"
+ />
+ </ContentBlock>
+ </div>
+
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ AjaxHelper,
+ ContentBlock,
+ translate,
+ NotificationsStore,
+} from 'CoreHome';
+import { SaveButton, Field } from 'CorePluginsAdmin';
+
+interface NewsletterSettingsState {
+ showNewsletterSignup: boolean;
+ newsletterSignupCheckbox: boolean;
+ isProcessingNewsletterSignup: boolean;
+ newsletterSignupButtonTitle: string;
+}
+
+export default defineComponent({
+ data(): NewsletterSettingsState {
+ return {
+ showNewsletterSignup: true,
+ newsletterSignupCheckbox: false,
+ isProcessingNewsletterSignup: false,
+ newsletterSignupButtonTitle: translate('General_Save'),
+ };
+ },
+ components: {
+ ContentBlock,
+ SaveButton,
+ Field,
+ },
+ computed: {
+ signupTitleText() {
+ return translate(
+ 'UsersManager_NewsletterSignupMessage',
+ '<a href="https://matomo.org/privacy-policy/" target="_blank">',
+ '</a>',
+ );
+ },
+ },
+ methods: {
+ signupForNewsletter() {
+ this.newsletterSignupButtonTitle = translate('General_Loading');
+
+ this.isProcessingNewsletterSignup = true;
+
+ AjaxHelper.fetch(
+ {
+ module: 'API',
+ method: 'UsersManager.newsletterSignup',
+ },
+ { withTokenInUrl: true },
+ ).then(() => {
+ this.isProcessingNewsletterSignup = false;
+ this.showNewsletterSignup = false;
+
+ const id = NotificationsStore.show({
+ message: translate('UsersManager_NewsletterSignupSuccessMessage'),
+ id: 'newslettersignup',
+ context: 'success',
+ type: 'transient',
+ });
+ NotificationsStore.scrollToNotification(id);
+ }).catch(() => {
+ this.isProcessingNewsletterSignup = false;
+
+ const id = NotificationsStore.show({
+ message: translate('UsersManager_NewsletterSignupFailureMessage'),
+ id: 'newslettersignup',
+ context: 'error',
+ type: 'transient',
+ });
+ NotificationsStore.scrollToNotification(id);
+
+ this.newsletterSignupButtonTitle = translate('General_PleaseTryAgain');
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
index f82f4a547e..dc151fe183 100644
--- a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
+++ b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.less
@@ -1,4 +1,4 @@
-piwik-paged-users-list {
+.pagedUsersList {
display: block;
position: relative;
@@ -165,7 +165,7 @@ piwik-paged-users-list {
}
- .pagedUsersList.loading {
+ &.loading {
table {
opacity: 0.5;
}
@@ -181,7 +181,7 @@ piwik-paged-users-list {
}
}
- div[piwik-activity-indicator] {
+ .loadingPiwik {
position: absolute;
top: 50%;
left: 50%;
@@ -198,11 +198,11 @@ piwik-paged-users-list {
}
}
-#root piwik-paged-users-list .siteSelector.borderedControl {
+#root .pagedUsersList .siteSelector.borderedControl {
background-color: white;
width: 150px;
}
-#content piwik-paged-users-list .sites_autocomplete > .siteSelector {
+#content .pagedUsersList .sites_autocomplete > .siteSelector {
position: static;
}
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
index 28ba40b687..6fbb4f3324 100644
--- a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
+++ b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
@@ -112,7 +112,7 @@
</a>
<div class="counter">
<span
- v-if="!isLoadingUsers"
+ :class="{ visibility: isLoadingUsers ? 'hidden' : 'visible' }"
>
{{ translate(
'General_Pagination',
@@ -122,7 +122,6 @@
) }}
</span>
<ActivityIndicator
- v-if="isLoadingUsers"
:loading="isLoadingUsers"
/>
</div>
@@ -410,19 +409,13 @@ import {
} from 'CoreHome';
import { Field } from 'CorePluginsAdmin';
import User from '../User';
+import SearchParams from './SearchParams';
interface AccessLevel {
key: string;
value: unknown;
}
-interface SearchParams {
- idSite: number|string;
- limit: number;
- offset: number;
- filter_search?: string;
-}
-
interface PagedUsersListState {
areAllResultsSelected: boolean;
selectedRows: Record<string, boolean>;
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/SearchParams.ts b/plugins/UsersManager/vue/src/PagedUsersList/SearchParams.ts
new file mode 100644
index 0000000000..9fd4b7f657
--- /dev/null
+++ b/plugins/UsersManager/vue/src/PagedUsersList/SearchParams.ts
@@ -0,0 +1,16 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+interface SearchParams {
+ idSite: number|string;
+ limit: number;
+ offset: number;
+ filter_search: string;
+ filter_access: string;
+}
+
+export default SearchParams;
diff --git a/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.adapter.ts b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.adapter.ts
new file mode 100644
index 0000000000..30c3fad7b1
--- /dev/null
+++ b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.adapter.ts
@@ -0,0 +1,58 @@
+/*!
+ * 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 PersonalSettings from './PersonalSettings.vue';
+
+export default createAngularJsAdapter({
+ component: PersonalSettings,
+ scope: {
+ isUsersAdminEnabled: {
+ angularJsBind: '<',
+ },
+ title: {
+ angularJsBind: '<',
+ },
+ userLogin: {
+ angularJsBind: '<',
+ },
+ userEmail: {
+ angularJsBind: '<',
+ },
+ currentLanguageCode: {
+ angularJsBind: '<',
+ },
+ languageOptions: {
+ angularJsBind: '<',
+ },
+ currentTimeformat: {
+ angularJsBind: '<',
+ },
+ timeFormats: {
+ angularJsBind: '<',
+ },
+ defaultReport: {
+ angularJsBind: '<',
+ },
+ defaultReportOptions: {
+ angularJsBind: '<',
+ },
+ defaultReportIdSite: {
+ angularJsBind: '<',
+ },
+ defaultReportSiteName: {
+ angularJsBind: '<',
+ },
+ defaultDate: {
+ angularJsBind: '<',
+ },
+ availableDefaultDates: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'matomoPersonalSettings',
+});
diff --git a/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.vue
new file mode 100644
index 0000000000..927368a371
--- /dev/null
+++ b/plugins/UsersManager/vue/src/PersonalSettings/PersonalSettings.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>
+ <ContentBlock :content-title="title" :feature="'true'">
+ <form id="userSettingsTable" v-form>
+
+ <div>
+ <Field
+ uicontrol="text"
+ name="username"
+ :title="translate('General_Username')"
+ :disabled="true"
+ v-model="username"
+ :inline-help="translate('UsersManager_YourUsernameCannotBeChanged')"
+ />
+ </div>
+
+ <div v-if="isUsersAdminEnabled">
+ <Field
+ uicontrol="text"
+ name="email"
+ :model-value="email"
+ @update:model-value="email = $event; doesRequirePasswordConfirmation = true"
+ :maxlength="100"
+ :title="translate('UsersManager_Email')"
+ />
+ </div>
+
+ <div id="languageHelp" class="inline-help-node">
+ <a target="_blank" rel="noreferrer noopener" href="https://matomo.org/translations/">
+ {{ translate('LanguagesManager_AboutPiwikTranslations') }}</a>
+ </div>
+
+ <div>
+ <Field
+ uicontrol="select"
+ name="language"
+ v-model="language"
+ :title="translate('General_Language')"
+ :options="languageOptions"
+ inline-help="#languageHelp"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="select"
+ name="timeformat"
+ v-model="timeformat"
+ :title="translate('General_TimeFormat')"
+ :options="timeFormats"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="defaultReport"
+ v-model="theDefaultReport"
+ :introduction="translate('UsersManager_ReportToLoadByDefault')"
+ :title="translate('General_AllWebsitesDashboard')"
+ :options="defaultReportOptions"
+ />
+ </div>
+
+ <div
+ class="sites_autocomplete"
+ >
+ <SiteSelector
+ v-model="site"
+ :show-selected-site="true"
+ :switch-site-on-select="false"
+ :show-all-sites-item="false"
+ :showselectedsite="true"
+ id="defaultReportSiteSelector"
+ />
+ </div>
+
+ <div>
+ <Field
+ uicontrol="radio"
+ name="defaultDate"
+ v-model="theDefaultDate"
+ :introduction="translate('UsersManager_ReportDateToLoadByDefault')"
+ :options="availableDefaultDates"
+ />
+ </div>
+
+ <SaveButton @confirm="save()" :saving="loading"/>
+
+ <div class="modal" id="confirmChangesWithPassword" ref="confirmChangesWithPasswordModal">
+ <div class="modal-content">
+ <h2>{{ translate('UsersManager_ConfirmWithPassword') }}</h2>
+
+ <div>
+ <Field
+ uicontrol="password"
+ name="currentPassword"
+ :autocomplete="false"
+ v-model="passwordCurrent"
+ :full-width="true"
+ :title="translate('UsersManager_YourCurrentPassword')"
+ />
+ </div>
+ </div>
+ <div class="modal-footer">
+ <a href="" class="modal-action btn" @click.prevent="save()" style="margin-right:3.5px">
+ {{ translate('General_Ok') }}
+ </a>
+ <a
+ href=""
+ class="modal-action modal-close modal-no"
+ @click.prevent="passwordCurrent = ''"
+ >
+ {{ translate('General_Cancel') }}
+ </a>
+ </div>
+ </div>
+ </form>
+ </ContentBlock>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ AjaxHelper,
+ ContentBlock,
+ SiteRef,
+ SiteSelector,
+ NotificationsStore,
+ translate,
+ Matomo,
+} from 'CoreHome';
+import {
+ SaveButton,
+ Field,
+ Form,
+} from 'CorePluginsAdmin';
+
+interface PersonalSettingsState {
+ doesRequirePasswordConfirmation: boolean;
+ username: string;
+ email: string;
+ language: string;
+ timeformat: number;
+ theDefaultReport: string;
+ site: SiteRef;
+ theDefaultDate: string;
+ loading: boolean;
+ passwordCurrent: string;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ isUsersAdminEnabled: {
+ type: Boolean,
+ required: true,
+ },
+ title: {
+ type: String,
+ required: true,
+ },
+ userLogin: {
+ type: String,
+ required: true,
+ },
+ userEmail: {
+ type: String,
+ required: true,
+ },
+ currentLanguageCode: {
+ type: String,
+ required: true,
+ },
+ languageOptions: {
+ type: Object,
+ required: true,
+ },
+ currentTimeformat: {
+ type: Number,
+ required: true,
+ },
+ timeFormats: {
+ type: Object,
+ required: true,
+ },
+ defaultReport: {
+ type: String,
+ required: true,
+ },
+ defaultReportOptions: {
+ type: Object,
+ required: true,
+ },
+ defaultReportIdSite: {
+ type: [String, Number],
+ required: true,
+ },
+ defaultReportSiteName: {
+ type: String,
+ required: true,
+ },
+ defaultDate: {
+ type: String,
+ required: true,
+ },
+ availableDefaultDates: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ ContentBlock,
+ SaveButton,
+ Field,
+ SiteSelector,
+ },
+ directives: {
+ Form,
+ },
+ data(): PersonalSettingsState {
+ return {
+ doesRequirePasswordConfirmation: false,
+ username: this.userLogin,
+ email: this.userEmail,
+ language: this.currentLanguageCode,
+ timeformat: this.currentTimeformat,
+ theDefaultReport: this.defaultReport,
+ site: {
+ id: this.defaultReportIdSite,
+ name: Matomo.helper.htmlDecode(this.defaultReportSiteName),
+ },
+ theDefaultDate: this.defaultDate,
+ loading: false,
+ passwordCurrent: '',
+ };
+ },
+ methods: {
+ save() {
+ if (this.doesRequirePasswordConfirmation && !this.passwordCurrent) {
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ $(this.$refs.confirmChangesWithPasswordModal! as HTMLElement).modal({
+ dismissible: false,
+ ready: () => {
+ $('.modal.open #currentPassword').focus();
+ },
+ }).modal('open');
+ return;
+ }
+
+ const modal = M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal! as HTMLElement);
+ if (modal) {
+ modal.close();
+ }
+
+ const postParams: QueryParameters = {
+ email: this.email,
+ defaultReport: this.theDefaultReport === 'MultiSites'
+ ? this.theDefaultReport
+ : this.site.id,
+ defaultDate: this.theDefaultDate,
+ language: this.language,
+ timeformat: this.timeformat,
+ };
+
+ if (this.passwordCurrent) {
+ postParams.passwordConfirmation = this.passwordCurrent;
+ }
+
+ this.loading = true;
+
+ AjaxHelper.post(
+ {
+ module: 'UsersManager',
+ action: 'recordUserSettings',
+ format: 'json',
+ },
+ postParams,
+ {
+ withTokenInUrl: true,
+ },
+ ).then(() => {
+ const id = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'PersonalSettingsSuccess',
+ context: 'success',
+ type: 'transient',
+ });
+ NotificationsStore.scrollToNotification(id);
+
+ this.doesRequirePasswordConfirmation = false;
+ this.passwordCurrent = '';
+ this.loading = false;
+ }).catch(() => {
+ this.loading = false;
+ this.passwordCurrent = '';
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/UsersManager/vue/src/User.ts b/plugins/UsersManager/vue/src/User.ts
index 00520a3c4f..aca7bf9cf8 100644
--- a/plugins/UsersManager/vue/src/User.ts
+++ b/plugins/UsersManager/vue/src/User.ts
@@ -11,6 +11,7 @@ interface User {
uses_2fa: boolean;
password?: string;
email: string;
+ role?: string;
}
export default User;
diff --git a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less
index f08a3079c5..ded524b878 100644
--- a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less
+++ b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.less
@@ -32,7 +32,7 @@
.siteSelector {
width: calc(~'100% - 25px');
}
- [piwik-siteselector] {
+ .sites_autocomplete {
margin-bottom: 1rem;
.title {
diff --git a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
index 6b1d34864c..e926909676 100644
--- a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
+++ b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
@@ -244,7 +244,7 @@
<Field
v-model="passwordConfirmation"
uicontrol="password"
- name="currentUserPassword"
+ name="currentUserPasswordTwoFa"
:autocomplete="false"
:full-width="true"
:title="translate('UsersManager_YourCurrentPassword')"
@@ -276,7 +276,7 @@
<Field
v-model="passwordConfirmation"
uicontrol="password"
- name="currentUserPassword"
+ name="currentUserPasswordChangePwd"
:autocomplete="false"
:full-width="true"
:title="translate('UsersManager_YourCurrentPassword')"
@@ -498,7 +498,7 @@ export default defineComponent({
dismissible: false,
onOpenEnd: () => {
this.isShowingPasswordConfirm = false;
- $('.modal.open #currentUserPassword').focus().off('keypress').keypress(onEnter);
+ $('.modal.open #currentUserPasswordChangePwd').focus().off('keypress').keypress(onEnter);
},
}).modal('open');
},
@@ -542,11 +542,7 @@ export default defineComponent({
passwordConfirmation: this.passwordConfirmation ? this.passwordConfirmation : undefined,
email: this.theUser.email,
},
- ).catch((e) => {
- this.isSavingUserInfo = false;
- this.passwordConfirmation = '';
- throw e;
- }).then(() => {
+ ).then(() => {
this.isSavingUserInfo = false;
this.passwordConfirmation = '';
this.isUserModified = true;
@@ -554,6 +550,9 @@ export default defineComponent({
this.resetPasswordVar();
this.showUserSavedNotification();
+ }).catch(() => {
+ this.isSavingUserInfo = false;
+ this.passwordConfirmation = '';
});
},
setSuperUserAccessChecked() {
diff --git a/plugins/UsersManager/vue/src/UsersManager/UsersManager.adapter.ts b/plugins/UsersManager/vue/src/UsersManager/UsersManager.adapter.ts
new file mode 100644
index 0000000000..2bfae741ff
--- /dev/null
+++ b/plugins/UsersManager/vue/src/UsersManager/UsersManager.adapter.ts
@@ -0,0 +1,32 @@
+/*!
+ * 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 UsersManager from './UsersManager.vue';
+
+export default createAngularJsAdapter({
+ component: UsersManager,
+ scope: {
+ currentUserRole: {
+ angularJsBind: '<',
+ },
+ initialSiteName: {
+ angularJsBind: '@',
+ },
+ initialSiteId: {
+ angularJsBind: '@',
+ },
+ accessLevels: {
+ angularJsBind: '<',
+ },
+ filterAccessLevels: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'piwikUsersManager',
+ restrict: 'E',
+});
diff --git a/plugins/UsersManager/angularjs/users-manager/users-manager.component.less b/plugins/UsersManager/vue/src/UsersManager/UsersManager.less
index ebbf146898..ebbf146898 100644
--- a/plugins/UsersManager/angularjs/users-manager/users-manager.component.less
+++ b/plugins/UsersManager/vue/src/UsersManager/UsersManager.less
diff --git a/plugins/UsersManager/vue/src/UsersManager/UsersManager.vue b/plugins/UsersManager/vue/src/UsersManager/UsersManager.vue
new file mode 100644
index 0000000000..b849b0c18c
--- /dev/null
+++ b/plugins/UsersManager/vue/src/UsersManager/UsersManager.vue
@@ -0,0 +1,338 @@
+<!--
+ 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="usersManager" v-tooltips>
+ <div v-show="!isEditing">
+ <div v-content-intro>
+ <h2>
+ <EnrichedHeadline
+ help-url="https://matomo.org/docs/manage-users/"
+ feature-name="Users Management"
+ >
+ {{ translate('UsersManager_ManageUsers') }}
+ </EnrichedHeadline>
+ </h2>
+ <p v-if="currentUserRole === 'superuser'">
+ {{ translate('UsersManager_ManageUsersDesc') }}
+ </p>
+ <p v-if="currentUserRole === 'admin'">
+ {{ translate('UsersManager_ManageUsersAdminDesc') }}
+ </p>
+ <div class="row add-user-container">
+ <div class="col s12">
+ <div class="input-field" style="margin-right:3.5px">
+ <a
+ class="btn add-new-user"
+ @click="onAddNewUser()"
+ >
+ {{ translate('UsersManager_AddUser') }}
+ </a>
+ </div>
+ <div
+ class="input-field"
+ v-if="currentUserRole !== 'superuser'"
+ >
+ <a
+ class="btn add-existing-user"
+ @click="showAddExistingUserModal()"
+ >
+ {{ translate('UsersManager_AddExistingUser') }}
+ </a>
+ </div>
+ </div>
+ </div>
+ <PagedUsersList
+ @edit-user="onEditUser($event.user)"
+ @change-user-role="onChangeUserRole($event.users, $event.role)"
+ @delete-user="onDeleteUser($event.users)"
+ @search-change="searchParams = $event.params; fetchUsers()"
+ :initial-site-id="initialSiteId"
+ :initial-site-name="initialSiteName"
+ :is-loading-users="isLoadingUsers"
+ :current-user-role="currentUserRole"
+ :access-levels="accessLevels"
+ :filter-access-levels="actualFilterAccessLevels"
+ :search-params="searchParams"
+ :users="users"
+ :total-entries="totalEntries"
+ />
+ </div>
+ </div>
+ <!-- TODO: whether a user is being edited should be part of the URL -->
+ <div v-if="isEditing">
+ <UserEditForm
+ @done="onDoneEditing($event.isUserModified)"
+ :user="userBeingEdited"
+ :current-user-role="currentUserRole"
+ :access-levels="accessLevels"
+ :filter-access-levels="actualFilterAccessLevels"
+ :initial-site-id="initialSiteId"
+ :initial-site-name="initialSiteName"
+ @updated="userBeingEdited = $event.user"
+ />
+ </div>
+ <div class="add-existing-user-modal modal" ref="addExistingUserModal">
+ <div class="modal-content">
+ <h3>{{ translate('UsersManager_AddExistingUser') }}</h3>
+ <p>{{ translate('UsersManager_EnterUsernameOrEmail') }}:</p>
+ <div>
+ <Field
+ v-model="addNewUserLoginEmail"
+ name="add-existing-user-email"
+ uicontrol="text"
+ />
+ </div>
+ </div>
+ <div class="modal-footer">
+ <a
+ href
+ class="modal-action modal-close btn"
+ @click.prevent="addExistingUser()"
+ style="margin-right:3.5px"
+ >{{ translate('General_Add') }}</a>
+ <a
+ href
+ class="modal-action modal-close modal-no"
+ @click.prevent="addNewUserLoginEmail = null"
+ >{{ translate('General_Cancel') }}</a>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+/* eslint-disable newline-per-chained-call */
+
+import { defineComponent } from 'vue';
+import {
+ ContentIntro,
+ EnrichedHeadline,
+ Tooltips,
+ Matomo,
+ MatomoUrl,
+ AjaxHelper,
+} from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+import PagedUsersList from '../PagedUsersList/PagedUsersList.vue';
+import UserEditForm from '../UserEditForm/UserEditForm.vue';
+import User from '../User';
+import SearchParams from '../PagedUsersList/SearchParams';
+
+interface UsersManagerState {
+ isEditing: boolean;
+ isCurrentUserSuperUser: boolean;
+ users: User[];
+ userBeingEdited: User|null;
+ totalEntries: null|number;
+ searchParams: SearchParams;
+ isLoadingUsers: boolean;
+ addNewUserLoginEmail: string;
+}
+
+const NUM_USERS_PER_PAGE = 20;
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ currentUserRole: {
+ type: String,
+ required: true,
+ },
+ initialSiteName: {
+ type: String,
+ required: true,
+ },
+ initialSiteId: {
+ type: String,
+ required: true,
+ },
+ accessLevels: {
+ type: Array,
+ required: true,
+ },
+ filterAccessLevels: {
+ type: Array,
+ required: true,
+ },
+ },
+ components: {
+ EnrichedHeadline,
+ PagedUsersList,
+ UserEditForm,
+ Field,
+ },
+ directives: {
+ ContentIntro,
+ Tooltips,
+ },
+ data(): UsersManagerState {
+ return {
+ isEditing: !!MatomoUrl.urlParsed.value.showadduser,
+ isCurrentUserSuperUser: true,
+ users: [],
+ totalEntries: null,
+ searchParams: {
+ offset: 0,
+ limit: NUM_USERS_PER_PAGE,
+ filter_search: '',
+ filter_access: '',
+ idSite: this.initialSiteId,
+ },
+ isLoadingUsers: false,
+ userBeingEdited: null,
+ addNewUserLoginEmail: '',
+ };
+ },
+ created() {
+ this.fetchUsers();
+ },
+ watch: {
+ limit() {
+ this.fetchUsers();
+ },
+ },
+ methods: {
+ onEditUser(user: User) {
+ Matomo.helper.lazyScrollToContent();
+ this.isEditing = true;
+ this.userBeingEdited = user;
+ },
+ onDoneEditing(isUserModified: boolean) {
+ this.isEditing = false;
+ if (isUserModified) { // if a user was modified, we must reload the users list
+ this.fetchUsers();
+ }
+ },
+ showAddExistingUserModal() {
+ $(this.$refs.addExistingUserModal as HTMLElement).modal({ dismissible: false }).modal('open');
+ },
+ onChangeUserRole(users: User[]|string, role: string) {
+ this.isLoadingUsers = true;
+
+ Promise.resolve().then(() => {
+ if (users === 'all') {
+ return this.getAllUsersInSearch();
+ }
+ return users as User[];
+ }).then((usersResolved) => (
+ usersResolved.filter((u) => u.role !== 'superuser').map((u) => u.login)
+ )).then((userLogins) => {
+ const requests = userLogins.map((login) => ({
+ method: 'UsersManager.setUserAccess',
+ userLogin: login,
+ access: role,
+ idSites: this.searchParams.idSite,
+ ignoreSuperusers: 1,
+ }));
+
+ return AjaxHelper.fetch(requests, { createErrorNotification: true });
+ }).catch(() => {
+ // ignore (errors will still be displayed to the user)
+ }).then(() => this.fetchUsers());
+ },
+ getAllUsersInSearch() {
+ return AjaxHelper.fetch<User[]>({
+ method: 'UsersManager.getUsersPlusRole',
+ filter_search: this.searchParams.filter_search,
+ filter_access: this.searchParams.filter_access,
+ idSite: this.searchParams.idSite,
+ filter_limit: '-1',
+ });
+ },
+ onDeleteUser(users: User[]|string) {
+ this.isLoadingUsers = true;
+
+ Promise.resolve().then(() => {
+ if (users === 'all') {
+ return this.getAllUsersInSearch();
+ }
+ return users as User[];
+ }).then((usersResolved) => usersResolved.map((u) => u.login)).then((userLogins) => {
+ const requests = userLogins.map((login) => ({
+ method: 'UsersManager.deleteUser',
+ userLogin: login,
+ }));
+ return AjaxHelper.fetch(requests, { createErrorNotification: true });
+ }).catch(() => {
+ // ignore (errors will still be displayed to the user)
+ }).then(() => this.fetchUsers());
+ },
+ fetchUsers() {
+ this.isLoadingUsers = true;
+ return AjaxHelper.fetch<AjaxHelper>(
+ {
+ ...this.searchParams,
+ method: 'UsersManager.getUsersPlusRole',
+ },
+ { returnResponseObject: true },
+ ).then((helper) => {
+ const result = helper.getRequestHandle()!;
+
+ this.totalEntries = parseInt(
+ result.getResponseHeader('x-matomo-total-results') || '0',
+ 10,
+ );
+ this.users = result.responseJSON as User[];
+
+ this.isLoadingUsers = false;
+ }).catch(() => {
+ this.isLoadingUsers = false;
+ });
+ },
+ addExistingUser() {
+ this.isLoadingUsers = true;
+ return AjaxHelper.fetch<{ value: boolean }>({
+ method: 'UsersManager.userExists',
+ userLogin: this.addNewUserLoginEmail,
+ }).then((response) => {
+ if (response && response.value) {
+ return this.addNewUserLoginEmail;
+ }
+
+ return AjaxHelper.fetch<{ value: string }>({
+ method: 'UsersManager.getUserLoginFromUserEmail',
+ userEmail: this.addNewUserLoginEmail,
+ }).then((r) => r.value);
+ }).then((login) => (
+ AjaxHelper.post(
+ {
+ method: 'UsersManager.setUserAccess',
+ },
+ {
+ userLogin: login,
+ access: 'view',
+ idSites: this.searchParams.idSite,
+ },
+ )
+ )).then(
+ () => this.fetchUsers(),
+ ).catch(() => {
+ this.isLoadingUsers = false;
+ });
+ },
+ onAddNewUser() {
+ const parameters = { isAllowed: true };
+ Matomo.postEvent('UsersManager.initAddUser', parameters);
+ if (parameters && !parameters.isAllowed) {
+ return;
+ }
+
+ this.isEditing = true;
+ this.userBeingEdited = null;
+ },
+ },
+ computed: {
+ actualFilterAccessLevels() {
+ if (this.currentUserRole === 'superuser') {
+ return [...this.filterAccessLevels, { key: 'superuser', value: 'Superuser' }];
+ }
+ return this.filterAccessLevels;
+ },
+ },
+});
+</script>
diff --git a/plugins/UsersManager/vue/src/index.ts b/plugins/UsersManager/vue/src/index.ts
index 0982bcce18..ae0db8be95 100644
--- a/plugins/UsersManager/vue/src/index.ts
+++ b/plugins/UsersManager/vue/src/index.ts
@@ -8,9 +8,17 @@ import './CapabilitiesEdit/CapabilitiesEdit.adapter';
import './UserPermissionsEdit/UserPermissionsEdit.adapter';
import './UserEditForm/UserEditForm.adapter';
import './PagedUsersList/PagedUsersList.adapter';
+import './UsersManager/UsersManager.adapter';
+import './AnonymousSettings/AnonymousSettings.adapter';
+import './NewsletterSettings/NewsletterSettings.adapter';
+import './PersonalSettings/PersonalSettings.adapter';
export { default as CapabilitiesEdit } from './CapabilitiesEdit/CapabilitiesEdit.vue';
export { default as Capability } from './CapabilitiesStore/Capability';
export { default as UserPermissionsEdit } from './UserPermissionsEdit/UserPermissionsEdit.vue';
export { default as UserEditForm } from './UserEditForm/UserEditForm.vue';
export { default as PagedUsersList } from './PagedUsersList/PagedUsersList.vue';
+export { default as UsersManager } from './UsersManager/UsersManager.vue';
+export { default as NewsletterSettings } from './AnonymousSettings/AnonymousSettings.vue';
+export { default as AnonymousSettings } from './NewsletterSettings/NewsletterSettings.vue';
+export { default as PersonalSettings } from './PersonalSettings/PersonalSettings.vue';
diff --git a/plugins/VisitFrequency/API.php b/plugins/VisitFrequency/API.php
index a8119636a2..227de40ca6 100644
--- a/plugins/VisitFrequency/API.php
+++ b/plugins/VisitFrequency/API.php
@@ -13,7 +13,6 @@ use Piwik\DataTable;
use Piwik\Period;
use Piwik\Piwik;
use Piwik\Plugins\API\DataTable\MergeDataTables;
-use Piwik\Plugins\VisitsSummary\API as APIVisitsSummary;
use Piwik\Segment;
use Piwik\Segment\SegmentExpression;
diff --git a/plugins/VisitFrequency/Controller.php b/plugins/VisitFrequency/Controller.php
index 07ea4a7c62..7c6bb1c00c 100644
--- a/plugins/VisitFrequency/Controller.php
+++ b/plugins/VisitFrequency/Controller.php
@@ -14,7 +14,6 @@ use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\SettingsPiwik;
use Piwik\Translation\Translator;
-use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
{
diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php
index c9709d2817..753f54f383 100644
--- a/plugins/VisitFrequency/VisitFrequency.php
+++ b/plugins/VisitFrequency/VisitFrequency.php
@@ -8,8 +8,6 @@
*/
namespace Piwik\Plugins\VisitFrequency;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
-use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable;
class VisitFrequency extends \Piwik\Plugin
{
diff --git a/plugins/VisitFrequency/lang/ca.json b/plugins/VisitFrequency/lang/ca.json
index 9a1e35236a..12afd72897 100644
--- a/plugins/VisitFrequency/lang/ca.json
+++ b/plugins/VisitFrequency/lang/ca.json
@@ -1,26 +1,39 @@
{
"VisitFrequency": {
+ "ColumnActionsByNewVisits": "Accions per Noves Visites",
"ColumnActionsByReturningVisits": "Accions dels visitants antics",
+ "ColumnAverageVisitDurationForNewVisitors": "Mitj. Durada d'una visita nova (en segons)",
"ColumnAverageVisitDurationForReturningVisitors": "Duració mitja d'una visita que retorna (en seg.)",
+ "ColumnAvgActionsPerNewVisit": "Mitj. Accions per Nova Visita",
"ColumnAvgActionsPerReturningVisit": "Mitja d'accions per visitant que retorna",
"ColumnBounceCountForReturningVisits": "Nombre de rebots dels visitants que retornen",
+ "ColumnBounceRateForNewVisits": "Percentatge de rebots per a Visites Noves",
"ColumnBounceRateForReturningVisits": "Raó de rebots",
"ColumnMaxActionsInReturningVisit": "Màxim d'accions en una vista que torna",
"ColumnNbReturningVisitsConverted": "Nombre de conversions per als visitants que retornen",
+ "ColumnNewUsers": "Nous usuaris",
+ "ColumnNewVisits": "Noves Visites",
+ "ColumnReturningUsers": "Usuaris que retornen",
"ColumnReturningVisits": "Visitants que retornen (antics)",
"ColumnSumVisitLengthReturning": "Temps total dels visitants que retornen (en segons)",
+ "ColumnUniqueNewVisitors": "Visitant nous únics",
"ColumnUniqueReturningVisitors": "Visitants únics que retornen",
- "ColumnReturningUsers": "Usuaris que retornen",
+ "NewActions": "accions dels nous visitants",
+ "NewAverageVisitDuration": "durada mitjana de la de visita dels nous visitants",
+ "NewAvgActions": "accions per visita nova",
+ "NewBounceRate": "les visites noves han rebotat (han sortit del lloc web després d'una pàgina)",
+ "NewVisits": "noves visites",
"PluginDescription": "Informes de mètriques sobre nous visitants i visitants que retornen.",
"ReturnActions": "Accions dels visitants freqüents",
"ReturnAverageVisitDuration": "duració promig de la visita per visitants que retornen",
"ReturnAvgActions": "accions per visitant que retorna",
"ReturnBounceRate": "visitants que han tornat i han rebotat (abandonat el lloc després de veure una pàgina)",
+ "ReturnVisits": "visitants que retornen",
"ReturningVisitDocumentation": "Un visitant que retorna és (al contrari d'un visitant nou) un usuari que ja ha visitat el vostre lloc web almenys una vegada en el passat.",
"ReturningVisitsDocumentation": "Això es una visió global dels visitants que retornen.",
- "ReturnVisits": "visitants que retornen",
"SubmenuFrequency": "Freqüència",
+ "VisitFrequencyReportDocumentation": "Aquest informe mostra mètriques generals, com ara les visites dels visitants recurrents, al costat de les mateixes mètriques per als visitants nous. Descobriu el rendiment global dels visitants recurrents en comparació amb els visitants nous.",
"WidgetGraphReturning": "Gràfic de les visites que han tornat",
"WidgetOverview": "Resum de la freqüència"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitFrequency/lang/id.json b/plugins/VisitFrequency/lang/id.json
index 1ef0f0fa9b..3a822fb1a3 100644
--- a/plugins/VisitFrequency/lang/id.json
+++ b/plugins/VisitFrequency/lang/id.json
@@ -8,10 +8,13 @@
"ColumnBounceRateForReturningVisits": "Tingkat pentalan Kunjungan Kembali",
"ColumnMaxActionsInReturningVisit": "Aksi maksimal dalam kunjungan kembali",
"ColumnNbReturningVisitsConverted": "Jumlah kunjungan kembali terkonversi",
+ "ColumnNewVisits": "Kunjungan Baru",
"ColumnReturningUsers": "Penguna kembali",
"ColumnReturningVisits": "Kunjungan Kembali",
"ColumnSumVisitLengthReturning": "Jumlah waktu digunakan oleh pengunjung kembali (dalam detik)",
+ "ColumnUniqueNewVisitors": "Pengunjung baru unik",
"ColumnUniqueReturningVisitors": "Pengnjung kembali unik",
+ "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.",
diff --git a/plugins/VisitFrequency/lang/nb.json b/plugins/VisitFrequency/lang/nb.json
index 7703bfc75d..a3f4403be9 100644
--- a/plugins/VisitFrequency/lang/nb.json
+++ b/plugins/VisitFrequency/lang/nb.json
@@ -7,6 +7,7 @@
"ColumnAvgActionsPerNewVisit": "Gjennomsnittlige antall handlinger per nye besøk",
"ColumnAvgActionsPerReturningVisit": "Gj.snitt. handlinger per tilbakevendende besøk",
"ColumnBounceCountForReturningVisits": "Sprettmengde for tilbakevendende besøk",
+ "ColumnBounceRateForNewVisits": "Forlatingsfrekvens for nye besøk",
"ColumnBounceRateForReturningVisits": "Sprettfrekvens for tilbakevendende besøk",
"ColumnMaxActionsInReturningVisit": "Maks antall handlinger i ett tilbakevendende besøk",
"ColumnNbReturningVisitsConverted": "Antall konverterte tilbakevendende besøk",
@@ -17,17 +18,21 @@
"ColumnSumVisitLengthReturning": "Total tid brukt av tilbakevendende besøkere (i sekunder)",
"ColumnUniqueNewVisitors": "Unike nye besøkende",
"ColumnUniqueReturningVisitors": "Unike tilbakevendende besøkere",
+ "NewActions": "handlinger for de nye besøkene",
"NewAverageVisitDuration": "gjennomsnittlig besøksvarighet for nye besøkende",
"NewAvgActions": "handlinger per nye besøk",
+ "NewBounceRate": "nye besøk som har blitt forlatt etter én sidevisning",
"NewVisits": "nye besøk",
"PluginDescription": "Rapporterer tall om dine nye og tilbakevendende besøkere.",
"ReturnActions": "handlinger utført av tilbakevendende besøkende",
"ReturnAverageVisitDuration": "gjennomsnittlig besøksvarighet for tilbakevendende besøk",
"ReturnAvgActions": "handlinger per tilbakevendende besøk",
+ "ReturnBounceRate": "tilbakevendende besøk som har blitt forlatt etter én sidevisning",
"ReturnVisits": "tilbakevendende besøk",
"ReturningVisitDocumentation": "Et tilbakevendende besøk (i motsetning til et nytt besøk) er gjort av noen som har besøkt nettstedet minst én gang før.",
"ReturningVisitsDocumentation": "Dette er en oversikt over tilbakevendende besøk.",
"SubmenuFrequency": "Frekvens",
+ "VisitFrequencyReportDocumentation": "Denne rapporten viser generell statistikk som f.eks. besøk for tilbakevendende besøkende side-ved-side med samme statistikk for nye besøkende. Lær hvordan tilbakevendende besøkende gjør det sammenlignet med nye.",
"WidgetGraphReturning": "Tilbakevendende besøk over tid",
"WidgetOverview": "Frekvens-oversikt"
}
diff --git a/plugins/VisitFrequency/lang/sq.json b/plugins/VisitFrequency/lang/sq.json
index d37aef873a..f18900cb66 100644
--- a/plugins/VisitFrequency/lang/sq.json
+++ b/plugins/VisitFrequency/lang/sq.json
@@ -3,36 +3,37 @@
"ColumnActionsByNewVisits": "Veprime nga Vizita të Reja",
"ColumnActionsByReturningVisits": "Veprime nga Vizita Rikthim",
"ColumnAverageVisitDurationForNewVisitors": "Kohëzgjatje Mesatare e një Vizite të Re (në sekonda)",
- "ColumnAverageVisitDurationForReturningVisitors": "Mesatare Kohëzgjatjeje Vizite për Vizitorë të Rikthyer (në sekonda)",
+ "ColumnAverageVisitDurationForReturningVisitors": "Kohëzgjatjeje Mesatare Vizite për Vizitorë të Rikthyer (në sekonda)",
"ColumnAvgActionsPerNewVisit": "Veprime Mesatarisht për Vizitë të Re",
- "ColumnAvgActionsPerReturningVisit": "Mesatare Veprimesh për vizita të Rikthyerish",
+ "ColumnAvgActionsPerReturningVisit": "Veprime Mesatarisht për vizita të Rikthyerish",
"ColumnBounceCountForReturningVisits": "Numër Kthimesh për Vizita Me Rikthim",
"ColumnBounceRateForNewVisits": "Mesatare Kthimesh për Vizita të Reja",
"ColumnBounceRateForReturningVisits": "Mesatare Kthimesh për Vizita Rikthim",
"ColumnMaxActionsInReturningVisit": "Maksimum veprimesh në një vizitë rikthim",
"ColumnNbReturningVisitsConverted": "Numër vizitash me rikthim të shndërruara",
+ "ColumnNewUsers": "Përdorues të Rinj",
"ColumnNewVisits": "Vizita të Reja",
+ "ColumnReturningUsers": "Përdorues të Rikthyer",
"ColumnReturningVisits": "Vizita Rikthim",
"ColumnSumVisitLengthReturning": "Kohë gjithsej shpenzuar nga vizitorë të rikthyer (në sekonda)",
"ColumnUniqueNewVisitors": "Vizitorë të rinj unikë",
"ColumnUniqueReturningVisitors": "Vizitorë të rikthyer unikë",
- "ColumnNewUsers": "Përdorues të Rinj",
- "ColumnReturningUsers": "Përdorues të Rikthyer",
"NewActions": "veprime nga vizitat e reja",
"NewAverageVisitDuration": "kohëzgjatje mesatare vizite për vizitorë të rinj",
"NewAvgActions": "veprime për vizitë të re",
- "NewBounceRate": "vizita të reja kanë patur rikthime (e lanë sajtin pas një faqeje)",
+ "NewBounceRate": "vizita të reja kanë pasur rikthime (e lanë sajtin pas një faqeje)",
"NewVisits": "vizita të reja",
- "PluginDescription": "Raporton vlera mbi vizitorë të rinj që vijnë për herë të parë dhe vizitorë të rikthyer.",
+ "PluginDescription": "Raporton shifra mbi vizitorë të rinj që vijnë për herë të parë dhe vizitorë të rikthyer.",
"ReturnActions": "veprime sipas vizitash rikthim",
"ReturnAverageVisitDuration": "kohëzgjatje mesatare vizitash për vizitorë të rikthyer",
"ReturnAvgActions": "veprime për vizitë të rikthyer",
"ReturnBounceRate": "vizita rikthim që janë kthyer mbrapsht (e kanë lënë sajtin pas një faqeje)",
+ "ReturnVisits": "vizita rikthim",
"ReturningVisitDocumentation": "Vizitë rikthim (ndryshe nga një vizitë e re) është e bërë nga dikush që e ka vizituar sajtin të paktën një herë më përpara.",
"ReturningVisitsDocumentation": "Kjo është një përmbledhje e vizitave rikthim.",
- "ReturnVisits": "vizita rikthim",
"SubmenuFrequency": "Shpeshti",
+ "VisitFrequencyReportDocumentation": "Ky raport shfaq shifra të përgjithshme, të tilla si vizita për vizitorë të rikthyer, krah për krah me të njëjtat shifra për vizitorë të rinj. Mësoni se si dalin vizitorët e rikthyer në përgjithësi, krahasuar me vizitorë të rinj.",
"WidgetGraphReturning": "Grafik Rrjedhe Vizitash Rikthim",
"WidgetOverview": "Përmbledhje Shpeshtie"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitFrequency/lang/tl.json b/plugins/VisitFrequency/lang/tl.json
index 9460507647..1c3b628097 100644
--- a/plugins/VisitFrequency/lang/tl.json
+++ b/plugins/VisitFrequency/lang/tl.json
@@ -1,5 +1,6 @@
{
"VisitFrequency": {
+ "ColumnActionsByNewVisits": "Mga Aksyon ng Bagong Pagbisita",
"ColumnActionsByReturningVisits": "Aksyon ng mga bumabalik na bisita",
"ColumnAverageVisitDurationForReturningVisitors": "Pamantayang tagal ng bumalik na pagbisita (sa segundo)",
"ColumnAvgActionsPerReturningVisit": "Pamangtayan. Pagkilos sa bawat bumabalik na Pagbisita.",
@@ -16,4 +17,4 @@
"WidgetGraphReturning": "Mga bumabalik na pagbisita sa paglipas ng panahon",
"WidgetOverview": "Frequency Overview"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitTime/Archiver.php b/plugins/VisitTime/Archiver.php
index e4d0357710..53372c644b 100644
--- a/plugins/VisitTime/Archiver.php
+++ b/plugins/VisitTime/Archiver.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\VisitTime;
use Piwik\DataArray;
-use Piwik\DataTable;
use Piwik\Date;
class Archiver extends \Piwik\Plugin\Archiver
diff --git a/plugins/VisitTime/Columns/DayOfTheWeek.php b/plugins/VisitTime/Columns/DayOfTheWeek.php
index c8a4a8361d..66531beb75 100644
--- a/plugins/VisitTime/Columns/DayOfTheWeek.php
+++ b/plugins/VisitTime/Columns/DayOfTheWeek.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitTime\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class DayOfTheWeek extends Dimension
{
diff --git a/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php b/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
index a151430c5f..c0eb51c965 100644
--- a/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
+++ b/plugins/VisitTime/Reports/GetVisitInformationPerLocalTime.php
@@ -8,7 +8,6 @@
*/
namespace Piwik\Plugins\VisitTime\Reports;
-use Piwik\Common;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
diff --git a/plugins/VisitTime/lang/ca.json b/plugins/VisitTime/lang/ca.json
index 4a6042a101..ed1ca8bc84 100644
--- a/plugins/VisitTime/lang/ca.json
+++ b/plugins/VisitTime/lang/ca.json
@@ -1,13 +1,31 @@
{
"VisitTime": {
+ "ColumnLocalHour": "Hora local - hora (inici de la visita)",
+ "ColumnLocalMinute": "Hora local - minut (inici de la visita)",
"ColumnLocalTime": "Hora local",
+ "ColumnServerHour": "Hora del servidor - hora",
+ "ColumnServerMinute": "Hora del servidor - minut",
"ColumnServerTime": "Hora del servidor",
+ "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ó)",
+ "ColumnVisitEndServerDayOfYear": "Hora del servidor - dia de l'any (instant de l'última acció)",
+ "ColumnVisitEndServerHour": "Hora del servidor - hora (instant de l'última acció)",
+ "ColumnVisitEndServerMinute": "Hora del servidor - minut (instant de l'última acció)",
+ "ColumnVisitEndServerMonth": "Hora del servidor - mes (instant de l'última acció)",
+ "ColumnVisitEndServerQuarter": "Hora del servidor - trimestre (instant de l'última acció)",
+ "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ó)",
+ "ColumnVisitStartServerHour": "Hora del servidor - hora (inici de la visita)",
+ "ColumnVisitStartServerMinute": "Hora del servidor - minut (inici de la visita)",
"DayOfWeek": "Dia de la setmana",
"LocalTime": "Visites segons l'hora local",
"NHour": "%sh",
- "PluginDescription": "Mostra l'hora local i l'hora del servidor en que els visitants naveguen pel vostre lloc web o aplicació.",
+ "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",
"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",
"WidgetByDayOfWeekDocumentation": "Aquest gràfic mostre el nombre de visites que ha rebut el vostre lloc web cada dia de la setmana.",
"WidgetLocalTime": "Visites segons l'hora local",
@@ -15,4 +33,4 @@
"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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitTime/lang/nb.json b/plugins/VisitTime/lang/nb.json
index a18c44e4e2..4c7be7489c 100644
--- a/plugins/VisitTime/lang/nb.json
+++ b/plugins/VisitTime/lang/nb.json
@@ -6,10 +6,15 @@
"ColumnServerHour": "Tjenertime - time",
"ColumnServerMinute": "Tjenertid - minutt",
"ColumnServerTime": "Servertid",
+ "ColumnVisitEndServerDate": "Tjenertid - dato (tidspunkt for siste handling)",
+ "ColumnVisitEndServerDayOfMonth": "Tjenertid - dag i måneden (tidspunkt for siste handling)",
"ColumnVisitEndServerDayOfWeek": "Tjenertid - ukedag (tidspunkt for siste handling)",
"ColumnVisitEndServerDayOfYear": "Tjenertid - dag på året (tidspunkt for siste handling)",
"ColumnVisitEndServerHour": "Tjenertid - time (tidspunkt for siste handling)",
+ "ColumnVisitEndServerMinute": "Tjenertid - minutt (tidspunkt for siste handling)",
"ColumnVisitEndServerMonth": "Tjenertidspunkt - måned (tidspunkt for siste handling)",
+ "ColumnVisitEndServerQuarter": "Tjenertid - kvartal (tidspunkt for siste handling)",
+ "ColumnVisitEndServerSecond": "Tjenertid - sekund (tidspunkt for siste interaksjon)",
"ColumnVisitEndServerWeekOfYear": "Tjenertid - uken i året (tidspunkt for siste handling)",
"ColumnVisitEndServerYear": "Tjenertid - år (tidspunkt for siste handling)",
"ColumnVisitStartServerHour": "Tjenertid - time (starten av besøket)",
@@ -20,6 +25,7 @@
"PluginDescription": "Rapporterer lokal tid og tjenertid når dine besøkere ser ditt nettsted eller app.",
"ServerTime": "Besøk pr. servertid",
"SubmenuTimes": "Tider",
+ "TimesSubcategoryHelp": "«Tider»-delen viser deg når folk besøker siden din. Du kan finne ut hva de mest populære lokale tidene dine brukere besøker er, slik at du forstår om din side passer deres liv. I tillegg vises de mest populære tjenertidene, som kan avsløre hvilke krav din teknologistabel har.",
"VisitsByDayOfWeek": "Besøk etter ukedag",
"WidgetByDayOfWeekDocumentation": "Denne grafen viser antall besøk nettstedet ditt mottatt på de ulike dagene i uken.",
"WidgetLocalTime": "Besøk etter lokaltid",
diff --git a/plugins/VisitTime/lang/pt-br.json b/plugins/VisitTime/lang/pt-br.json
index 960b00728c..ed94ade4c5 100644
--- a/plugins/VisitTime/lang/pt-br.json
+++ b/plugins/VisitTime/lang/pt-br.json
@@ -1,19 +1,31 @@
{
"VisitTime": {
- "ColumnLocalTime": "Horário local",
"ColumnLocalHour": "Hora local - hora (início da visita)",
"ColumnLocalMinute": "Hora local - minuto (início da visita)",
- "ColumnServerTime": "Horário do servidor",
+ "ColumnLocalTime": "Horário local",
"ColumnServerHour": "Horário do servidor - hora",
+ "ColumnServerMinute": "Horário do servidor - minuto",
+ "ColumnServerTime": "Horário do servidor",
+ "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)",
+ "ColumnVisitEndServerDayOfYear": "Tempo do servidor - dia do ano (Tempo da última ação)",
+ "ColumnVisitEndServerHour": "Tempo do servidor - hora (Tempo da última ação)",
+ "ColumnVisitEndServerMinute": "Tempo do servidor - minuto (Tempo da última ação)",
+ "ColumnVisitEndServerMonth": "Tempo do servidor - mês (Tempo da última ação)",
+ "ColumnVisitEndServerQuarter": "Tempo do servidor - quarto de hora (Tempo da última ação)",
+ "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)",
"ColumnVisitStartServerHour": "Horário do servidor - hora (Início da visita)",
"ColumnVisitStartServerMinute": "Horário do servidor - minuto (Início da visita)",
- "ColumnServerMinute": "Horário do servidor - minuto",
"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 vêem o seu site ou aplicativo.",
+ "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",
"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",
"WidgetByDayOfWeekDocumentation": "Este gráfico mostra o número de visitas que seu site recebeu, em cada dia da semana.",
"WidgetLocalTime": "Visitas pelo horário local",
@@ -21,4 +33,4 @@
"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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitTime/lang/sq.json b/plugins/VisitTime/lang/sq.json
index aa542189e5..c3248561c0 100644
--- a/plugins/VisitTime/lang/sq.json
+++ b/plugins/VisitTime/lang/sq.json
@@ -1,35 +1,36 @@
{
"VisitTime": {
- "ColumnLocalTime": "Kohë vendore",
"ColumnLocalHour": "Koha vendore - orë (Fillim i vizitës)",
"ColumnLocalMinute": "Koha vendore - minutë (Fillim i vizitës)",
- "ColumnServerTime": "Kohë shërbyesi",
+ "ColumnLocalTime": "Kohë vendore",
"ColumnServerHour": "Kohë shërbyesi - orë",
- "ColumnVisitEndServerHour": "Kohë shërbyesi - orë (Kohë e veprimit të fundit)",
- "ColumnVisitEndServerMinute": "Kohë shërbyesi - minutë (Kohë e veprimit të fundit)",
- "ColumnVisitStartServerHour": "Kohë shërbyesi - orë (Fillim i vizitës)",
- "ColumnVisitStartServerMinute": "Kohë shërbyesi - minutë (Fillim i vizitës)",
+ "ColumnServerMinute": "Kohë shërbyesi - minutë",
+ "ColumnServerTime": "Kohë shërbyesi",
"ColumnVisitEndServerDate": "Kohë shërbyesi - datë (Kohë e veprimit të fundit)",
"ColumnVisitEndServerDayOfMonth": "Kohë shërbyesi - ditë e muajit (Kohë e veprimit të fundit)",
"ColumnVisitEndServerDayOfWeek": "Kohë shërbyesi - ditë e javës (Kohë e veprimit të fundit)",
"ColumnVisitEndServerDayOfYear": "Kohë shërbyesi - ditë e vitit (Kohë e veprimit të fundit)",
+ "ColumnVisitEndServerHour": "Kohë shërbyesi - orë (Kohë e veprimit të fundit)",
+ "ColumnVisitEndServerMinute": "Kohë shërbyesi - minutë (Kohë e veprimit të fundit)",
+ "ColumnVisitEndServerMonth": "Kohë shërbyesi - muaj (Kohë e veprimit të fundit)",
+ "ColumnVisitEndServerQuarter": "Kohë shërbyesi - çerek (Kohë e veprimit të fundit)",
"ColumnVisitEndServerSecond": "Kohë shërbyesi - sekondë (Kohë e veprimit të fundit)",
"ColumnVisitEndServerWeekOfYear": "Kohë shërbyesi - javë e vitit (Kohë e veprimit të fundit)",
- "ColumnVisitEndServerMonth": "Kohë shërbyesi - muaj (Kohë e veprimit të fundit)",
"ColumnVisitEndServerYear": "Kohë shërbyesi - vit (Kohë e veprimit të fundit)",
- "ColumnServerMinute": "Kohë shërbyesi - minutë",
+ "ColumnVisitStartServerHour": "Kohë shërbyesi - orë (Fillim i vizitës)",
+ "ColumnVisitStartServerMinute": "Kohë shërbyesi - minutë (Fillim i vizitës)",
"DayOfWeek": "Ditë e javës",
"LocalTime": "Vizita sipas kohës vendore",
"NHour": "%sh",
- "PluginDescription": "Raporton kohën vendore dhe atë të shërbyesit kur vizitorët tuaj shohin sajtin ose aplikacionin tuaj.",
+ "PluginDescription": "Raporton kohën vendore dhe atë të shërbyesit, kur vizitorët tuaj shohin sajtin ose aplikacionin tuaj.",
"ServerTime": "Vizita sipas kohës së shërbyesit",
"SubmenuTimes": "Kohë",
+ "TimesSubcategoryHelp": "Ndarja Kohë ju shfaq kur e vizitojnë sajtin tuaj njerëzit. Mund të shihni kohët vendore më popullore kur e vizitojnë përdoruesit tuaj, që të mund të kuptoni kur futet sajti në jetën e tyre. Më tej, shfaq kohët më popullore të shërbyesit, çka mund të zbulojë kërkesa lidhur me platformën tuaj teknologjike.",
"VisitsByDayOfWeek": "Vizita sipas Ditëve të Javës",
"WidgetByDayOfWeekDocumentation": "Ky grafik shfaq numrin e vizitave që pati sajti juaj në çdo ditë të javës.",
"WidgetLocalTime": "Vizita sipas Kohës Vendore",
"WidgetLocalTimeDocumentation": "Ky grafik shfaq kohën sipas %1$s zonës kohore të vizitorit %2$s kur ka ndodhur një vizitë.",
"WidgetServerTime": "Vizita sipas Kohës së Shërbyesit",
- "WidgetServerTimeDocumentation": "Ky grafik shfaq kohën sipas %1$s zonës kohore të shërbyesit %2$s kur ka ndodhur një vizitë.",
- "TimesSubcategoryHelp": "Ndarja Kohë ju shfaq kur e vizitojnë sajtin tuaj njerëzit. Mund të shihni kohët vendore më popullore kur e vizitojnë përdoruesit tuaj, që të mund të kuptoni kur futet sajti në jetën e tyre. Më tej, shfaq kohët më popullore të shërbyesit, çka mund të zbulojë kërkesa lidhur me platformën tuaj teknologjike."
+ "WidgetServerTimeDocumentation": "Ky grafik shfaq kohën sipas %1$s zonës kohore të shërbyesit %2$s kur ka ndodhur një vizitë."
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator
-Subproject d542dd6a8d1ec60a2c38427f52d1b907017eda5
+Subproject d05c401bc5a379cc36cf63b304b617b30d2da36
diff --git a/plugins/VisitorInterest/Columns/PagesPerVisit.php b/plugins/VisitorInterest/Columns/PagesPerVisit.php
index 1c2cfedd3b..8defd1f91f 100644
--- a/plugins/VisitorInterest/Columns/PagesPerVisit.php
+++ b/plugins/VisitorInterest/Columns/PagesPerVisit.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class PagesPerVisit extends Dimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitDuration.php b/plugins/VisitorInterest/Columns/VisitDuration.php
index 3d42ddd2cd..f757347cd9 100644
--- a/plugins/VisitorInterest/Columns/VisitDuration.php
+++ b/plugins/VisitorInterest/Columns/VisitDuration.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitDuration extends Dimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php b/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
index e1f886dd8a..9a1d24de32 100644
--- a/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
+++ b/plugins/VisitorInterest/Columns/VisitorDaysSinceLast.php
@@ -10,7 +10,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
class VisitorDaysSinceLast extends VisitDimension
{
diff --git a/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php b/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
index ffc9787f7a..d75920d519 100644
--- a/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
+++ b/plugins/VisitorInterest/Columns/VisitorSecondsSinceLast.php
@@ -12,7 +12,6 @@ use Piwik\Common;
use Piwik\Date;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
-use Piwik\Plugin\Segment;
use Piwik\Tracker\Action;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php b/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
index a49efaaada..4f4413d68f 100644
--- a/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
+++ b/plugins/VisitorInterest/Columns/VisitsbyVisitNumber.php
@@ -9,7 +9,6 @@
namespace Piwik\Plugins\VisitorInterest\Columns;
use Piwik\Columns\Dimension;
-use Piwik\Piwik;
class VisitsbyVisitNumber extends Dimension
{
diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php
index 3569a1ddb5..f2aa417f75 100644
--- a/plugins/VisitorInterest/VisitorInterest.php
+++ b/plugins/VisitorInterest/VisitorInterest.php
@@ -8,12 +8,8 @@
*/
namespace Piwik\Plugins\VisitorInterest;
-use Piwik\ArchiveProcessor;
use Piwik\FrontController;
-use Piwik\Metrics;
use Piwik\Piwik;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Graph;
class VisitorInterest extends \Piwik\Plugin
{
diff --git a/plugins/VisitorInterest/lang/ca.json b/plugins/VisitorInterest/lang/ca.json
index 4700f75d0c..994dc70d5d 100644
--- a/plugins/VisitorInterest/lang/ca.json
+++ b/plugins/VisitorInterest/lang/ca.json
@@ -7,9 +7,9 @@
"Engagement": "Compromís",
"NPages": "%s pàgines",
"OnePage": "1 pàgina",
+ "PluginDescription": "Informes sobre l'interès dels visitants: nombre de pàgines vistes, temps passat al lloc web, dies des de l'última visita i molt més.",
"VisitNum": "Nombre de visites",
"VisitsByDaysSinceLast": "Visites per dia des de l'última visita",
- "visitsByVisitCount": "Visites per nombre de visita",
"VisitsPerDuration": "Visites segons la durada",
"VisitsPerNbOfPages": "Visites segons el nombre de pàgines",
"WidgetLengths": "Durada de les visites",
@@ -18,6 +18,7 @@
"WidgetPagesDocumentation": "En aquest informe podeu veure quantes visites han produït un nombre de pàgines vistes. Inicialment, la informació es mostra com un núvol d'etiquetes, on els nombres més comuns es mostren amb una mida més gran.",
"WidgetVisitsByDaysSinceLast": "Visites per dia des de l'última visita",
"WidgetVisitsByDaysSinceLastDocumentation": "En aquest informe, podeu veure quantes visites han estat de visitant que la seva visita va ser fa un cert nombre de dies.",
- "WidgetVisitsByNumDocumentation": "En aquest informe podeu veure qui va ser la visita número N. Per exemple, els visitants que han vist el vostre lloc web com a mínim N vegades."
+ "WidgetVisitsByNumDocumentation": "En aquest informe podeu veure qui va ser la visita número N. Per exemple, els visitants que han vist el vostre lloc web com a mínim N vegades.",
+ "visitsByVisitCount": "Visites per nombre de visita"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitorInterest/lang/id.json b/plugins/VisitorInterest/lang/id.json
index c20c700cdc..e0da34950e 100644
--- a/plugins/VisitorInterest/lang/id.json
+++ b/plugins/VisitorInterest/lang/id.json
@@ -7,9 +7,9 @@
"Engagement": "Keterlibatan",
"NPages": "%s halaman",
"OnePage": "1 halaman",
+ "PluginDescription": "Laporan tentang minat pengunjung: jumlah halaman yang dilihat, waktu yang dihabiskan di Situs Web, hari sejak kunjungan terakhir, dan masih banyak lagi.",
"VisitNum": "Jumlah kunjungan",
"VisitsByDaysSinceLast": "Pengunjung berdasar hari sejak kunjungan terakhir",
- "visitsByVisitCount": "Kunjungan berdasar Jumlah Kunjungan",
"VisitsPerDuration": "Kunjungan tiap waktu kunjungan",
"VisitsPerNbOfPages": "Kunjungan tiap jumlah halaman",
"WidgetLengths": "Waktu Kunjungan",
@@ -18,6 +18,7 @@
"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.",
"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."
+ "WidgetVisitsByNumDocumentation": "Di laporan ini, Anda dapat melihat jumlah kunjungan ke-N, misalnya, siapa pengunjung yang mengunjungi situs Anda dalam N waktu terakhir.",
+ "visitsByVisitCount": "Kunjungan berdasar Jumlah Kunjungan"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitorInterest/lang/sq.json b/plugins/VisitorInterest/lang/sq.json
index 0cdffc7cc0..8a8bf60a95 100644
--- a/plugins/VisitorInterest/lang/sq.json
+++ b/plugins/VisitorInterest/lang/sq.json
@@ -10,7 +10,6 @@
"PluginDescription": "Raporte mbi interesa të vizitorëve: numër faqesh të para, kohë e shpenzuar në sajt, ditë që nga vizita e fundit, etj.",
"VisitNum": "Numër vizitash",
"VisitsByDaysSinceLast": "Vizita sipas ditësh që pas vizitës së fundit",
- "visitsByVisitCount": "Vizita sipas numrit të vizitave",
"VisitsPerDuration": "Vizita sipas kohëzgjatjes së vizitës",
"VisitsPerNbOfPages": "Vizita sipas numrit të faqeve",
"WidgetLengths": "Gjatësi Vizitash",
@@ -19,6 +18,7 @@
"WidgetPagesDocumentation": "Në këtë raport, mund të shihni sa vizitorë panë një numër të dhënë faqesh. Fillimisht, ky raport shfaqet si re etiketash, me numrat më të shpeshtë të faqeve të treguara me shkronja më të mëdha.",
"WidgetVisitsByDaysSinceLast": "Vizita sipas Ditës Që Nga Vizita e Fundit",
"WidgetVisitsByDaysSinceLastDocumentation": "Në këtë raport, mund të shihni se sa vizita kanë qenë prej vizitorësh vizita e fundit e të cilëve ka ndodhur një numër ditësh më parë.",
- "WidgetVisitsByNumDocumentation": "Në këtë raport, mund të shihni numrin e vizitave që kanë qenë vizita e N-të, domethënë, vizitorët që e kanë vizituar sajtin tuaj të paktën N herë."
+ "WidgetVisitsByNumDocumentation": "Në këtë raport, mund të shihni numrin e vizitave që kanë qenë vizita e N-të, domethënë, vizitorët që e kanë vizituar sajtin tuaj të paktën N herë.",
+ "visitsByVisitCount": "Vizita sipas Numrit të Vizitave"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitsSummary/API.php b/plugins/VisitsSummary/API.php
index d360d4f3a0..8877bc9ff4 100644
--- a/plugins/VisitsSummary/API.php
+++ b/plugins/VisitsSummary/API.php
@@ -11,7 +11,6 @@ namespace Piwik\Plugins\VisitsSummary;
use Piwik\Archive;
use Piwik\Metrics\Formatter;
use Piwik\Piwik;
-use Piwik\Plugin\Report;
use Piwik\Plugin\ReportsProvider;
use Piwik\SettingsPiwik;
diff --git a/plugins/VisitsSummary/Controller.php b/plugins/VisitsSummary/Controller.php
index 97179241d8..f160b068f6 100644
--- a/plugins/VisitsSummary/Controller.php
+++ b/plugins/VisitsSummary/Controller.php
@@ -11,14 +11,12 @@ namespace Piwik\Plugins\VisitsSummary;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
use Piwik\FrontController;
use Piwik\Piwik;
use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Translation\Translator;
-use Piwik\View;
/**
*
diff --git a/plugins/VisitsSummary/Reports/Get.php b/plugins/VisitsSummary/Reports/Get.php
index 8ffcac2d9f..1ee4492817 100644
--- a/plugins/VisitsSummary/Reports/Get.php
+++ b/plugins/VisitsSummary/Reports/Get.php
@@ -9,11 +9,8 @@
namespace Piwik\Plugins\VisitsSummary\Reports;
use Piwik\Common;
-use Piwik\Container\StaticContainer;
use Piwik\DataTable;
use Piwik\DbHelper;
-use Piwik\Metrics\Formatter;
-use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\CoreHome\Columns\Metrics\ActionsPerVisit;
@@ -49,7 +46,7 @@ class Get extends \Piwik\Plugin\Report
'max_actions'
);
- $period = Common::getRequestVar('period', 'day');
+ $period = Piwik::getPeriod('day');
if (SettingsPiwik::isUniqueVisitorsEnabled($period)) {
$this->metrics = array_merge(['nb_uniq_visitors'], $this->metrics);
}
diff --git a/plugins/VisitsSummary/Widgets/Index.php b/plugins/VisitsSummary/Widgets/Index.php
index 06358aa73e..fc691c7a37 100644
--- a/plugins/VisitsSummary/Widgets/Index.php
+++ b/plugins/VisitsSummary/Widgets/Index.php
@@ -8,9 +8,6 @@
*/
namespace Piwik\Plugins\VisitsSummary\Widgets;
-use Piwik\Plugin\Report;
-use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution;
-use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines;
use Piwik\Plugin\ReportsProvider;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
diff --git a/plugins/VisitsSummary/lang/ca.json b/plugins/VisitsSummary/lang/ca.json
index c9e5039787..c5789b9a50 100644
--- a/plugins/VisitsSummary/lang/ca.json
+++ b/plugins/VisitsSummary/lang/ca.json
@@ -17,13 +17,14 @@
"NbUniquePageviewsDescription": "visualitzacions de pàgina úniques",
"NbUniqueVisitors": "visitants únics",
"NbUsersDescription": "usuaris",
- "NbVisitsDescription": "visites",
"NbVisitsBounced": "visites han rebotat (abandonat el lloc després de veure una pàgina)",
+ "NbVisitsDescription": "visites",
"PluginDescription": "Informes generals d'anàlisi de mètriques: visites, visitants únics, número d'accions, percentatge de rebot, etc.",
"VisitsSummary": "Resum de les visites",
"VisitsSummaryDocumentation": "Aquesta és una visió general de l'evolució visita.",
+ "VisitsSummaryReportDocumentation": "Aquest informe ofereix una visió general molt general de com es comporten els vostres visitants.",
"WidgetLastVisits": "Gràfic de les darreres visites",
"WidgetOverviewGraph": "Resum amb gràfic",
"WidgetVisits": "Resum de les visites"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitsSummary/lang/id.json b/plugins/VisitsSummary/lang/id.json
index 4441f4aa96..50f425a32c 100644
--- a/plugins/VisitsSummary/lang/id.json
+++ b/plugins/VisitsSummary/lang/id.json
@@ -6,16 +6,25 @@
"GenerateTime": "%s detik untuk menghasilkan halaman",
"MaxNbActions": "aksi maksimal dalam satu kunjungan",
"NbActionsDescription": "%s tindakan (menampilkan halaman, mengunduh, dan tautan keluar)",
+ "NbActionsPerVisit": "tindakan (tampilan halaman, unduhan, tautan keluar, dan pencarian situs internal) per kunjungan",
"NbDownloadsDescription": "unduhan",
- "NbKeywordsDescription": "katakunci unik",
+ "NbKeywordsDescription": "kata kunci unik",
+ "NbOutlinksDescription": "tautan luar",
+ "NbPageviewsDescription": "tampilan halaman",
+ "NbSearchesDescription": "total pencarian di situs web Anda",
"NbUniqueDownloadsDescription": "unduhan unik",
+ "NbUniqueOutlinksDescription": "tautan luar unik",
+ "NbUniquePageviewsDescription": "tampilan halaman unik",
"NbUniqueVisitors": "pengunjung unik",
"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.",
"VisitsSummary": "Rangkuman Kunjungan",
"VisitsSummaryDocumentation": "Ini merupakan iktisar perkembangan kunjungan.",
+ "VisitsSummaryReportDocumentation": "Laporan ini memberikan gambaran yang sangat umum tentang bagaimana pengunjung Anda berperilaku.",
"WidgetLastVisits": "Grafik kunjungan terakhir",
"WidgetOverviewGraph": "Iktisar dengan grafik",
"WidgetVisits": "Iktisar kunjungan"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitsSummary/lang/lv.json b/plugins/VisitsSummary/lang/lv.json
index c281d0e38e..9f9a42c355 100644
--- a/plugins/VisitsSummary/lang/lv.json
+++ b/plugins/VisitsSummary/lang/lv.json
@@ -1,7 +1,8 @@
{
"VisitsSummary": {
+ "AverageGenerationTime": "vidējais ģenerēšanas ilgums",
"NbActionsDescription": "%s darbības",
"WidgetLastVisits": "Pēdējo apmeklējumu grafiks",
"WidgetVisits": "Apmeklējumu pārskats"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitsSummary/lang/nb.json b/plugins/VisitsSummary/lang/nb.json
index d7a4c6230f..b3be31e9d4 100644
--- a/plugins/VisitsSummary/lang/nb.json
+++ b/plugins/VisitsSummary/lang/nb.json
@@ -6,6 +6,7 @@
"GenerateTime": "%s sekunder for å generere denne siden",
"MaxNbActions": "maks. antall handlinger for per besøk",
"NbActionsDescription": "%s handlinger",
+ "NbActionsPerVisit": "handlinger (sidevisninger, nedlastninger, utlenker og interne sidesøk) per besøk",
"NbDownloadsDescription": "nedlastinger",
"NbKeywordsDescription": "unike nøkkelord",
"NbOutlinksDescription": "utgående lenker",
@@ -16,10 +17,12 @@
"NbUniquePageviewsDescription": "unike sidevisninger",
"NbUniqueVisitors": "unike besøkende",
"NbUsersDescription": "brukere",
+ "NbVisitsBounced": "besøk har takket for seg (forlot nettstedet etter én side)",
"NbVisitsDescription": "besøk",
"PluginDescription": "Rapporterer generelle analysetall: besøk, unike besøkere, antall handlinger, sprettfrekvens, etc.",
"VisitsSummary": "Besøksammendrag",
"VisitsSummaryDocumentation": "Dette er en oversikt over besøksutvikling.",
+ "VisitsSummaryReportDocumentation": "Denne rapporten gir en veldig generell oversikt over hvordan dine besøkende oppfører seg.",
"WidgetLastVisits": "Graf over siste besøk",
"WidgetOverviewGraph": "Oversikt med grafikk",
"WidgetVisits": "Besøksoversikt"
diff --git a/plugins/VisitsSummary/lang/ru.json b/plugins/VisitsSummary/lang/ru.json
index 3860bf6931..e4e4d8af4c 100644
--- a/plugins/VisitsSummary/lang/ru.json
+++ b/plugins/VisitsSummary/lang/ru.json
@@ -1,27 +1,30 @@
{
"VisitsSummary": {
- "AverageGenerationTime": "среднее время генерации страницы",
+ "AverageGenerationTime": "среднее время создания страницы",
"AverageVisitDuration": "средняя продолжительность посещения",
- "GenerateQueries": "%s запросов выполнено",
- "GenerateTime": "Страница сгенерирована за %s секунд",
- "MaxNbActions": "Максимум действий за одно посещение",
+ "GenerateQueries": "%s выполненных запросов",
+ "GenerateTime": "%s секунд на создание страницы",
+ "MaxNbActions": "максимум действий за одно посещение",
"NbActionsDescription": "%s действий (просмотры страниц, загрузки, внешние переходы)",
"NbActionsPerVisit": "действий (просмотров, загрузок, уходов с сайта, внутренних поисков по сайту) за одно посещение",
- "NbDownloadsDescription": "загрузки",
- "NbKeywordsDescription": "уникальные ключевые слова",
- "NbOutlinksDescription": "исходящие ссылки",
- "NbPageviewsDescription": "просмотры страниц",
- "NbUniqueDownloadsDescription": "уникальные загрузки",
- "NbUniqueOutlinksDescription": "уникальные внешние переходы",
- "NbUniquePageviewsDescription": "уникальные показы страниц",
- "NbUniqueVisitors": "уникальные посетители",
+ "NbDownloadsDescription": "загрузок",
+ "NbKeywordsDescription": "уникальных ключевых слов",
+ "NbOutlinksDescription": "исходящих ссылок",
+ "NbPageviewsDescription": "просмотров страниц",
+ "NbSearchesDescription": "общее количество поисковых запросов на вашем сайте",
+ "NbUniqueDownloadsDescription": "уникальных загрузок",
+ "NbUniqueOutlinksDescription": "уникальных внешних переходов",
+ "NbUniquePageviewsDescription": "уникальных показов страниц",
+ "NbUniqueVisitors": "уникальных посетителей",
"NbUsersDescription": "пользователи",
- "NbVisitsDescription": "посещения",
- "NbVisitsBounced": "посетителей \"отскочило\" (ушло после одной станицы)",
+ "NbVisitsBounced": "посетителей «отскочило» (покинули сайт после одной страницы)",
+ "NbVisitsDescription": "посещений",
+ "PluginDescription": "Сообщает общие показатели аналитики: количество посещений и уникальных посетителей, количество действий, показатель отказов и т.д.",
"VisitsSummary": "Посещения",
"VisitsSummaryDocumentation": "Это обзор динамики посещений.",
+ "VisitsSummaryReportDocumentation": "Этот отчёт даёт общее представление о том, как ведут себя ваши посетители.",
"WidgetLastVisits": "График последних посещений",
"WidgetOverviewGraph": "Обзор по всем графикам",
"WidgetVisits": "Обзор посещений"
}
-} \ No newline at end of file
+}
diff --git a/plugins/VisitsSummary/lang/sq.json b/plugins/VisitsSummary/lang/sq.json
index 0f3309d600..e8267c5415 100644
--- a/plugins/VisitsSummary/lang/sq.json
+++ b/plugins/VisitsSummary/lang/sq.json
@@ -17,13 +17,14 @@
"NbUniquePageviewsDescription": "parje unike faqesh",
"NbUniqueVisitors": "vizitorë unikë",
"NbUsersDescription": "përdorues",
- "NbVisitsDescription": "vizita",
"NbVisitsBounced": "vizita të kthyera mbrapsht (e lanë sajtin pas një faqeje)",
- "PluginDescription": "Raporton vlera të përgjithshme analitike: vizita, vizitorë unikë, numër veprimesh, shkallë kthimesh, etj.",
+ "NbVisitsDescription": "vizita",
+ "PluginDescription": "Raporton vlera të përgjithshme analitike: vizita, vizitorë unikë, numër veprimesh, shkallë kthimi, etj.",
"VisitsSummary": "Përmbledhje Vizitash",
"VisitsSummaryDocumentation": "Kjo është një përmbledhje e evolucionit të vizitave.",
+ "VisitsSummaryReportDocumentation": "Ky raport furnizon një përmbledhje shumë të përgjithshme se si sillen vizitorët tuaj.",
"WidgetLastVisits": "Vizita Përgjatë Kohës",
"WidgetOverviewGraph": "Përmbledhje Vizitash (me grafik)",
"WidgetVisits": "Përmbledhje Vizitash"
}
-} \ No newline at end of file
+}
diff --git a/plugins/WebsiteMeasurable/Settings/Urls.php b/plugins/WebsiteMeasurable/Settings/Urls.php
index e37d9e19af..b61834a6ae 100644
--- a/plugins/WebsiteMeasurable/Settings/Urls.php
+++ b/plugins/WebsiteMeasurable/Settings/Urls.php
@@ -9,9 +9,7 @@
namespace Piwik\Plugins\WebsiteMeasurable\Settings;
use Piwik\Common;
use Piwik\Piwik;
-use Piwik\Plugin;
use Piwik\Settings\FieldConfig;
-use Piwik\Plugins\SitesManager;
use Exception;
use Piwik\UrlHelper;
diff --git a/plugins/WebsiteMeasurable/lang/ca.json b/plugins/WebsiteMeasurable/lang/ca.json
index 63cf3fbe78..2c45ab4825 100644
--- a/plugins/WebsiteMeasurable/lang/ca.json
+++ b/plugins/WebsiteMeasurable/lang/ca.json
@@ -1,6 +1,7 @@
{
"WebsiteMeasurable": {
"Website": "Lloc web",
+ "WebsiteDescription": "Un lloc web consta de pàgines web que normalment es distribueixen des d'un únic domini web.",
"Websites": "Llocs"
}
-} \ No newline at end of file
+}
diff --git a/plugins/WebsiteMeasurable/lang/id.json b/plugins/WebsiteMeasurable/lang/id.json
index 5a78e50d4a..391a4ef98f 100644
--- a/plugins/WebsiteMeasurable/lang/id.json
+++ b/plugins/WebsiteMeasurable/lang/id.json
@@ -1,6 +1,7 @@
{
"WebsiteMeasurable": {
"Website": "Website",
- "Websites": "Websites"
+ "WebsiteDescription": "Sebuah situs web terdiri dari halaman web yang biasanya disajikan dari satu domain web.",
+ "Websites": "Situs"
}
-} \ No newline at end of file
+}
diff --git a/plugins/WebsiteMeasurable/lang/sq.json b/plugins/WebsiteMeasurable/lang/sq.json
index d117a6f710..591cbccbc1 100644
--- a/plugins/WebsiteMeasurable/lang/sq.json
+++ b/plugins/WebsiteMeasurable/lang/sq.json
@@ -1,7 +1,7 @@
{
"WebsiteMeasurable": {
"Website": "Sajt",
- "Websites": "Sajte",
- "WebsiteDescription": "Një sajt përbëhet prej faqesh web që zakonisht shërbehen prej një përkatësie të caktuar web."
+ "WebsiteDescription": "Një sajt përbëhet prej faqesh web që zakonisht shërbehen prej një përkatësie të vetme web.",
+ "Websites": "Sajte"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Widgetize/Controller.php b/plugins/Widgetize/Controller.php
index e7f5aae299..12cd0b8203 100644
--- a/plugins/Widgetize/Controller.php
+++ b/plugins/Widgetize/Controller.php
@@ -8,14 +8,10 @@
*/
namespace Piwik\Plugins\Widgetize;
-use Piwik\Access;
use Piwik\API\Request;
use Piwik\Common;
-use Piwik\Container\StaticContainer;
use Piwik\FrontController;
use Piwik\Piwik;
-use Piwik\Session\SessionInitializer;
-use Piwik\Url;
use Piwik\View;
/**
diff --git a/plugins/Widgetize/lang/ca.json b/plugins/Widgetize/lang/ca.json
index 5d019d8954..8e81945b20 100644
--- a/plugins/Widgetize/lang/ca.json
+++ b/plugins/Widgetize/lang/ca.json
@@ -1,6 +1,9 @@
{
"Widgetize": {
"OpenInNewWindow": "Obrir en una nova finestra",
- "TopLinkTooltip": "Exporteu informes i ginys de Matomo i incrusteu el Tauler de Control a la vostra aplicació com un iframe."
+ "PluginDescription": "Mostra qualsevol informe de Matomo al teu lloc web o aplicació amb una senzilla etiqueta HTML \"embed\".",
+ "TooHighAccessLevel": "Aquest usuari té accés de superusuari. No es permet incrustar ginys amb autenticació de testimoni de superusuari. %1$sConsulteu les FAQ per obtenir més informació.%2$s",
+ "TopLinkTooltip": "Exporta els informes de Matomo com a ginys i incrusta el tauler a la teva aplicació com a iframe.",
+ "ViewAccessRequired": "Aquest usuari té almenys accés d'escriptura. Només es poden utilitzar tokens d'usuari que només tinguin accés de visualització. Consulteu %1$s per obtenir més informació."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Widgetize/lang/id.json b/plugins/Widgetize/lang/id.json
index 149c8ae574..d3c81c720b 100644
--- a/plugins/Widgetize/lang/id.json
+++ b/plugins/Widgetize/lang/id.json
@@ -1,6 +1,9 @@
{
"Widgetize": {
"OpenInNewWindow": "Buka di jendela baru",
- "TopLinkTooltip": "Ekspor Laporan Matomo sebagai gawit dan sematkan dalam Penel Kendali di aplikasi Anda sebagai binkai pendam."
+ "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",
+ "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."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Widgetize/lang/pt-br.json b/plugins/Widgetize/lang/pt-br.json
index ac95e0bb7c..928ff7856f 100644
--- a/plugins/Widgetize/lang/pt-br.json
+++ b/plugins/Widgetize/lang/pt-br.json
@@ -1,9 +1,9 @@
{
"Widgetize": {
"OpenInNewWindow": "Abrir em uma nova janela",
- "PluginDescription": "Exiba qualquer relatório Matomo no seu site ou aplicativo com uma simples tag HTML Embed.",
- "TooHighAccessLevel": "Este usuário tem acesso de superusuário. Para a incorporação de widgets, as autorizações de token de superusuário não são permitidas. %1$sConsulte nosso faq para mais informações.%2$s",
- "TopLinkTooltip": "Exporte relatórios Matomo como widgets e incorpore o Painel em seu aplicativo como um iframe.",
+ "PluginDescription": "Exiba qualquer relatório Matomo no seu site ou aplicativo com uma simples tag HTML \"incorporada\".",
+ "TooHighAccessLevel": "Este usuário tem acesso de superusuário. A incorporação de widgets com autenticação de token de superusuário não é permitida. %1$sVerifique as Perguntas Frequentes para obter mais informações.%2$s",
+ "TopLinkTooltip": "Exporte relatórios Matomo como widgets e incorpore o painel em seu aplicativo como um iframe.",
"ViewAccessRequired": "Este usuário tem pelo menos algum acesso de gravação. Apenas tokens de usuários que têm apenas acesso de visualização podem ser usados. Veja %1$s para mais informações."
}
}
diff --git a/plugins/Widgetize/lang/sq.json b/plugins/Widgetize/lang/sq.json
index d574d6a995..15a07af632 100644
--- a/plugins/Widgetize/lang/sq.json
+++ b/plugins/Widgetize/lang/sq.json
@@ -1,9 +1,9 @@
{
"Widgetize": {
"OpenInNewWindow": "Hape në dritare të re",
- "PluginDescription": "Shfaqni çfarëdo raporti Matomo në sajtin apo aplikacionin tuaj, përmes një etikete të thjeshtë Embed HTML.",
- "ViewAccessRequired": "Ky përdorues ka të paktën ca leje shkrimi. Mund të përdoren vetëm token-ë përdoruesish që kanë vetëm hyrje leximi. Për më tepër informacion, shihni %1$s.",
- "TopLinkTooltip": "Eksportoni Raporte Matomo si Widget-e dhe bëjeni Pultin pjesë të aplikacionit tuaj si një iframe.",
- "TooHighAccessLevel": "Ky përdorues ka hyrje superpërdoruesi. Nuk lejohen mirëfilltësime superpërdoruesi me token për widget-e të trupëzuar. %1$sPër më tepër hollësi, shihni PBR-të tona.%2$s"
+ "PluginDescription": "Shfaqni çfarëdo raporti Matomo në sajtin apo aplikacionin tuaj, përmes një etikete të thjeshtë “embed” HTML.",
+ "TooHighAccessLevel": "Ky përdorues ka hyrje superpërdoruesi. Nuk lejohen trupëzime widget-esh me token mirëfilltësimi superpërdoruesi. %1$sPër më tepër hollësi, shihni PBR-të tona.%2$s",
+ "TopLinkTooltip": "Eksportoni raporte Matomo si widget-e dhe bëjeni pultin pjesë të aplikacionit tuaj si një “iframe”.",
+ "ViewAccessRequired": "Ky përdorues ka të paktën ca leje shkrimi. Mund të përdoren vetëm token-ë përdoruesish që kanë vetëm hyrje leximi. Për më tepër hollësi, shihni %1$s."
}
-} \ No newline at end of file
+}
diff --git a/tests/PHPUnit/Fixtures/DisablePluginArchive.php b/tests/PHPUnit/Fixtures/DisablePluginArchive.php
index 4c96561b62..48791f0fce 100644
--- a/tests/PHPUnit/Fixtures/DisablePluginArchive.php
+++ b/tests/PHPUnit/Fixtures/DisablePluginArchive.php
@@ -7,12 +7,10 @@
*/
namespace Piwik\Tests\Fixtures;
-use MatomoTracker;
use Piwik\Date;
use Piwik\Plugins\Goals\API as APIGoals;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Tests\Framework\Fixture;
-use Exception;
use Piwik\Tracker\Cache;
/**
diff --git a/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php b/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
index 77b4f74758..46dc8c32ef 100644
--- a/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
+++ b/tests/PHPUnit/Fixtures/JSTrackingUIFixture.php
@@ -10,7 +10,6 @@
namespace Piwik\Tests\Fixtures;
use Piwik\Container\StaticContainer;
-use Piwik\Plugins\CustomJsTracker\TrackerUpdater;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2\Php;
use Piwik\Plugins\PrivacyManager\IPAnonymizer;
use Piwik\Plugins\UserCountry\LocationProvider;
diff --git a/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php b/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
index 78d691438e..34f2cc0917 100644
--- a/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
+++ b/tests/PHPUnit/Fixtures/ManySitesImportedLogsWithXssAttempts.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Cache;
use Piwik\Date;
use Piwik\Plugins\Annotations\API as APIAnnotations;
use Piwik\Plugins\Goals\API as APIGoals;
diff --git a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
index d5c00ffc27..ab2715ba54 100644
--- a/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
+++ b/tests/PHPUnit/Fixtures/ManyVisitsWithGeoIP.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Fixtures;
use Piwik\Cache;
-use Piwik\Common;
use Piwik\Date;
use Piwik\Option;
use Piwik\Plugins\Goals\API;
diff --git a/tests/PHPUnit/Fixtures/OmniFixture.php b/tests/PHPUnit/Fixtures/OmniFixture.php
index ab9aa32a0c..c6e36aa67b 100644
--- a/tests/PHPUnit/Fixtures/OmniFixture.php
+++ b/tests/PHPUnit/Fixtures/OmniFixture.php
@@ -8,9 +8,7 @@
namespace Piwik\Tests\Fixtures;
use Piwik\API\Request;
-use Piwik\Common;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Option;
use Piwik\Plugins\UsersManager\Model;
use ReflectionClass;
diff --git a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
index 4c09c290b1..e00a9b452a 100644
--- a/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
+++ b/tests/PHPUnit/Fixtures/SomeVisitsManyPageviewsWithTransitions.php
@@ -9,7 +9,6 @@ namespace Piwik\Tests\Fixtures;
use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
-use MatomoTracker;
/**
* Adds one site and tracks a couple visits with many pageviews. The
diff --git a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
index f72a2061f8..37c94284b1 100644
--- a/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
+++ b/tests/PHPUnit/Fixtures/TwoSitesWithAnnotations.php
@@ -7,11 +7,9 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Access;
use Piwik\Date;
use Piwik\Plugins\Annotations\API;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\FakeAccess;
/**
* A fixture that adds two websites and annotations for each website.
diff --git a/tests/PHPUnit/Fixtures/UITestFixture.php b/tests/PHPUnit/Fixtures/UITestFixture.php
index 724953f8c0..dcb6bd2c64 100644
--- a/tests/PHPUnit/Fixtures/UITestFixture.php
+++ b/tests/PHPUnit/Fixtures/UITestFixture.php
@@ -21,11 +21,9 @@ use Piwik\DbHelper;
use Piwik\Filesystem;
use Piwik\FrontController;
use Piwik\Option;
-use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugin\ProcessedMetric;
use Piwik\Plugin\Report;
-use Piwik\Plugin\ViewDataTable;
use Piwik\Plugins\API\API;
use Piwik\Plugins\GeoIp2\LocationProvider\GeoIp2;
use Piwik\Plugins\Monolog\Handler\WebNotificationHandler;
@@ -36,11 +34,9 @@ use Piwik\Plugins\SegmentEditor\API as APISegmentEditor;
use Piwik\Plugins\UserCountry\LocationProvider;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
-use Piwik\Plugins\UsersManager\Model;
use Piwik\Plugins\UsersManager\UserUpdater;
use Piwik\Plugins\VisitsSummary\API as VisitsSummaryAPI;
use Piwik\ReportRenderer;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Framework\XssTesting;
use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
use Psr\Container\ContainerInterface;
diff --git a/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php b/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
index b77c361dbb..9c70c0adbe 100644
--- a/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
+++ b/tests/PHPUnit/Fixtures/VisitsInCurrentYear.php
@@ -7,13 +7,7 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Common;
-use Piwik\Date;
-use Piwik\Db;
-use Piwik\Plugins\Goals\API as APIGoals;
-use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Tests\Framework\Fixture;
-use Piwik\Tracker\Cache;
/**
* This fixture adds one website and tracks two visits by one visitor.
diff --git a/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php b/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
index ecf6d8a6d2..0bac3b7db8 100644
--- a/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
+++ b/tests/PHPUnit/Fixtures/VisitsTwoWebsitesWithAdditionalVisits.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Fixtures;
-use Piwik\Date;
use Piwik\Tests\Framework\Fixture;
/**
diff --git a/tests/PHPUnit/Framework/Fixture.php b/tests/PHPUnit/Framework/Fixture.php
index 4c275477d5..86680ea6b4 100644
--- a/tests/PHPUnit/Framework/Fixture.php
+++ b/tests/PHPUnit/Framework/Fixture.php
@@ -40,7 +40,6 @@ use Piwik\Plugins\ScheduledReports\API as APIScheduledReports;
use Piwik\Plugins\ScheduledReports\ScheduledReports;
use Piwik\Plugins\SitesManager\API as APISitesManager;
use Piwik\Plugins\UserCountry\LocationProvider;
-use Piwik\Plugins\UsersManager\API as APIUsersManager;
use Piwik\Plugins\UsersManager\UsersManager;
use Piwik\ReportRenderer;
use Piwik\Session\SaveHandler\DbTable;
@@ -48,7 +47,6 @@ use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Singleton;
use Piwik\Site;
-use Piwik\Tests;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\Mock\File as MockFileMethods;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/Framework/Mock/FakeAccess.php b/tests/PHPUnit/Framework/Mock/FakeAccess.php
index aa649fed1b..140b59bbd2 100644
--- a/tests/PHPUnit/Framework/Mock/FakeAccess.php
+++ b/tests/PHPUnit/Framework/Mock/FakeAccess.php
@@ -9,7 +9,6 @@ namespace Piwik\Tests\Framework\Mock;
use Piwik\Access;
use Piwik\Auth;
-use Piwik\Container\StaticContainer;
use Piwik\NoAccessException;
use Piwik\Piwik;
use Piwik\Plugins\SitesManager\API;
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
index bb305deb05..60d2bcceba 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeMeasurableSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeMeasurableSettings extends \Piwik\Plugins\ExampleSettingsPlugin\MeasurableSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
index 2b00ad12f6..12954260ba 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeSystemSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeSystemSettings extends \Piwik\Plugins\ExampleSettingsPlugin\SystemSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php b/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
index 1a331ad6cb..318ff38bbd 100644
--- a/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
+++ b/tests/PHPUnit/Framework/Mock/Settings/FakeUserSettings.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Framework\Mock\Settings;
-use Piwik\Settings\Setting;
class FakeUserSettings extends \Piwik\Plugins\ExampleSettingsPlugin\UserSettings {
protected $pluginName = 'ExampleSettingsPlugin';
diff --git a/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php b/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
index 0de5377265..073d3f7352 100644
--- a/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
+++ b/tests/PHPUnit/Framework/Mock/Tracker/RequestSet.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\Mock\Tracker;
use Exception;
-use Piwik\Tracker;
class RequestSet extends \Piwik\Tracker\RequestSet
{
diff --git a/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
index d0f60d1e09..71dc059b61 100644
--- a/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/ConsoleCommandTestCase.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\TestCase;
use Piwik\Console;
-use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Tester\ApplicationTester;
diff --git a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
index 0dcbf83e03..88cc297690 100644
--- a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
@@ -24,8 +24,6 @@ use Piwik\Piwik;
use Piwik\Plugin\ProcessedMetric;
use Piwik\ReportRenderer;
use Piwik\Site;
-use Piwik\Tests\Framework\Constraint\ResponseCode;
-use Piwik\Tests\Framework\Constraint\HttpResponseText;
use Piwik\Tests\Framework\Mock\File as MockFileMethods;
use Piwik\Tests\Framework\TestRequest\ApiTestConfig;
use Piwik\Tests\Framework\TestRequest\Collection;
diff --git a/tests/PHPUnit/Framework/TestCase/UnitTestCase.php b/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
index db29202b10..1bbe090a6c 100644
--- a/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/UnitTestCase.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework\TestCase;
use Piwik\Application\Environment;
-use Piwik\Container\StaticContainer;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\File;
diff --git a/tests/PHPUnit/Framework/TestRequest/Collection.php b/tests/PHPUnit/Framework/TestRequest/Collection.php
index 1a7310f78b..aa5cf2410d 100644
--- a/tests/PHPUnit/Framework/TestRequest/Collection.php
+++ b/tests/PHPUnit/Framework/TestRequest/Collection.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Framework\TestRequest;
use Piwik\API\DocumentationGenerator;
use Piwik\API\Proxy;
use Piwik\API\Request;
-use Piwik\Date;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Url;
use Piwik\UrlHelper;
diff --git a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
index a7c36567cb..ceb721bcc0 100644
--- a/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
+++ b/tests/PHPUnit/Framework/TestingEnvironmentManipulator.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Framework;
use Psr\Container\ContainerInterface;
-use Piwik\Application\Environment;
use Piwik\Application\EnvironmentManipulator;
use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Application\Kernel\PluginList;
diff --git a/tests/PHPUnit/Integration/AccessTest.php b/tests/PHPUnit/Integration/AccessTest.php
index 232581ffb6..886ddb5f9b 100644
--- a/tests/PHPUnit/Integration/AccessTest.php
+++ b/tests/PHPUnit/Integration/AccessTest.php
@@ -11,8 +11,6 @@ namespace Piwik\Tests\Integration;
use Exception;
use Piwik\Access;
use Piwik\AuthResult;
-use Matomo\Cache\Cache;
-use Piwik\Db;
use Piwik\NoAccessException;
use Piwik\Piwik;
use Piwik\Plugins\UsersManager\API as UsersManagerAPI;
diff --git a/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php b/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
index 6f735e64f4..d640d805bf 100644
--- a/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
+++ b/tests/PHPUnit/Integration/Archive/DataTableFactoryTest.php
@@ -8,11 +8,8 @@
namespace Piwik\Tests\Integration\Archive;
-use Piwik\Archive;
-use Piwik\ArchiveProcessor;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Db;
use Piwik\Period;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
diff --git a/tests/PHPUnit/Integration/ArchiveProcessingTest.php b/tests/PHPUnit/Integration/ArchiveProcessingTest.php
index b5fad41104..3058797448 100644
--- a/tests/PHPUnit/Integration/ArchiveProcessingTest.php
+++ b/tests/PHPUnit/Integration/ArchiveProcessingTest.php
@@ -9,8 +9,6 @@
namespace Piwik\Tests\Integration;
use Exception;
-use Piwik\Access;
-use Piwik\Archive;
use Piwik\ArchiveProcessor;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
@@ -21,10 +19,8 @@ use Piwik\DataTable;
use Piwik\Date;
use Piwik\Db;
use Piwik\Db\BatchInsert;
-use Piwik\DbHelper;
use Piwik\Period;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Segment;
use Piwik\SettingsServer;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php b/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
index eed521a1d1..a373b5c362 100644
--- a/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
+++ b/tests/PHPUnit/Integration/ArchiveProcessor/LoaderLockTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Integration\ArchiveProcessor;
use Piwik\ArchiveProcessor\LoaderLock;
use Piwik\Common;
-use Piwik\Db;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
class LoaderLockTest extends IntegrationTestCase
diff --git a/tests/PHPUnit/Integration/ArchiveTest.php b/tests/PHPUnit/Integration/ArchiveTest.php
index 4673501aa9..a4c04fc6ea 100644
--- a/tests/PHPUnit/Integration/ArchiveTest.php
+++ b/tests/PHPUnit/Integration/ArchiveTest.php
@@ -26,6 +26,9 @@ use Piwik\Site;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+/**
+ * @group ArchiveTest
+ */
class ArchiveTest extends IntegrationTestCase
{
protected static function beforeTableDataCached()
@@ -237,6 +240,165 @@ class ArchiveTest extends IntegrationTestCase
$this->assertEquals($expected, $archives);
}
+ public function test_shouldNotArchivePeriodsStartingInTheFuture()
+ {
+ $idSite = 1;
+
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'browser_archiving_disabled_enforce', 0);
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'archiving_range_force_on_browser_request', 1);
+ self::$fixture->getTestEnvironment()->save();
+
+ Config::getInstance()->General['browser_archiving_disabled_enforce'] = 0;
+ Config::getInstance()->General['archiving_range_force_on_browser_request'] = 1;
+
+ // track some visits
+ $t = Fixture::getTracker($idSite, '2020-03-04 05:05:05');
+ $t->setUrl('http://abc.com/mypage');
+ Fixture::checkResponse($t->doTrackPageView('page title'));
+
+ $t->setForceVisitDateTime('2020-03-05 06:06:06');
+ $t->setUrl('http://abc.com/myotherpage');
+ Fixture::checkResponse($t->doTrackPageView('another page'));
+
+ $t->setForceVisitDateTime('2020-03-06 07:07:07');
+ $t->setUrl('http://abc.com/myotherpageagain');
+ Fixture::checkResponse($t->doTrackPageView('another page again'));
+
+ Date::$now = strtotime('2020-03-05 12:00:00');
+
+ // clear invalidations from above tracking
+ $cronArchive = new CronArchive();
+ $cronArchive->init();
+ $cronArchive->invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain(1);
+
+ // archive range and day
+ Rules::setBrowserTriggerArchiving(true);
+ API::getInstance()->get($idSite, 'day', '2020-03-04');
+ API::getInstance()->get($idSite, 'day', '2020-03-05');
+ API::getInstance()->get($idSite, 'day', '2020-03-06');
+
+ // check expected archives were created
+ $archives = Db::fetchAll("SELECT date1, date2, name, period, value FROM " . Common::prefixTable('archive_numeric_2020_03')
+ . " WHERE `name` IN ('done', 'done.VisitsSummary')");
+ $expected = [
+ ['date1' => '2020-03-04', 'date2' => '2020-03-04', 'name' => 'done', 'period' => 1, 'value' => '1'],
+ ['date1' => '2020-03-05', 'date2' => '2020-03-05', 'name' => 'done', 'period' => 1, 'value' => '1']
+ ];
+ $this->assertEquals($expected, $archives);
+
+ Date::$now = time();
+ }
+
+ public function test_shouldArchivePeriodsStartingInTheFuture_IfWebSiteLocalTimeIsInNextDay()
+ {
+ // Create a site with a timezone ahead of UTC
+ $idSite = Fixture::createWebsite('2014-05-06', 1, false, false,
+ 1, null, null, 'Pacific/Auckland');
+
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'browser_archiving_disabled_enforce', 0);
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'archiving_range_force_on_browser_request', 1);
+ self::$fixture->getTestEnvironment()->save();
+
+ Config::getInstance()->General['browser_archiving_disabled_enforce'] = 0;
+ Config::getInstance()->General['archiving_range_force_on_browser_request'] = 1;
+
+ // track some visits
+ $t = Fixture::getTracker($idSite, '2020-03-04 05:05:05');
+ $t->setUrl('http://abc.com/mypage');
+ Fixture::checkResponse($t->doTrackPageView('page title'));
+
+ $t->setForceVisitDateTime('2020-03-05 06:06:06');
+ $t->setUrl('http://abc.com/myotherpage');
+ Fixture::checkResponse($t->doTrackPageView('another page'));
+
+ $t->setForceVisitDateTime('2020-03-06 07:07:07');
+ $t->setUrl('http://abc.com/myotherpageagain');
+ Fixture::checkResponse($t->doTrackPageView('another page again'));
+
+ // Set the current UTC date to a time only 3hrs until midnight, this will ensure that the website with
+ // it's local timezone will be in the next day
+ Date::$now = strtotime('2020-03-05 21:00:00');
+
+ // clear invalidations from above tracking
+ $cronArchive = new CronArchive();
+ $cronArchive->init();
+ $cronArchive->invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain(1);
+
+ // archive range and day
+ Rules::setBrowserTriggerArchiving(true);
+ API::getInstance()->get($idSite, 'day', '2020-03-04');
+ API::getInstance()->get($idSite, 'day', '2020-03-05');
+ API::getInstance()->get($idSite, 'day', '2020-03-06');
+ API::getInstance()->get($idSite, 'day', '2020-03-07');
+
+ // check expected archives were created
+ $archives = Db::fetchAll("SELECT date1, date2, name, period, value FROM " . Common::prefixTable('archive_numeric_2020_03')
+ . " WHERE `name` IN ('done', 'done.VisitsSummary')");
+ $expected = [
+ ['date1' => '2020-03-04', 'date2' => '2020-03-04', 'name' => 'done', 'period' => 1, 'value' => '1'],
+ ['date1' => '2020-03-05', 'date2' => '2020-03-05', 'name' => 'done', 'period' => 1, 'value' => '1'],
+ ['date1' => '2020-03-06', 'date2' => '2020-03-06', 'name' => 'done', 'period' => 1, 'value' => '1'],
+ ];
+ $this->assertEquals($expected, $archives);
+
+ Date::$now = time();
+ }
+
+ public function test_shouldNotArchivePeriodsStartingInTheFuture_IfWebSiteLocalTimeIsInPreviousDay()
+ {
+
+ // Create a site with a timezone behind of UTC
+ $idSite = Fixture::createWebsite('2014-05-06', 1, false, false,
+ 1, null, null, 'America/Vancouver'); // -8hrs
+
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'browser_archiving_disabled_enforce', 0);
+ self::$fixture->getTestEnvironment()->overrideConfig('General', 'archiving_range_force_on_browser_request', 1);
+ self::$fixture->getTestEnvironment()->save();
+
+ Config::getInstance()->General['browser_archiving_disabled_enforce'] = 0;
+ Config::getInstance()->General['archiving_range_force_on_browser_request'] = 1;
+
+ // track some visits
+ $t = Fixture::getTracker($idSite, '2020-03-04 05:05:05');
+ $t->setUrl('http://abc.com/mypage');
+ Fixture::checkResponse($t->doTrackPageView('page title'));
+
+ $t->setForceVisitDateTime('2020-03-05 06:06:06');
+ $t->setUrl('http://abc.com/myotherpage');
+ Fixture::checkResponse($t->doTrackPageView('another page'));
+
+ $t->setForceVisitDateTime('2020-03-06 07:07:07');
+ $t->setUrl('http://abc.com/myotherpageagain');
+ Fixture::checkResponse($t->doTrackPageView('another page again'));
+
+ // Set the current UTC date to a time only 3hrs from midnight, this will ensure that the website with
+ // it's local timezone will be in the previous day
+ Date::$now = strtotime('2020-03-05 03:00:00');
+
+ // clear invalidations from above tracking
+ $cronArchive = new CronArchive();
+ $cronArchive->init();
+ $cronArchive->invalidateArchivedReportsForSitesThatNeedToBeArchivedAgain(1);
+
+ // archive range and day
+ Rules::setBrowserTriggerArchiving(true);
+ API::getInstance()->get($idSite, 'day', '2020-03-04');
+ API::getInstance()->get($idSite, 'day', '2020-03-05');
+ API::getInstance()->get($idSite, 'day', '2020-03-06');
+ API::getInstance()->get($idSite, 'day', '2020-03-07');
+
+ // check expected archives were created
+ $archives = Db::fetchAll("SELECT date1, date2, name, period, value FROM " . Common::prefixTable('archive_numeric_2020_03')
+ . " WHERE `name` IN ('done', 'done.VisitsSummary')");
+
+ $expected = [
+ ['date1' => '2020-03-04', 'date2' => '2020-03-04', 'name' => 'done', 'period' => 1, 'value' => '1']
+ ];
+ $this->assertEquals($expected, $archives);
+
+ Date::$now = time();
+ }
+
public function test_archivingInvalidWeekWithSegment_doesReprocessInvalidDayWIthSegment()
{
$idSite = 1;
diff --git a/tests/PHPUnit/Integration/ArchiveWebTest.php b/tests/PHPUnit/Integration/ArchiveWebTest.php
index 802c3194a1..d4a0178122 100644
--- a/tests/PHPUnit/Integration/ArchiveWebTest.php
+++ b/tests/PHPUnit/Integration/ArchiveWebTest.php
@@ -10,9 +10,7 @@ namespace Piwik\Tests\Integration;
use Piwik\Option;
use Piwik\Http;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
-use Piwik\Tests\Fixtures\ManySitesImportedLogs;
use Piwik\Tests\Framework\Fixture;
-use Exception;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
diff --git a/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/.gitignore b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/.gitignore
new file mode 100644
index 0000000000..bcbf044114
--- /dev/null
+++ b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/.gitignore
@@ -0,0 +1 @@
+/plugins \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php
new file mode 100644
index 0000000000..f14708ba49
--- /dev/null
+++ b/tests/PHPUnit/Integration/AssetManager/UIAssetFetcher/PluginUmdAssetFetcherTest.php
@@ -0,0 +1,344 @@
+<?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 PHPUnit\Integration\AssetManager\UIAssetFetcher;
+
+use Piwik\AssetManager\UIAsset\OnDiskUIAsset;
+use Piwik\AssetManager\UIAssetFetcher\Chunk;
+use Piwik\AssetManager\UIAssetFetcher\PluginUmdAssetFetcher;
+use Piwik\Filesystem;
+use Piwik\Plugin\Manager;
+use Piwik\Tests\Framework\TestCase\UnitTestCase;
+
+class PluginUmdAssetFetcherTest extends UnitTestCase
+{
+ const TEST_PLUGINS_DIR = __DIR__ . '/plugins';
+
+ const TEST_PLUGIN_UMD_SIZES = [
+ 'NoPluginUmd' => null,
+ 'TestPlugin1' => 10,
+ 'TestPlugin2' => 1,
+ 'TestPlugin3' => 3,
+ 'TestPlugin4' => 1,
+ 'TestPlugin5' => 5,
+ ];
+
+ const TEST_PLUGIN_DEPENDENCIES = [
+ 'NoPluginUmd' => null,
+ 'TestPlugin1' => [],
+ 'TestPlugin2' => ['TestPlugin1'],
+ 'TestPlugin3' => ['TestPlugin1', 'TestPlugin2'],
+ 'TestPlugin4' => ['TestPlugin5'],
+ 'TestPlugin5' => ['TestPlugin1', 'TestPlugin3'],
+ ];
+
+ public static function setUpBeforeClass(): void
+ {
+ parent::setUpBeforeClass();
+
+ // setup plugin test directories
+ Filesystem::unlinkRecursive(self::TEST_PLUGINS_DIR, true);
+ foreach (array_keys(self::TEST_PLUGIN_UMD_SIZES) as $pluginName) {
+ $pluginSize = self::TEST_PLUGIN_UMD_SIZES[$pluginName];
+ $pluginDependencies = self::TEST_PLUGIN_DEPENDENCIES[$pluginName];
+
+ $vueDir = self::TEST_PLUGINS_DIR . '/' . $pluginName . '/vue/dist';
+ $vueSrcDir = self::TEST_PLUGINS_DIR . '/' . $pluginName . '/vue/src';
+
+ Filesystem::mkdir($vueDir);
+ Filesystem::mkdir($vueSrcDir);
+
+ if ($pluginSize === null) {
+ continue;
+ }
+
+ $umdDependencies = [
+ "dependsOn" => $pluginDependencies,
+ ];
+ $umdDependenciesPath = $vueDir . '/umd.metadata.json';
+
+ file_put_contents($umdDependenciesPath, json_encode($umdDependencies));
+
+ $umdPath = $vueDir . '/' . $pluginName . '.umd.min.js';
+ $umdContent = "// begin $pluginName\n";
+ $umdContent .= str_repeat(".", $pluginSize * 1024);
+ $umdContent .= "// end $pluginName\n";
+
+ file_put_contents($umdPath, $umdContent);
+
+ self::assertEquals($pluginSize, floor(filesize($umdPath) / 1024));
+ }
+ }
+
+ public static function tearDownAfterClass(): void
+ {
+ parent::tearDownAfterClass();
+
+ Filesystem::unlinkRecursive(self::TEST_PLUGINS_DIR, true);
+ }
+
+ public function setUp(): void
+ {
+ parent::setUp();
+
+ clearstatcache(true);
+
+ putenv("MATOMO_PLUGIN_DIRS=" . self::TEST_PLUGINS_DIR . ';'
+ . str_replace(PIWIK_INCLUDE_PATH, '', self::TEST_PLUGINS_DIR));
+ unset($GLOBALS['MATOMO_PLUGIN_DIRS']);
+ Manager::initPluginDirectories();
+ }
+
+ public function tearDown(): void
+ {
+ parent::tearDown();
+
+ clearstatcache(true);
+
+ putenv("MATOMO_PLUGIN_DIRS=");
+ unset($GLOBALS['MATOMO_PLUGIN_DIRS']);
+ Manager::initPluginDirectories();
+ }
+
+ public function test_getChunkFiles_whenLoadingUmdsIndividually()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, true);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk('TestPlugin1', [self::getUmdFile('TestPlugin1')]),
+ new Chunk('TestPlugin2', [self::getUmdFile('TestPlugin2')]),
+ new Chunk('TestPlugin3', [self::getUmdFile('TestPlugin3')]),
+ new Chunk('TestPlugin5', [self::getUmdFile('TestPlugin5')]),
+ new Chunk('TestPlugin4', [self::getUmdFile('TestPlugin4')]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getChunkFiles_whenLoadingUmdsIndividually_andNotAllPluginsActivated()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ unset($plugins[array_search('TestPlugin5', $plugins)]);
+
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, true);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk('TestPlugin1', [self::getUmdFile('TestPlugin1')]),
+ new Chunk('TestPlugin2', [self::getUmdFile('TestPlugin2')]),
+ new Chunk('TestPlugin3', [self::getUmdFile('TestPlugin3')]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getChunkFiles_whenOneChunkConfigured()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, false, 1);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk(0, [
+ self::getUmdFile('TestPlugin1'),
+ self::getUmdFile('TestPlugin2'),
+ self::getUmdFile('TestPlugin3'),
+ self::getUmdFile('TestPlugin5'),
+ self::getUmdFile('TestPlugin4'),
+ ]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getChunkFiles_whenNothingConfigured()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, false, null);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk(0, [
+ self::getUmdFile('TestPlugin1'),
+ ]),
+ new Chunk(1, [
+ self::getUmdFile('TestPlugin2'),
+ self::getUmdFile('TestPlugin3'),
+ ]),
+ new Chunk(2, [
+ self::getUmdFile('TestPlugin5'),
+ self::getUmdFile('TestPlugin4'),
+ ]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getChunkFiles_whenMultipleChunksConfigured()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, false, 2);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk(0, [
+ self::getUmdFile('TestPlugin1'),
+ ]),
+ new Chunk(1, [
+ self::getUmdFile('TestPlugin2'),
+ self::getUmdFile('TestPlugin3'),
+ self::getUmdFile('TestPlugin5'),
+ self::getUmdFile('TestPlugin4'),
+ ]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getChunkFiles_whenMultipleChunksConfigured_andNotAllPluginsActivated()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ unset($plugins[array_search('TestPlugin5', $plugins)]);
+
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, false, 3);
+
+ $actualChunkFiles = $instance->getChunkFiles();
+ $expectedChunkFiles = [
+ new Chunk(0, [
+ self::getUmdFile('TestPlugin1'),
+ ]),
+ new Chunk(1, [
+ self::getUmdFile('TestPlugin2'),
+ self::getUmdFile('TestPlugin3'),
+ ]),
+ ];
+
+ $this->assertEquals($expectedChunkFiles, $actualChunkFiles);
+ }
+
+ public function test_getCatalog_whenLoadingUmdsIndividually()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, true);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $expectedAssets = [
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin1')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin2')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin3')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin5')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin4')),
+ ];
+
+ $this->assertEquals($expectedAssets, $assets);
+ }
+
+ public function test_getCatalog_whenRequestingASpecificChunk_andLoadingUmdsIndividually()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, 'TestPlugin4', true);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $expectedAssets = [
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin4')),
+ ];
+
+ $this->assertEquals($expectedAssets, $assets);
+ }
+
+ public function test_getCatalog_whenMultipleChunksConfigured()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, null, false, 3);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $expectedAssets = [
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin1')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin2')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin3')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin5')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin4')),
+ ];
+
+ $this->assertEquals($expectedAssets, $assets);
+ }
+
+ public function test_getCatalog_whenRequestingASpecificChunk_andMultipleChunksConfigured()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, '2', false, 3);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $expectedAssets = [
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin5')),
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin4')),
+ ];
+
+ $this->assertEquals($expectedAssets, $assets);
+ }
+
+ public function test_getCatalog_whenRequestingASpecificChunk_andMultipleChunksConfigured_andChunkIsZero()
+ {
+ $plugins = array_keys(self::TEST_PLUGIN_DEPENDENCIES);
+ $instance = new PluginUmdAssetFetcher($plugins, null, '0', false, 3);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $expectedAssets = [
+ new OnDiskUIAsset(PIWIK_INCLUDE_PATH, self::getUmdFile('TestPlugin1')),
+ ];
+
+ $this->assertEquals($expectedAssets, $assets);
+
+ // check int 0 too
+ $instance = new PluginUmdAssetFetcher($plugins, null, 0, false, 3);
+
+ $catalog = $instance->getCatalog();
+ $assets = $catalog->getAssets();
+
+ $this->assertEquals($expectedAssets, $assets);
+ }
+
+ public function test_orderPluginsByPluginDependencies()
+ {
+ $pluginList = PluginUmdAssetFetcher::orderPluginsByPluginDependencies([
+ 'TestPlugin4',
+ 'TestPlugin1',
+ 'TestPlugin2',
+ ]);
+ $this->assertEquals(['TestPlugin4', 'TestPlugin1', 'TestPlugin2'], $pluginList);
+ }
+
+ public function test_orderPluginsByPluginDependencies_whenKeepUnresolvedIsFalse()
+ {
+ $pluginList = PluginUmdAssetFetcher::orderPluginsByPluginDependencies([
+ 'TestPlugin4',
+ 'TestPlugin1',
+ 'TestPlugin2',
+ ], $keepUnresolved = false);
+ $this->assertEquals(['TestPlugin1', 'TestPlugin2'], $pluginList);
+ }
+
+ private static function getUmdFile(string $pluginName)
+ {
+ $relativeRoot = str_replace(PIWIK_INCLUDE_PATH, '', self::TEST_PLUGINS_DIR);
+ $relativeRoot = ltrim($relativeRoot, '/');
+ return $relativeRoot . '/' . $pluginName . '/vue/dist/' . $pluginName . '.umd.min.js';
+ }
+} \ No newline at end of file
diff --git a/tests/PHPUnit/Integration/Columns/UpdaterTest.php b/tests/PHPUnit/Integration/Columns/UpdaterTest.php
index 2b7e982cfd..a23e34c752 100644
--- a/tests/PHPUnit/Integration/Columns/UpdaterTest.php
+++ b/tests/PHPUnit/Integration/Columns/UpdaterTest.php
@@ -15,7 +15,6 @@ use Piwik\Plugin\Dimension\ActionDimension;
use Piwik\Plugin\Dimension\ConversionDimension;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Updater;
use Piwik\Updater\Migration;
// NOTE: we can't use PHPUnit mock framework since we have to set columnName/columnType. reflection will set it, but
diff --git a/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php b/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
index cd5ac86bdf..52261c4db1 100644
--- a/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
+++ b/tests/PHPUnit/Integration/Concurrency/LockBackend/MysqlLockBackendTest.php
@@ -16,7 +16,7 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
class MysqlLockBackendTest extends IntegrationTestCase
{
/**
- * @var MySQLLockBackend
+ * @var MySqlLockBackend
*/
private $backend;
private $key = 'testKeyValueKey';
@@ -43,7 +43,7 @@ class MysqlLockBackendTest extends IntegrationTestCase
protected function createMysqlBackend()
{
- return new MySQLLockBackend();
+ return new MySqlLockBackend();
}
public function test_deleteIfKeyHasValue_ShouldNotWork_IfKeyDoesNotExist()
diff --git a/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php b/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
index ac88ba9b8e..e1ab674d81 100644
--- a/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
+++ b/tests/PHPUnit/Integration/CronArchive/QueueConsumerTest.php
@@ -27,7 +27,6 @@ use Piwik\Date;
use Piwik\Db;
use Piwik\Piwik;
use Piwik\Plugins\SegmentEditor\API;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Segment;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php b/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
index d178f9661c..efd5c12797 100644
--- a/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
+++ b/tests/PHPUnit/Integration/CronArchive/SegmentArchivingTest.php
@@ -9,11 +9,8 @@
namespace Piwik\Tests\Integration\CronArchive;
use Piwik\Config;
-use Piwik\CronArchive;
use Piwik\Date;
use Piwik\CronArchive\SegmentArchiving;
-use Piwik\Option;
-use Piwik\Site;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php b/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
index 2752244c04..ffd62b4ef0 100644
--- a/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
+++ b/tests/PHPUnit/Integration/CronArchiveInvalidSegmentTest.php
@@ -16,7 +16,6 @@ use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeLogger;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Plugins\SegmentEditor\API as SegmentAPI;
-use Piwik\Version;
/**
* @group Archiver
diff --git a/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php b/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
index c149ef918d..cf32511fd9 100644
--- a/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/ArchiveSelectorTest.php
@@ -10,9 +10,7 @@
namespace Piwik\Tests\Integration\DataAccess;
-use Piwik\ArchiveProcessor\Parameters;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Config;
use Piwik\DataAccess\ArchiveSelector;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\Date;
diff --git a/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php b/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
index 1e4d77c80d..79ca3e286c 100644
--- a/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/ArchiveWriterTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\DataAccess;
use Piwik\Access;
use Piwik\ArchiveProcessor\Parameters;
-use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\DataAccess\ArchiveTableCreator;
use Piwik\DataAccess\ArchiveWriter;
@@ -18,7 +17,6 @@ use Piwik\Date;
use Piwik\Db;
use Piwik\Period\Day;
use Piwik\Period\Factory as PeriodFactory;
-use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
use Piwik\Sequence;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
index a8311bdd09..5a53b5f92e 100644
--- a/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/LogAggregatorTest.php
@@ -13,7 +13,6 @@ use Piwik\Config;
use Piwik\Common;
use Piwik\DataAccess\LogAggregator;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Period;
use Piwik\Segment;
use Piwik\Site;
diff --git a/tests/PHPUnit/Integration/Db/TransactionLevelTest.php b/tests/PHPUnit/Integration/Db/TransactionLevelTest.php
index 129526e058..28dcb38382 100644
--- a/tests/PHPUnit/Integration/Db/TransactionLevelTest.php
+++ b/tests/PHPUnit/Integration/Db/TransactionLevelTest.php
@@ -2,7 +2,7 @@
/**
* Matomo - free/libre analytics platform
*
- * @link https://matomo.org
+ * @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
@@ -13,48 +13,51 @@ use Piwik\Db\TransactionLevel;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
- * @group Funnels
* @group TransactionLevelTest
* @group TransactionLevel
* @group Plugins
*/
class TransactionLevelTest extends IntegrationTestCase
{
- /**
- * @var TransactionLevel
- */
- private $level;
-
- /**
- * @var \Piwik\Tracker\Db|\Piwik\Db\AdapterInterface|\Piwik\Db $db
- */
- private $db;
-
- public function setUp(): void
- {
- parent::setUp();
- $this->db = Db::get();
- $this->level = new TransactionLevel($this->db);
- }
-
- public function test_canLikelySetTransactionLevel()
- {
- $this->assertTrue($this->level->canLikelySetTransactionLevel());
- }
-
- public function test_setUncommitted_restorePreviousStatus()
- {
- $value = $this->db->fetchOne('SELECT @@TX_ISOLATION');
- $this->assertSame('REPEATABLE-READ', $value);
-
- $this->level->setUncommitted();
- $value = $this->db->fetchOne('SELECT @@TX_ISOLATION');
-
- $this->assertSame('READ-UNCOMMITTED', $value);
- $this->level->restorePreviousStatus();
-
- $value = $this->db->fetchOne('SELECT @@TX_ISOLATION');
- $this->assertSame('REPEATABLE-READ', $value);
- }
+ /**
+ * @var TransactionLevel
+ */
+ private $level;
+
+ /**
+ * @var \Piwik\Tracker\Db|\Piwik\Db\AdapterInterface|\Piwik\Db $db
+ */
+ private $db;
+
+ public function setUp(): void
+ {
+ parent::setUp();
+ $this->db = Db::get();
+ $this->level = new TransactionLevel($this->db);
+ }
+
+ public function test_canLikelySetTransactionLevel()
+ {
+ $this->assertTrue($this->level->canLikelySetTransactionLevel());
+ }
+
+ public function test_setUncommitted_restorePreviousStatus()
+ {
+ // mysql 8.0 using transaction_isolation
+ $isolation = $this->db->fetchOne("SHOW GLOBAL VARIABLES LIKE 't%_isolation'");
+ $isolation = "@@" . $isolation;
+
+ $value = $this->db->fetchOne('SELECT ' . $isolation);
+ $this->assertSame('REPEATABLE-READ', $value);
+
+ $this->level->setUncommitted();
+ $value = $this->db->fetchOne('SELECT ' . $isolation);
+
+ $this->assertSame('READ-UNCOMMITTED', $value);
+ $this->level->restorePreviousStatus();
+
+ $value = $this->db->fetchOne('SELECT ' . $isolation);
+ $this->assertSame('REPEATABLE-READ', $value);
+ }
}
diff --git a/tests/PHPUnit/Integration/EmailValidatorTest.php b/tests/PHPUnit/Integration/EmailValidatorTest.php
index bb34778aff..3ee1b3aa92 100644
--- a/tests/PHPUnit/Integration/EmailValidatorTest.php
+++ b/tests/PHPUnit/Integration/EmailValidatorTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration;
-use Piwik\Http;
use Piwik\Piwik;
/**
diff --git a/tests/PHPUnit/Integration/FrontControllerTest.php b/tests/PHPUnit/Integration/FrontControllerTest.php
index 4aed67aa9b..d785777aa3 100644
--- a/tests/PHPUnit/Integration/FrontControllerTest.php
+++ b/tests/PHPUnit/Integration/FrontControllerTest.php
@@ -48,9 +48,13 @@ FORMAT;
$this->assertEquals('error', $response['result']);
$expectedFormat = <<<FORMAT
-test message on {includePath}/tests/resources/trigger-fatal-exception.php(23) #0 [internal function]: {closure}('CoreHome', 'index', Array) #1 {includePath}/core/EventDispatcher.php(141): call_user_func_array(Object(Closure), Array) #2 {includePath}/core/Piwik.php(845): Piwik\EventDispatcher-&gt;postEvent('Request.dispatc...', Array, false, Array) #3 {includePath}/core/FrontController.php(606): Piwik\Piwik::postEvent('Request.dispatc...', Array) #4 {includePath}/core/FrontController.php(168): Piwik\FrontController-&gt;doDispatch('CoreHome', 'index', Array) #5 {includePath}/tests/resources/trigger-fatal-exception.php(31): Piwik\FrontController-&gt;dispatch('CoreHome', 'index') #6 {main}
+test message on {includePath}/tests/resources/trigger-fatal-exception.php(23) #0 [internal function]: {closure}('CoreHome', 'index', Array) #1 {includePath}/core/EventDispatcher.php(141): call_user_func_array(Object(Closure), Array) #2 {includePath}/core/Piwik.php(847): Piwik\EventDispatcher-&gt;postEvent('Request.dispatc...', Array, false, Array) #3 {includePath}/core/FrontController.php(602): Piwik\Piwik::postEvent('Request.dispatc...', Array) #4 {includePath}/core/FrontController.php(168): Piwik\FrontController-&gt;doDispatch('CoreHome', 'index', Array) #5 {includePath}/tests/resources/trigger-fatal-exception.php(31): Piwik\FrontController-&gt;dispatch('CoreHome', 'index') #6 {main}
FORMAT;
- $this->assertStringMatchesFormat($expectedFormat, $response['message']);
+ //remove all the numbers
+ $expectedFormat = preg_replace('/[0-9]+/', 'x', $expectedFormat);
+ $actualFormat = preg_replace('/[0-9]+/', 'x', $response['message']);
+
+ $this->assertStringMatchesFormat($expectedFormat, $actualFormat);
}
/**
diff --git a/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php b/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
index 45da6a6aff..1907a6c81f 100644
--- a/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
+++ b/tests/PHPUnit/Integration/Measurable/MeasurableSettingTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Measurable;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableSetting;
-use Piwik\Settings\Storage\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php b/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
index 5ee12b23cd..1110ebba04 100644
--- a/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
+++ b/tests/PHPUnit/Integration/Measurable/MeasurableSettingsTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Measurable;
-use Piwik\Access;
-use Piwik\Db;
use Piwik\Plugin;
use Piwik\Plugins\WebsiteMeasurable\Type as WebsiteType;
use Piwik\Plugins\WebsiteMeasurable\MeasurableSettings;
diff --git a/tests/PHPUnit/Integration/Plugin/CategoriesTest.php b/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
index b550fcd2f5..f12ded6f57 100644
--- a/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
+++ b/tests/PHPUnit/Integration/Plugin/CategoriesTest.php
@@ -12,7 +12,6 @@ use Piwik\Category\Category;
use Piwik\Category\Subcategory;
use Piwik\Container\StaticContainer;
use Piwik\Plugin\Categories;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Plugin/ManagerTest.php b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
index 8dadd20646..d2bbcef0b1 100644
--- a/tests/PHPUnit/Integration/Plugin/ManagerTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ManagerTest.php
@@ -10,13 +10,10 @@ namespace Piwik\Tests\Integration\Plugin;
use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Http\ControllerResolver;
use Piwik\Plugin;
-use Piwik\Settings\Storage;
use Piwik\Cache as PiwikCache;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
-use Piwik\Widget\WidgetsList;
/**
* @group Plugin
diff --git a/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php b/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
index afdecc243d..af123afef0 100644
--- a/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
+++ b/tests/PHPUnit/Integration/Plugin/ReleaseChannelsTest.php
@@ -8,12 +8,8 @@
namespace Piwik\Tests\Integration\Plugin;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin;
-use Piwik\Settings\Storage;
-use Piwik\Cache as PiwikCache;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\UpdateCheck\ReleaseChannel;
diff --git a/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php b/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
index 2915033e38..7ee397823a 100644
--- a/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
+++ b/tests/PHPUnit/Integration/Plugin/SettingsProviderTest.php
@@ -9,13 +9,11 @@
namespace Piwik\Tests\Integration\Plugin;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin;
use Piwik\Plugin\SettingsProvider;
use Piwik\Settings\Measurable\MeasurableSettings;
use Piwik\Settings\Plugin\SystemSettings;
use Piwik\Settings\Plugin\UserSettings;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php b/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
index 46993ab135..88c16ae34b 100644
--- a/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
+++ b/tests/PHPUnit/Integration/Plugin/WidgetsProviderTest.php
@@ -9,9 +9,7 @@
namespace Piwik\Tests\Integration\Plugin;
use Piwik\Container\StaticContainer;
-use Piwik\Db;
use Piwik\Plugin\WidgetsProvider;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Widget\WidgetConfig;
diff --git a/tests/PHPUnit/Integration/PluginTest.php b/tests/PHPUnit/Integration/PluginTest.php
index 7ab46a8945..430cde0719 100644
--- a/tests/PHPUnit/Integration/PluginTest.php
+++ b/tests/PHPUnit/Integration/PluginTest.php
@@ -9,11 +9,9 @@
namespace PHPUnit\Integration;
-use Piwik\Common;
use Piwik\CronArchive;
use Piwik\CronArchive\ReArchiveList;
use Piwik\Date;
-use Piwik\Db;
use Piwik\Option;
use Piwik\Plugin;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
index 25165d42ea..4f71c8f943 100644
--- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
@@ -15,8 +15,6 @@ use Piwik\AssetManager\UIAssetFetcher;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Filesystem;
-use Piwik\Http;
-use Piwik\Plugin;
use Piwik\Plugin\Manager;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tracker;
@@ -1099,7 +1097,7 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase
$countFileChecked++;
}
- $this->assertTrue($countFileChecked > 42, "expected to test at least 100 files, but tested only " . $countFileChecked);
+ $this->assertGreaterThan(20, $countFileChecked, "expected to test at least 20 files, but tested only " . $countFileChecked);
if (!empty($errors)) {
throw new Exception(implode(",\n\n ", $errors));
diff --git a/tests/PHPUnit/Integration/SegmentTest.php b/tests/PHPUnit/Integration/SegmentTest.php
index 9e9662aefe..eab2877df8 100644
--- a/tests/PHPUnit/Integration/SegmentTest.php
+++ b/tests/PHPUnit/Integration/SegmentTest.php
@@ -15,7 +15,6 @@ use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\Http;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Segment;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/SequenceTest.php b/tests/PHPUnit/Integration/SequenceTest.php
index d7e84ffaab..2db27a093e 100644
--- a/tests/PHPUnit/Integration/SequenceTest.php
+++ b/tests/PHPUnit/Integration/SequenceTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration;
-use Piwik\Db;
use Piwik\Sequence;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/SessionTest.php b/tests/PHPUnit/Integration/SessionTest.php
index ae4ff2ecfd..60f0e4c0f6 100644
--- a/tests/PHPUnit/Integration/SessionTest.php
+++ b/tests/PHPUnit/Integration/SessionTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Integration;
use Piwik\Http;
-use Piwik\Piwik;
use Piwik\Session;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php b/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
index ad4272deb1..ce0e15ca0d 100644
--- a/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
+++ b/tests/PHPUnit/Integration/Settings/IntegrationTestCase.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Integration\Settings;
use PHPUnit\Framework\Constraint\IsType;
use Piwik\Db;
use Piwik\Settings\Setting;
-use Piwik\Settings\Storage;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tests\Framework\Mock\Settings\FakeSystemSettings;
diff --git a/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php b/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
index b057162632..beae8b033b 100644
--- a/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
+++ b/tests/PHPUnit/Integration/Settings/Measurable/MeasurablePropertyTest.php
@@ -8,11 +8,9 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableProperty;
-use Piwik\Settings\Measurable\MeasurableSetting;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\Settings\FakeMeasurableSettings;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php b/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
index 7bc95322a2..c7bdbcc6b4 100644
--- a/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Measurable/MeasurableSettingTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Measurable\MeasurableSetting;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
index 40769e641a..209e927059 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemConfigSettingTest.php
@@ -9,10 +9,8 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\SystemConfigSetting;
-use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
/**
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
index d3580d9e73..6abc8ffc92 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
index c7e89c9b6c..80a88c4eec 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/SystemSettingsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Db;
use Piwik\Settings\Plugin\SystemSetting;
use Piwik\Settings\Plugin\SystemSettings;
use Piwik\Tests\Integration\Settings\BaseSettingsTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
index 6732d12eea..120ade8833 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingTest.php
@@ -11,9 +11,7 @@ namespace Piwik\Tests\Integration\Settings\Plugin;
use Piwik\Db;
use Piwik\Settings\FieldConfig;
use Piwik\Settings\Plugin\UserSetting;
-use Piwik\Settings\Storage\Storage;
use Piwik\Tests\Framework\Mock\FakeAccess;
-use Piwik\Tests\Framework\Mock\Settings\FakeBackend;
use Piwik\Tests\Framework\Mock\Settings\FakeUserSettings;
use Piwik\Tests\Integration\Settings\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
index 00d5e455b0..fcb3eec238 100644
--- a/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
+++ b/tests/PHPUnit/Integration/Settings/Plugin/UserSettingsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Plugin;
-use Piwik\Db;
use Piwik\Settings\Plugin\UserSetting;
use Piwik\Settings\Plugin\UserSettings;
use Piwik\Tests\Framework\Mock\Settings\FakeUserSettings;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
index 1d557684f5..add4765bbc 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/ConfigTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\MeasurableSettingsTable;
use Piwik\Settings\Storage\Backend\Config;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
index e0b5edcef3..27c33d4de8 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/MeasurableSettingsTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\MeasurableSettingsTable;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
index 00617f3771..5048f75c47 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/PluginSettingsTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\PluginSettingsTable;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php b/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
index 8c077a2869..ff462b812d 100644
--- a/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
+++ b/tests/PHPUnit/Integration/Settings/Storage/Backend/SitesTableTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Integration\Settings\Storage\Backend;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Settings\Storage\Backend\SitesTable;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/SupportedBrowserTest.php b/tests/PHPUnit/Integration/SupportedBrowserTest.php
index 631df4f111..a8ecc4aa23 100644
--- a/tests/PHPUnit/Integration/SupportedBrowserTest.php
+++ b/tests/PHPUnit/Integration/SupportedBrowserTest.php
@@ -7,12 +7,7 @@
*/
namespace Piwik\Tests\Integration;
-use Piwik\Http;
-use Piwik\Site;
-use Piwik\Piwik;
use Piwik\SupportedBrowser;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Plugins\SitesManager\API;
use Piwik\Exception\NotSupportedBrowserException;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
diff --git a/tests/PHPUnit/Integration/Tracker/DbTest.php b/tests/PHPUnit/Integration/Tracker/DbTest.php
index 9260abd4a2..f4a63d7352 100644
--- a/tests/PHPUnit/Integration/Tracker/DbTest.php
+++ b/tests/PHPUnit/Integration/Tracker/DbTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Piwik\Common;
use Piwik\Config;
-use Piwik\Db;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Timer;
diff --git a/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php b/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
index 687595f6d2..1e63e3cc7e 100644
--- a/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
+++ b/tests/PHPUnit/Integration/Tracker/FingerprintSaltTest.php
@@ -8,16 +8,8 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\Config;
use Piwik\Date;
-use Piwik\Plugins\SitesManager\API;
-use Piwik\Tests\Framework\Mock\FakeAccess;
-use Piwik\Tracker\Action;
use Piwik\Tracker\FingerprintSalt;
-use Piwik\Tracker\PageUrl;
-use Piwik\Tracker\Request;
-use Piwik\Translate;
-use Piwik\Plugin\Manager as PluginManager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
diff --git a/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php b/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
index d3a5d98b94..0a3046f24e 100644
--- a/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Tracker/Handler/FactoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker\Handler;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker;
diff --git a/tests/PHPUnit/Integration/Tracker/RequestSetTest.php b/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
index b0448e45dc..d0f7010281 100644
--- a/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
+++ b/tests/PHPUnit/Integration/Tracker/RequestSetTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tracker\Request;
diff --git a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
index be93db0811..be50c3e5f2 100644
--- a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
+++ b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Piwik\Config;
use Piwik\Piwik;
-use Piwik\Plugins\SitesManager\SitesManager;
use Piwik\Tests\Framework\Mock\Plugin\Manager;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker\TrackerCodeGenerator;
diff --git a/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php b/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
index b9b8c1c15f..336854da3e 100644
--- a/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Tracker/Visit/FactoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Integration\Tracker\Visit;
-use Piwik\EventDispatcher;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
use Piwik\Tracker;
diff --git a/tests/PHPUnit/Integration/Tracker/VisitTest.php b/tests/PHPUnit/Integration/Tracker/VisitTest.php
index 8ca50e386a..e9251249d7 100644
--- a/tests/PHPUnit/Integration/Tracker/VisitTest.php
+++ b/tests/PHPUnit/Integration/Tracker/VisitTest.php
@@ -8,10 +8,8 @@
namespace Piwik\Tests\Integration\Tracker;
-use Piwik\Cache;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Matomo\Network\IPUtils;
use Piwik\Plugin\Manager;
use Piwik\Plugins\SitesManager\API;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
index 20a45a1a4d..f456dcfcff 100644
--- a/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
+++ b/tests/PHPUnit/Integration/Tracker/VisitorRecognizerTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Integration\Tracker;
use Matomo\Network\IP;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Date;
use Piwik\EventDispatcher;
use Piwik\Tests\Framework\Fixture;
diff --git a/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php b/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
index f817b1f1a0..9bd6b4fa7f 100644
--- a/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
+++ b/tests/PHPUnit/Integration/Updater/Migration/Db/FactoryTest.php
@@ -9,10 +9,7 @@
namespace Piwik\Tests\Integration\Updater\Migration\Db;
use Piwik\Common;
-use Piwik\Config;
-use Piwik\Db;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Updater\Migration\Config\Set;
use Piwik\Updater\Migration\Db\AddColumn;
use Piwik\Updater\Migration\Db\AddColumns;
use Piwik\Updater\Migration\Db\AddIndex;
diff --git a/tests/PHPUnit/System/ApiGetReportMetadataTest.php b/tests/PHPUnit/System/ApiGetReportMetadataTest.php
index 82743b9131..3c7f834e49 100644
--- a/tests/PHPUnit/System/ApiGetReportMetadataTest.php
+++ b/tests/PHPUnit/System/ApiGetReportMetadataTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\API\Proxy;
-use Piwik\Cache;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\ThreeGoalsOnePageview;
diff --git a/tests/PHPUnit/System/ArchiveInvalidationTest.php b/tests/PHPUnit/System/ArchiveInvalidationTest.php
index 63c23b47a5..7e50a9cec5 100644
--- a/tests/PHPUnit/System/ArchiveInvalidationTest.php
+++ b/tests/PHPUnit/System/ArchiveInvalidationTest.php
@@ -9,10 +9,7 @@ namespace Piwik\Tests\System;
use Piwik\API\Request;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Common;
use Piwik\Config;
-use Piwik\Date;
-use Piwik\Db;
use Piwik\Plugins\SegmentEditor\API;
use Piwik\Tests\Fixtures\VisitsTwoWebsitesWithAdditionalVisits;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/System/BlobReportLimitingTest.php b/tests/PHPUnit/System/BlobReportLimitingTest.php
index 8d8a055b5e..0cacc3e832 100644
--- a/tests/PHPUnit/System/BlobReportLimitingTest.php
+++ b/tests/PHPUnit/System/BlobReportLimitingTest.php
@@ -7,13 +7,9 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Application\Kernel\GlobalSettingsProvider;
use Piwik\Cache;
use Piwik\Config;
-use Piwik\Date;
use Piwik\Plugins\Actions\ArchivingHelper;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tests\Framework\Mock\TestConfig;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\ManyVisitsWithMockLocationProvider;
diff --git a/tests/PHPUnit/System/ConsoleTest.php b/tests/PHPUnit/System/ConsoleTest.php
index a82d31ecfb..3ae12f7b6d 100644
--- a/tests/PHPUnit/System/ConsoleTest.php
+++ b/tests/PHPUnit/System/ConsoleTest.php
@@ -9,9 +9,7 @@
namespace Piwik\Tests\System;
use Piwik\CliMulti\CliPhp;
-use Piwik\Config;
use Piwik\Container\StaticContainer;
-use Piwik\Development;
use Piwik\Plugin\ConsoleCommand;
use Piwik\Plugins\Monolog\Handler\FailureLogMessageDetector;
use Piwik\Tests\Framework\Fixture;
@@ -166,17 +164,17 @@ class ConsoleTest extends ConsoleCommandTestCase
$output = $this->normalizeOutput($output);
$expected = <<<END
-PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 85
+PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 83
-Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 85
+Fatal error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) in /tests/PHPUnit/System/ConsoleTest.php on line 83
*** IN SAFEMODE ***
Matomo encountered an error: Allowed memory size of X bytes exhausted (tried to allocate X bytes) (which lead to: Error: array (
'type' => 1,
'message' => 'Allowed memory size of X bytes exhausted (tried to allocate X bytes)',
'file' => '/tests/PHPUnit/System/ConsoleTest.php',
- 'line' => 85,
- 'backtrace' => ' on /tests/PHPUnit/System/ConsoleTest.php(85)
-#0 /tests/PHPUnit/System/ConsoleTest.php(72): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->executeImpl()
+ 'line' => 83,
+ 'backtrace' => ' on /tests/PHPUnit/System/ConsoleTest.php(83)
+#0 /tests/PHPUnit/System/ConsoleTest.php(70): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->executeImpl()
#1 /vendor/symfony/console/Symfony/Component/Console/Command/Command.php(257): Piwik\\\\Tests\\\\System\\\\TestCommandWithFatalError->execute()
',
))
diff --git a/tests/PHPUnit/System/FlattenReportsTest.php b/tests/PHPUnit/System/FlattenReportsTest.php
index 0785639de1..ecef5caf1a 100644
--- a/tests/PHPUnit/System/FlattenReportsTest.php
+++ b/tests/PHPUnit/System/FlattenReportsTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\EventDispatcher;
-use Piwik\Piwik;
use Piwik\Plugin\Manager;
use Piwik\Plugins\Referrers\Reports\GetWebsites;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
diff --git a/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php b/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
index cfa386718d..7afcdc86f4 100644
--- a/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
+++ b/tests/PHPUnit/System/OneVisitorNoKeywordSpecifiedTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\TwoVisitsNoKeywordWithBot;
diff --git a/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php b/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
index 6a3af0d3fd..baf0fd2fb5 100644
--- a/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
+++ b/tests/PHPUnit/System/OneVisitorOneWebsiteSeveralDaysDateRangeArchivingTest.php
@@ -13,7 +13,6 @@ use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
use Piwik\Db;
-use Piwik\DbHelper;
use Piwik\Piwik;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\VisitsOverSeveralDays;
diff --git a/tests/PHPUnit/System/TrackerTest.php b/tests/PHPUnit/System/TrackerTest.php
index 592b65c75c..1eb3650e4f 100644
--- a/tests/PHPUnit/System/TrackerTest.php
+++ b/tests/PHPUnit/System/TrackerTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\System;
use Piwik\Common;
-use Piwik\Config;
use Piwik\Db;
use Piwik\Option;
use Piwik\Plugins\UserCountry\LocationProvider;
@@ -19,7 +18,6 @@ use Piwik\Scheduler\Timetable;
use Piwik\SettingsPiwik;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
-use Piwik\Tracker;
/**
* @group Core
@@ -125,6 +123,26 @@ class TrackerTest extends IntegrationTestCase
$this->assertActionEquals('scary <> movies', $conversionItems[0]['idaction_category']);
}
+ public function test_trackingEcommerceOrder_WithNameAndSKUArrays()
+ {
+ // item sku, item name, item category, item price, item quantity
+ $ecItems = array(array(["sku1", "sku2"], ["name1", "name2"], 'category1', 12.99, 1));
+
+ $urlToTest = $this->getEcommerceItemsUrl($ecItems);
+
+ $response = $this->sendTrackingRequestByCurl($urlToTest);
+ Fixture::checkResponse($response);
+
+ $this->assertEquals(1, $this->getCountOfConversions());
+
+ $conversionItems = $this->getConversionItems();
+ $this->assertEquals(1, count($conversionItems));
+
+ $this->assertActionEquals('sku1,sku2', $conversionItems[0]['idaction_sku']);
+ $this->assertActionEquals('name1,name2', $conversionItems[0]['idaction_name']);
+ $this->assertActionEquals('category1', $conversionItems[0]['idaction_category']);
+ }
+
public function test_trackingEcommerceOrder_DoesNotFail_WhenEmptyEcommerceItemsParamUsed()
{
// item sku, item name, item category, item price, item quantity
diff --git a/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php b/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
index 4708ba7013..0df58a06c5 100644
--- a/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
+++ b/tests/PHPUnit/System/TwoVisitorsTwoWebsitesDifferentDaysConversionsTest.php
@@ -8,11 +8,6 @@
namespace Piwik\Tests\System;
use Piwik\Archive;
-use Piwik\Archive\ArchivePurger;
-use Piwik\Cache;
-use Piwik\Container\StaticContainer;
-use Piwik\Date;
-use Piwik\Segment;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\TwoSitesTwoVisitorsDifferentDays;
diff --git a/tests/PHPUnit/System/Utf8mb4Test.php b/tests/PHPUnit/System/Utf8mb4Test.php
index 1fb18bae3d..09c7eba365 100644
--- a/tests/PHPUnit/System/Utf8mb4Test.php
+++ b/tests/PHPUnit/System/Utf8mb4Test.php
@@ -7,13 +7,8 @@
*/
namespace Piwik\Tests\System;
-use Piwik\Common;
-use Piwik\Db;
use Piwik\Tests\Fixtures\Utf8mb4;
-use Piwik\Tests\Framework\Fixture;
-use Piwik\Tracker\Action;
use Piwik\Tests\Framework\TestCase\SystemTestCase;
-use Piwik\Tests\Fixtures\OneVisitWithAbnormalPageviewUrls;
/**
* Tests for tracking parameters containing 4 byte UTF8 chars.
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
index 81afafa469..f5149f4afd 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowserVersions_month.xml
@@ -118,6 +118,19 @@
<logo>plugins/Morpheus/icons/dist/browsers/FF.png</logo>
</row>
<row>
+ <label>Apache HTTP Client 4.2</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>0</sum_daily_nb_users>
+ <segment>browserCode==Apache+HTTP+Client;browserVersion==4.2</segment>
+ <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
+ </row>
+ <row>
<label>Chrome 11.0</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
@@ -221,17 +234,4 @@
<segment>browserCode==IE;browserVersion==8.0</segment>
<logo>plugins/Morpheus/icons/dist/browsers/IE.png</logo>
</row>
- <row>
- <label>Java</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- <max_actions>1</max_actions>
- <sum_visit_length>0</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>0</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>0</sum_daily_nb_users>
- <segment>browserCode==Java;browserVersion==</segment>
- <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
- </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
index 33534d587e..6d10bd3adf 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__DevicesDetection.getBrowsers_month.xml
@@ -155,6 +155,18 @@
<segment>browserCode==FF</segment>
</row>
<row>
+ <label>Apache HTTP Client</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <max_actions>1</max_actions>
+ <sum_visit_length>0</sum_visit_length>
+ <bounce_count>1</bounce_count>
+ <nb_visits_converted>0</nb_visits_converted>
+ <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
+ <sum_daily_nb_users>0</sum_daily_nb_users>
+ <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
+ </row>
+ <row>
<label>Chrome Mobile</label>
<nb_visits>1</nb_visits>
<nb_actions>3</nb_actions>
@@ -197,16 +209,4 @@
<sum_daily_nb_users>0</sum_daily_nb_users>
<logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
</row>
- <row>
- <label>Java</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- <max_actions>1</max_actions>
- <sum_visit_length>0</sum_visit_length>
- <bounce_count>1</bounce_count>
- <nb_visits_converted>0</nb_visits_converted>
- <sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
- <sum_daily_nb_users>0</sum_daily_nb_users>
- <logo>plugins/Morpheus/icons/dist/browsers/UNK.png</logo>
- </row>
</result> \ No newline at end of file
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
index 9eca61909c..3b75dec8b1 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Live.getLastVisitsDetails_range.xml
@@ -5259,11 +5259,11 @@
<operatingSystemVersion>UNK</operatingSystemVersion>
<browserFamily />
<browserFamilyDescription>Unknown</browserFamilyDescription>
- <browser>Java</browser>
- <browserName>Java</browserName>
+ <browser>Apache HTTP Client 4.2</browser>
+ <browserName>Apache HTTP Client</browserName>
<browserIcon>plugins/Morpheus/icons/dist/browsers/UNK.png</browserIcon>
- <browserCode>Java</browserCode>
- <browserVersion />
+ <browserCode>Apache HTTP Client</browserCode>
+ <browserVersion>4.2</browserVersion>
<totalEcommerceRevenue>0</totalEcommerceRevenue>
<totalEcommerceConversions>0</totalEcommerceConversions>
<totalEcommerceItems>0</totalEcommerceItems>
diff --git a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
index f01834cdbc..5814fe42c4 100644
--- a/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
+++ b/tests/PHPUnit/System/expected/test_ImportLogs__Resolution.getConfiguration_month.xml
@@ -144,7 +144,7 @@
<sum_daily_nb_users>0</sum_daily_nb_users>
</row>
<row>
- <label>Unknown / Java / unknown</label>
+ <label>Unknown / Apache HTTP Client / unknown</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
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 2d68c00fb3..7695088143 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
@@ -576,7 +576,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHIUlEQVR4nO3dP2icZQDH8TdtspRMLoV26PAiDo6VjhoFIYtCB3HpIAidRbCDk4uCCLbOInRwEtrFpWDBpeDi1U0QvUXJ6SJKKCpcyjlEr2/vLne/XC553ut9PlPef8mz3L3fe973za0NBoMKAGCWU6UHAAAsB9EAAEREAwAQEQ0AQEQ0AAAR0QAARETD4dR1fdDKiZumHAUAy0U0LEy32525ST0AsLxEw+F0u92RE39d11NyAQCeGOulB9BGH3z27ciad998buZRw3poVsVwzbA2hltH+kN5ANByomGCH3/Z7ff7w8WNjY2dnZ3z588nx45MPDQX9yuheanioD0BoIVcnpjsr4aqqnq93nBTc4Zg5pk+7wDFAEDLiYYF20+K5IbHfE8AaAOXJxaveWdDMg+R7AkAxYmGyc6cOTNl6/AKxczHLJM7FfI9AaAg0TDB5Zfq3s7OfMfm536VAMByEQ0TvPr8haq6MN+x0x+kbG71yCUAy2VtMBiUHgMAsAQ8PQEAREQDABARDQBARDQAAJGVe3rCAwvQNh4/huLCk+NqRYPviIK28Z/Uobj85OjyBFCMcIflIhqAMhQDLJ3VujwBtIRigPbI/0OxaADKaL5JaQgoKL+nQTQABbglGZaRexoAgMhqzTT4YkkAGJGfHH3LJQAQcXkCAIiIBgAgIhoAgIhoAAAiogEAiIgGACCyotHQ6XRKDwGoqqrq9Xq9Xq/0KICqCk6OKxoNAMBhiQYAICIaAICIaAAAIqIBAIiIBgAgIhoAgMh66QEU0/n+t9JDAKrff/+jqqpf//QBBsr7aefvixen7bC60fD+p9+UHgIAtMvrr07bqu4BgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAInNGQ13Xix0HANByj6JhvAOUAQCsoLqhuX691IAWrt/v37lzp6qq7e3tjY2N0sMBgKVU13W32524OPvyxH5lTCyOkR0m7jZeKyNbw98z09WrV9/4X34UABCKZhqalTElQMZ/nrLzfH/uIA8fPtzd3b179+6DBw+2trZu3rxpsgEAFiuKhoNO2yNn9OTsvr9bMynG8yL8PU2nT5++detWv9+/cuXKpUuXFAMAzGf/pNxcHP48/z0N4RzASbpx48b9+/fv3btXeiAAsKyOdE/DQUZKpA1OnTp17dq1s2fPlh4IADyBHkXDSAQkEwlzd0PzesT4rQ9z293d3dvbO/rvAQDGPXZ5ohkBh71BYcrW5uK844xsbW1tbm4e658AgCfblHP32mAwKDGkwjqdzvuf/1x6FADQLrevX56y1XdPAAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQGS99ACKuX39cukhAFWv16uq6ty5c6UHAlSdTmf6DmYaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgsl56AMW88/HXpYcAs3309oulhwDwn9WNhu4vf5YeAgAsE5cnAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACLrcx9Z13VzsdvtHnkwh7D2zHvNxS8+ee217WeHi3tffvXP1WvNHTZ//e5kBgbHoflyO+HXGsDQ/NFQefOCE1HXdfO1NrIIcGKOFA0j9t/Lhu9ow89Gw8X9rc2V1aSPUD5UQZNXAdASi4yG6vHPQM0saHZDc+X4ZyYfqgCgnY4UDeNTAtNP8E7/MLfxWTqAE3aM9zSM3CmZm/tAeIKNT90BnLAFX54YGrkScahjvSECQAu1/f80mHUArwKgJY5rpqH5oES+W7fbHV9zLOOD5eFFAbTE/NEw/s41siZcnPl7AC8KoA3afnkCAGgJ0QAARI7rnobjNvjhvSlb11952ZdNAMBimWkAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiKyXHkAxH771QukhAMAyWd1oePrCU6WHAADLxOUJACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAImuDwaD0GACAJWCmAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAi/wKrakcEzLgAJgAAAABJRU5ErkJggg=="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAHIklEQVR4nO3dP4ibZQDH8ffau6V0qUuhHTq8iLNUCi56Ot1U6VBcOihCV0Wwg7uCCFpnETo4KS24dSi4FFxMR6FoQCwXXfzDUXRISxxO42uSS36Xy93zpvl8pnv/3T1L8n7zvO97WRsMBhUAwCzHSg8AAFgOogEAiIgGACAiGgCAiGgAACKiAQCIiIb9qet6r5UTN005CgCWi2hYmG63O3OTegBgeYmG/el2uyMn/rqup+QCADwx1ksPoI3e/+zbkTXvvvHczKOG9dCsiuGaYW0Mt470h/IAoOVEwwTfP9jp9/vDxY2Nje3t7bNnzybHjkw8NBd3K6F5qWKvPQGghVyemOzPhqqqer3ecFNzhmDmmT7vAMUAQMuJhgXbTYrkhsd8TwBoA5cnFq95Z0MyD5HsCQDFiYbJTpw4MWXr8ArFzMcskzsV8j0BoCDRMMGll+ve9vZ8x+bnfpUAwHIRDRNcfOFcVZ2b79jpD1I2t3rkEoDlsjYYDEqPAQBYAp6eAAAiogEAiIgGACAiGgCAyMo9PeGBBWgbjx9DceHJcbWiwXdEQdv4T+pQXH5ydHkCKEa4w3IRDUAZigGWzmpdngBaQjFAe+T/oVg0AGU036Q0BBSU39MgGoAC3JIMy8g9DQBAZLVmGnyxJACMyE+OvuUSAIi4PAEAREQDABARDQBARDQAABHRAABERAMAEFnRaOh0OqWHAFRVVfV6vV6vV3oUQFUFJ8cVjQYAYL9EAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZL30AIrpfPdL6SEA1a+//l5V1c9/+AAD5f2w/df589N2WN1oeO/Tb0oPAQDa5dWL07aqewAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAIDInNFQ1/VixwEAtNx/0TDeAcoAAFZQ3dBcv15qQAvX7/dv375dVdXW1tbGxkbp4QDAUqrrutvtTlycfXlitzImFsfIDhN3G6+Vka3h75np6tWrr/0rPwoACEUzDc3KmBIg4z9P2Xm+P7eXx48f7+zs3Llz5+HDh5ubmzdu3DDZAACLFUXDXqftkTN6cnbf3a2ZFON5Ef6epuPHj9+8ebPf71+5cuXChQuKAQDms3tSbi4Of57/noZwDuAoXb9+/d69e3fv3i09EABYVge6p2EvIyXSBseOHbt27drp06dLDwQAnkD/RcNIBCQTCXN3Q/N6xPitD3Pb2dl59OjRwX8PADDuf5cnmhGw3xsUpmxtLs47zsjm5ubJkycP9U8AwJNtyrl7bTAYlBhSYZ1O573Pfyo9CgBol1sfX5qy1XdPAAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQGS99ACKufXxpdJDAKper1dV1ZkzZ0oPBKg6nc70Hcw0AAAR0QAAREQDABARDQBARDQAABHRAABERAMAEBENAEBENAAAEdEAAEREAwAQEQ0AQEQ0AAAR0QAAREQDABARDQBAZL30AIp556OvSw8BZvvw7ZdKDwHgH6sbDd0Hf5QeAgAsE5cnAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACLrcx9Z13VzsdvtHngw+7D2zOXm4hefvH156/nh4u9f3f7x9TebOzz72/0jGhkcgubL7YhfawBD80dD5c0LjkRd183X2sgiwJE5UDSM2H0vG76jDT8bDRd3tzZXVpM+QvlQBU1eBUBLLDIaqv9/BmpmQbMbmivHPzP5UAUA7XSgaBifEph+gnf6h7mNz9IBHLFDvKdh5E7J3NwHwhNsfOoO4Igt+PLE0MiViH0d6w0RAFqo7f+nwawDeBUALXFYMw3NByXy3brd7viaQxkfLA8vCqAl5o+G8XeukTXh4szfA3hRAG3Q9ssTAEBLiAYAIHJY9zQctsH9L6dsPfXK1ilfNgEAC2WmAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACAiGgCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiIgGACCyXnoAxXzw1oulhwAAy2R1o+Hpc0+VHgIALBOXJwCAiGgAACKiAQCIiAYAICIaAICIaAAAIqIBAIisDQaD0mMAAJaAmQYAICIaAICIaAAAIqIBAIiIBgAgIhoAgIhoAAAiogEAiPwNgzJHV6bDx3AAAAAASUVORK5CYII="
height="200"
width="700"
margin="0 auto"/>
@@ -1431,7 +1431,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIQ0lEQVR4nO3dT48bZx3A8We89ibZ/oMWUboRCpWFKBIgUJG4UcqFC6qUU18Ab6BCQkLcOJSCkOiNC0LiwIlDxTvgCAcsISHRaImrKmFN2u42S0Oz2d0s5mDJmY7//eLY83jXn89hZXvG9hMpO/OdZ8brot/vJwCAWRq5BwAAnA2iAQAIEQ0AQIhoAABCRAMAECIaAIAQ0bBc7XZ70oNjF015FgDkJRqy6Xa7MxepBwBWh2hYrm63W9nxt9vtKbkAACurmXsA58HPfvvXyiM/+cE3Zz5rWA/lqhg+MqyN4dJKfygPAGomGhbgnzc/Ojk5Gd5ttVq7u7uXL1+OPLcy8VC+O6iE8qmKSWsCQA2cnliMuyUppV6vN1xUniGYuaePd4BiAKBmoiGzQVJELniMrwkAy+D0RH7lKxsi8xCRNQFg4UTDYmxtbU1ZOjxDMfNjlpErFeJrAsACiYYFuPrddm93d77nxvf9KgGAvETDArzy7SspXZnvudM/SFle6iOXAORV9Pv93GMAAM4An54AAEJEAwAQIhoAgBDRAACE+PTEDD6wALn4mDHUJrizEw3T+I4oyMVfTIfaxHd2Tk8AK0egw2oSDcBqUQywspyeAFaIYoD6xf/isGgAVkt546UhoAbxaxpEA7BCXHoMq8w1DQBAiJmGaXyxJADnXnxn51suAYAQpycAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAjpdDq5hwDrpdfr9Xq93KOA9TJzZycaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEKauQdwZnT+cSv3EGCN7O/fTin9+8CBDdTn+u7hiy9OW0E0RL3+mz/nHgIALNerr0xbquIBgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBASE3R0G6363kjAGBJ5o+G0Q5QBgBwDrRLyo83cw0IAFhB7Xa72+2Ovbv40xODKhlbKJUVxq42WjeVpcHXAQAWaykzDeUqmRIso7enrDzf2wEAi7KUaJi0267s0YN792FMjP58qNcBAGYa7GTLd4e367umwRwAAKy+Wq9pmKRSLgDA2TJ/NFQiIDKRMHc3lM9HjF76AADU4JFOT5Qj4GEvUJj5gvHXBAAWZcq+uOj3+zmGdMZ0Op3Xf38j9ygAYLneevPqlKW+ewIACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhzdwDODPeevNq7iHAGun1eiml7e3t3AOBNdLpdKavYKYBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACHN3AM4M370qz/lHgJU/fKHL+ceArBGRENU9+ZB7iEAQE5OTwAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCmrkHkNlpv793WNw4ONnZv//O3r1r79299sHxzt7RnZ++kHtoALBa1igaTk77e0fFvwZ9sH/0tWebf7l59LvOwd7Hp/dPT3OPDgBW3bKiod1ud7vdJb34HL7x617v4PDDuw/64McvPXN9//jWR8d5BwaPrt1uD2+v1O8dcM48uKahvN2ZdLfyYM0mDals0nP/dvM/7985NqPA+TMI9KG8v6TA+fZwMw15D2IGG8TBGMozGeVRrdoMByyb//BAbR7MNJSPUQa73srd9Mn5htGD+7FH/KMPVpaO3p45bQAA1G/OaxrKB/TDwqgc8aeR4/7INMD0dYYp4+gKyoaR7VcDWJ45o+FRNkzDwhj9OfdrzvT9Lz2+uVE0N1JK6X/9lFL6yucufOaxjUaRLjYbF1tFSik1NpY3AFiqSsTnHQxwXo2JhuFGp4Z9+ag55hIil45vbRaDG42i2NosNjeKrVbjUxc3tp9spZSajZSKonHhsYY/dgUAE3wiGsZeep2lGya978wLISf5w9/vVB55+tLGtfeP/vj2f0uP7Q9vvfGdL88xcqifqQWgNmNmGsoboPk+wTXzKeU5jCzzGQONoqj/TWGxKr+kAgJYnoX9cafylqt8iuFhN2dTrueqzC48emo4GcH5IBSAelSjYXTrU5l4GF1n7GmCmecOxq48Zf1J72tzCQD1WJdj7ReeffzJS631+fcCwMKtyxdWvf3a5w/v9299nN69fbyzf/rO3uHXtzeP+43PPnFU/kIKAGCSdYmGlNKlZvH8U+n5py68/IWU0lZK6dWvPvHz7z2zd6+4cftk58P77+7du/be3Z0Pjq7vn+QdKgCsoDWKhrFajeK5rfTcVutbl1spXUrp07lHBAAryjl+ACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQEgz9wDOjF+89lLuIQBATqIh6otXns49BADIyekJACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgJCi3+/nHgMAcAaYaQAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQMj/AUj79zi+7/8mAAAAAElFTkSuQmCC"
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIQUlEQVR4nO3dzY8bZx3A8Wfs3SzZhFYEEdFEIlQWbz1UQkXiRikXLqhSTogz/wAgISFuHApFSPTECSFx4MSh4j/giISwhIQEYVlXVZo1IdndpA1NNvuCOVhypuO3Xxx7Hu/68zmsbM/YfiJlZ77zzHhd9Hq9BAAwTSP3AACA00E0AAAhogEACBENAECIaAAAQkQDABAiGhar1WqNe3DkognPAoC8REM2nU5n6iL1AMDyEA2L1el0Kjv+Vqs1IRcAYGmt5R7AWfDT3/yl8siPv/uVqc8a1EO5KgaPDGpjsLTSH8oDgJqJhjn413sfHB0dDe6ur6/v7OxcvXo18tzKxEP5br8Syqcqxq0JADVwemI+HpaklLrd7mBReYZg6p4+3gGKAYCaiYbM+kkRueAxviYALILTE/mVr2yIzENE1gSAuRMN87G5uTlh6eAMxdSPWUauVIivCQBzJBrm4Po3Wt2dndmeG9/3qwQA8hINc/D6166ldG22507+IGV5qY9cApBX0ev1co8BADgFfHoCAAgRDQBAiGgAAEJEAwAQ4tMTU/jAAuTiY8ZQm+DOTjRM4juiIBd/MR1qE9/ZOT0BLB2BDstJNADLRTHA0nJ6AlgiigHqF/+Lw6IBWC7ljZeGgBrEr2kQDcAScekxLDPXNAAAIWYaJvHFkgCcefGdnW+5BABCnJ4AAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhoiGk3W7nHgKslm632+12c48CVsvUnZ1oAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAhZyz2AU6P999u5hwArZG/vXkrp3/cd2EB9tncevfLKpBVEQ9Qbv/5T7iEAwGJ9+/VJS1U8ABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACKkpGlqtVj1vBAAsyOzRMNwBygAAzoBWSfnxtVwDAgCWUKvV6nQ6I+/O//REv0pGFkplhZGrDddNZWnwdQCA+VrITEO5SiYEy/DtCSvP9nYAwLwsJBrG7bYre/Tg3n0QE8M/n+p1AICp+jvZ8t3B7fquaTAHAADLr9ZrGsaplAsAcLrMHg2VCIhMJMzcDeXzEcOXPgAANXim0xPlCHjaCxSmvmD8NQGAeZmwLy56vV6OIZ0y7Xb7jd/dzD0KAFist9+6PmGp754AAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAyFruAZwab791PfcQYIV0u92U0pUrV3IPBFZIu92evIKZBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACErOUewKnxw1/+MfcQoOoXP3gt9xCAFSIaojrv3c89BADIyekJACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQMha7gFkdtLr7R8UN+8fbe0fb985uPGfh1t3D2/sPn7wky/mHhoALJcVioaj//V2D4pb94+29o/f3Tt86VPNP986/G373u6HJ8cnJ7lHBwDLblHR0Gq1Op3Ogl58Bl/+Vbf7/qP9h0/64EevfnJ77/D2B4d5BwbPrtVqDW4v1e8dcMY8uaahvN0Zd7fyYM3GDals3HP/euv9Ow8OzShw9vQDfSDvLylwtj3dTEPeg5j+BrE/hvJMRnlUyzbDAYvmPzxQmyczDeVjlP6ut3I3fXS+YfjgfuQR//CDlaXDt6dOGwAA9ZvxmobyAf2gMCpH/GnouD8yDTB5nUHKOLqCskFk+9UAFmfGaHiWDdOgMIZ/zvyaU33rCxfPNYu15pNHXrq8cflis1GkzXONc80ipZQazXFPhyVXifi8gwHOqhHRMNjo1LAvHzbDXELk0vHNc0X/RqMozjWLj60XFzcahyfNK8+tp5QaRWo0isbGhYY/dgUAY3wkGkZeep2lG8a979QLIcf5/d8eVB65dL55487jP/zjv6XH9ga3fvb1L80wcqifqQWgNiNmGsoboNk+wTX1KeU5jCzzGX2Noqj/TWG+Kr+kAgJYnLn9cafylqt8iuFpN2cTrueqzC48e2o4GcHZIBSAelSjYXjrU5l4GF5n5GmCqecORq48Yf1x72tzCQD1WJVj7c9fvvDc+fXV+fcCwNytyhdW/fP7n3l03Lv9YXr33uH2/sk7uwcvf3rjsNe8/PHH5S+kAADGWZVoSCmdXytefD69+PzGa59NKW2mlL7z8oU3v3lp96C4ee9oa//4nbsHW3cebt19vL3nW6wAoGqFomGk9UbxwmZ6YXP9q1fXUzqf0idyjwgAlpRz/ABAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAICQtdwDODV+/r1Xcw8BAHISDVGfu3Yp9xAAICenJwCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCil6vl3sMAMApYKYBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAh/wekwvccggoVsAAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
@@ -1526,7 +1526,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANEUlEQVR4nO3da4xc1WHA8XPv7GN2/QRDcW2CSadATIHSgBIo4tVWqRvSqgQ5aZqkiYuiFsGXSKVILSWtWlBxUWgTqRVFNHLjEkha+FDnA1ECDUqok7AppBAoaFKw8drYXuOFtb3Puf0wsJmOZ8fH+7ozs7/fBzQ7c+7MGcns/e+9584kWZYFAIATSfOeAADQHkQDABBFNAAAUUQDABBFNAAAUUQDABBFNJycUqk0050NH2qyFQC0F9Ewb8rl8gkfUg8AtC/RcHLK5XLdjr9UKjXJBQDoGF15T6AV3fXA03X3/MmNl55wq+l6qK2K6Xuma2P60br+UB4AtDjR0MDLu9+cmJiY/rG7u3vPnj3r16+P2bbuwEPtj9VKqD1VMdNIAGhBTk80drRGCGFwcHD6odojBCfc08d3gGIAoMWJhnlWTYqYBY/xIwGgFTg9Mf9qVzbEHIeIGQkAuRMNjfX39zd5dPoMxQkvs4xZqRA/EgByJBoauP5XSoN79sxu2/h9v0oAoL2IhgZ+66oNIWyY3bbNL6SsfdQllwC0lyTLsrznAAC0AVdPAABRRAMAEEU0AABRRAMAEGXJXT3hggVoNS4/htxF7hyXVjT4jihoNT5JHXIXv3N0egLIjXCH9iIagHwoBmg7S+v0BNAiFAO0jvhPKBYNQD5qf0lpCMhR/JoG0QDkwJJkaEfWNAAAUZbWkQZfLAkAdeJ3jr7lEgCI4vQEABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUZZoNAwMDOQ9BSCEEAYHBwcHB/OeBRBCxM5xiUYDAHCyRAMAEEU0AABRRAMAEGVpfWFVrfLuw3lPAQgHDhwJIRyb8v8j5G/v0HjzAUs3Gm79/BN5TwEAWsuHPtDsUacnAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAos/yWy1KpVC6X53cqAEArKJVK07drd/dpwxEz3QMAdLbqcYFptTHg9AQAEOXE0VBNjNI7mgxoOKxUo3b8TLdP+HIAQC6i1jTUrmCoW80w00PV200Gz+7lAIAFVXdKovGahubbN7y/bo8euXefns10WNQ9lUoAgLwsyJoGxwAAYEmZfTTU1QcA0Nl+uqahbglCzIGE41ctRKrdcNZPAgDMuyZrGrpmGndSCxRmGtzkhQGA1jTT/jrJsmyRp9IKBgYG7ty+K+9ZAEBreeTe65s86sOdAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiCIaAIAoogEAiNKV9wRy0/zbP4HFMTg4GEJYt25d3hMBwsDAQPMBjjQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQZel+jPRNf/VY3lNgrv7h9l/PewoAS8jSjYbXh47mPQUAaCdOTwAAUUQDABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUUQDABClE6Nh/Mls+N68JwEAnabTvnsiG30+eXNrmBzPet6X9F2R93QAoHPkdqShVCqVSqU5Pkk2eSQbG/p/dw3fHyZHk6mpMHR3Nv6TOT4/ADBt9kca6nb55XK5VCqVy+XIbSNHNpGNH8u+9fHkws9kE8VkxYpw2vvC1J5k+KmQ9oa0Jwkj2b4/y87489B9ZpL2zfG1aGW1/xTn/u8KgJnM6fRE3S/oxf59/fjd6Y//MxwdDYf2Tl511+DO0YPfmZwcvnXNxTt/7uqdIfQnEwfCgQey/rPDqX+4qBNjEdUF6Lz0KAANzefpieoffLX/De+chqg9GTE9oPbG8QOOv10rO7A7PPHV8FYhvPJMSPaN/fCPnrmnPPjdZUP/feVLD97yzbtunXgjCxOF8MazYeQ/sslX5/Ft0lIkAsCiWZCFkNN/7TX8K7D2REbzAc3+anzmiWR4MqzsCadloScsm3jzg7dc+8L/3PLiE5/tmuj5peu+kyxLs4NJsjKE0eEw8lRYvWEh3ikALB1zOtJw/EGCqkX44y97+ZUwUswO9mXdSTgljG1Y/VLlI7sKFwz19Rxe1vPNrX+crjyYjVcq+5MQpsLYroWeD63AuQmABTWfaxoamt0lEideVrm/Ekb6k8mx8O/du6/qv+fhhwunryz2dy1bUek/ko2GdOjF1WsmxrPhVYW1I6F3bBZzoI1U/5kpBoAFteCf0zC73+MnPD0xnpxVPNITxguhb3zfs2sPTuzp6TpSSPr6Cr0rKxNhvLIye7Xy+jnp6uHsYAh9K5O5vQtamQMMAItjUT+nYe4fzPBTF7938o3l2UhveLPv0qHX1qx4/sj+wWOH9w0f3jU0tP+8jV8uHgqF0SPp6OjU7p5QuHDeXpcWoxgAFs3CHmmoHi2o/TFmwPRuoMnBht5f3Xjo9o2rKi+nY2PJaNfW3m3bx6754dTPd3WPX7P2v64/+/Fs4LS0b6oy3FXpPr3rXZcvyNujNSz+khqApSnJsizvOczS0X/67tE77l+xZiRNJ9LCRNI9nhRGQ/dUErpDVxaKWWVVcqyyuviZmwrXfrBu24GBgTu3Wx3Z9h659/q8p8BcDQ4OhhDWrVuX90SAMDAwcMkllzQZ0MbfPdH36cvHn3710L8+3r96tKdnMh2fTAqTaTKVpJUkqUxMpqO7+no2X5tevSnvmQJAJ2jjaEjSdNUXPlpYu+rQ33097TrWU5zq7qokaWUqy6Ym0iTpWXHTdcXP/naSduI3eQLAomvjaAghJF2FFXdc17/50pEHnjz6jeePvLI/JKH77FOXbbpw2ZZr0veckfcEAaBztHc0VBU2nrHqns2rwua8JwIAncyhewAgimgAAKKIBgAgimgAAKKIBgAgimgAAKKIBgAgimgAAKKIBgAgimgAAKJ0wsdIz45vVQaAk+JIAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFGW7sdIb9/xfN5TWFif+NAv5D0FADrK0o2GR771Ut5TWFiiAYD55fQEABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUUQDABBFNAAAUTrhY6SzH/04PPhvybefCnv2hpCE9euyq385fPzDyYUb854aAHSO9o6G7Nix8LmtyUOPhkolZOG1saPPHT34+uDzUz94bM0Xt577+1vOvfuuQn9/3tMEgE4wb9FQKpWmb5fL5fl62iayY8fCJ29Odj4dQphK07c+dcPyG37zip7e3Tt2vPg3W0ePHHn2gftef+nFKx99RDcAwNzNTzSUSqXaUKj7caF8bmu1GEKWJXffsfpjH67eff75G3/mssu+95HN2fj4W9//3gt/evsF935+wSfTqqoxtzgZB0Bnm4eFkMcnQrlcru6rpv9bVbtJ3Z214xtuUid77sXkoUffvv1rV6fvFEPVaVdd+Z6bb+4vFpf19e3/2ldHnntu7m+zHS1SvQGwNCz4moba/Vb19kyHJWrvr9ukwfNu/1qoVN6+veVjxz9+5qe3HNi2LUxNhRAOPPiV5XfdOU9vqJ0oBgDm0YJfchm/3zqpPVzy7aeqN7Jib7jkF48f0PuuM9ecc25/sdhfLI7/4PvxzwwANJTP1RNNzjtEDgh79r5949TVyYrlDYcs37Ah3bs3hBAOHz7JCQIA9fKJhuYHFerOaMz6VXq7u0JfMYQQCoVZPwkAUDUPpyemlz1OO6n1d7PLgmz9z2ZVBw9lb400HNNz+PCyYnFZsbj8rLNm8RIAQK35OdJQ1w116xzr7m8yuOGzNTR25WWT2x4KIYTJyeLAs13XXFE3INu3rzg0FHp7Qwjp5ZefzLsBABqYt9MTMx1aaHh/w1CIebZphd/bPPSlr1Qvjhi7b9ua46Nhx46uNA1pGpIk27Sp+bN1qrorWl1MAcBctOvHSHdfcH7XJ2449MC/hBCGv/6N9MsPn/LJj04/mj37o2THjrdvb9qUnHNOPrPMm0oAYB4tbDQs6E7r9DtvP/TCy8NPPhVCGLn5tnf/5H9P+9TvhDRNdu4MDz+cTE6GELILLwg33rhwcwCApaNdjzSEENL+vvMe2fbybX+x6/7tlWOjh/7yb0+570sb3r32lFX9hTR9c3Ssb9NvFG+5OSkW854pAHSCNo6GUO2GL/712ht/t/yP//z6Y0/s3vXaqwcOFc9av/YD1573B1v6Lr4o7wkCQOdo72ioWnXxRe/9+3vyngUAdLgF/xhpAKAziAYAIIpoAACiiAYAIIpoAACiiAYAIIpoAACiiAYAIIpoAACiiAYAIIpoAACidMJ3T8zObVven/cUAKCdLN1oeP9F6/KeAgC0E6cnAIAoogEAiCIaAIAoogEAiJJkWZb3HACANuBIAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFFEAwAQRTQAAFH+DxmNj5VAG3klAAAAAElFTkSuQmCC"
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANHklEQVR4nO3de4xc1X0H8HNnZndn16/YhOLYAZoOIkBxiKAtoQkQogoISVO5CUg0IPFQmxd/9QFSGxKkhkjUBFS1ahoJ0pC4mBLV/AGR2lQxoRVgEbZJCg4J7jSA43HA68d6ba/3efvHwHQ6nh0f787u3Zn9fP5Y37n33Du/kdZ7v3POufcmaZoGAIATyWVdAADQGYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0np1QqzbSy6aYWewFAZxEa2qZcLp9wk/QAQOcSGk5OuVxuOPGXSqUWcQEAukYh6wIWoy8/+HzDmj+/9TdOuFctPdSnitqaWtqobW3IH5IHAIuc0NDEzl2HJiYmai97enp27969fv36mH0bOh7qX1ZTQv1QxUwtAWARMjzR3NE6IYRKpVLbVN9DcMIzfXwOkBgAWOSEhjarRoqYCY/xLQFgMTA80X71Mxti+iFiWgJA5oSG5gYGBlpsrY1QnPAyy5iZCvEtASBDQkMTGz9UquzePbt948/9UgIAnUVoaOJjl50Zwpmz27f1hZT1W11yCUBnSdI0zboGAKADuHoCAIgiNAAAUYQGACCK0AAARFlyV0+4YAEWG5cfQ+YiT45LKzR4RhQsNu6kDpmLPzkangAyI7hDZxEagGxIDNBxltbwBLBISAyweMTfoVhoALJR/0dKhoAMxc9pEBqADJiSDJ3InAYAIMrS6mnwYEkAaBB/cvSUSwAgiuEJACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQJQlGhoGBwezLgEIIYRKpVKpVLKuAggh4uS4REMDAHCyhAYAIIrQAABEERoAgChL64FV9cq7DmZdAhD27j0SQhid8v8Rsrdn33jrBks3NPzZfU9mXQIALC4fvbLVVsMTAEAUoQEAiCI0AABRhAYAIIrQAABEERoAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARJnlUy5LpVK5XG5vKQDAYlAqlWrL9af7XNMWM60BALpbtV+gpj4MGJ4AAKKcODRUI0bpLS0aNG1WqlPffqblE74dAJCJqDkN9TMYGmYzzLSputyi8ezeDgCYVw1DEs3nNLTev+n6hjN65Nm9Vk0tWDQcSkoAgKzMy5wGfQAAsKTMPjQ0pA8AoLv935yGhikIMR0Jx89aiFS/46wPAgC0XYs5DYWZ2p3UBIWZGrd4YwBgcZrpfJ2kabrApSwGg4ODd29+LesqAGBx2Xr/xhZb3dwJAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKEIDABClkHUBmWn99E9gYVQqlRDCunXrsi4ECIODg60b6GkAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQJSlexvpz3zpX7Mugbn66uevyroEgCVk6YaG1/cdzboEAOgkhicAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEKULQ0M69u/p8P1ZVwEA3abbnj2Rju9IDm1KJ8fT3t9K+t+fdTkA0D0y62kolUqlUmmOB0knjqQT++peT4cDXwsTo8nkRBi6Jx0rz/H4AEDN7HsaGk755XK5VCqVy1Hn6fiWLaRjR8K2G8OGP0zHe8KyFclpF4fpPcnwsyFXDPneJBxN3/hi+vY7Q98ZSa5/ju/FYlb/qzj33ysAZjKn4YmGP9AL/fd626ZkxzPhyGi6b8/UFV+qPDe29+mJieE7Trng2bOu2J6kA8n462HowenlpWT1pxa0MBZQQwBtSx4FoKl2Dk9Uv/DV/wxvDUPUD0bUGtQvHN/g+OV66dAvwvcfDSM94ZUfJoU3Jgdv/6/7flZ5evnBFz7w31tu2/aXd0wcTMJ4Lgy/EA59Px1/pY0fk0VFRABYMPMyEbL2ba/pt8D6gYzWDVp9a/zPJ5ND02FFIfxKPvSkxfHhqz571c92fvon3/uTnsm+c3/36bQ4ke4rJitDMnYwjG4Pvb86H58UAJaOOfU0HN9JULUAX/7S//l5ONwXhoohH8Lq9NiZa15ON76ae8/BZb0HlhW23ffH+VUj6Vg6vTefJFPh2CvzXQ+LgbEJgHnVzjkNTc3uEokTTqtMf5mGkWKYyIUn8rs+uHzT5kcKa1cNDPQUV04tO5yOj+X3v7xizdR4eqA/t3Yk9E7OogY6SPXXTGIAmFfzfp+G2f0dP+HwxGTunfnDfWEiH3p7Kj9cuy/d3ZM/cigMDCS9K9KpdHJyZfLa9J6zc6sOTQ8loX95MrdPwWKmgwFgYSzofRrmfmOGmvT8904cXJ4eKoaR4m8O7VozsOPI0J4jw5WDB3ftHXr9nPMe7n0jyY8eSo6Npq/2Jr3nt+t9WWwkBoAFM789DdXegvqXMQ1qp4EWnQ19V55/4IvnrJzemRsfT471bCp+8+GJywcPndWTpJee9tzGdz2ZDJ6aLJueGi5M9Zyae6dbQ3azhZ9SA7A0JWmaZl3DLB39+tNH73xg+ZrD+cJ4rjCRy4+HnmMhP5UkvaGQhoF0ekUymq4s/tFn85df07Dv4ODg3Ztfy6Rs2mjr/RuzLoG5qlQqIYR169ZlXQgQBgcHL7roohYNOvjZE/03XTI++Mr+b29b/raxnt7JXG4yyU3mctNJbipJpif2Jccm+3uvuyJ36dVZVwoA3aCDQ0OSy6366+vz61bvv+87+cJooTjZ2zOVhHQ6TE9PJlPT/Ss+/ZHin/5ekuvCJ3kCwMLr4NAQQkgKuRV/cc2yj1848sB/HP2XF4/8YihJQuGM1QNXbVh202X5896RdYEA0D06OzRU5c5Zu+rea1fde23WhQBAN9N1DwBEERoAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAo3XAb6dnxVGUAOCl6GgCAKEIDABBFaAAAoggNAEAUoQEAiCI0AABRhAYAIIrQAABEERoAgChCAwAQZeneRnrzEzuyLmF+3fDRX8+6BAC6ytINDVu/93LWJcwvoQGA9jI8AQBEERoAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAo3XAb6fSFn4R//OfkqWfC7j0hJGH9uvTy3w6f3JhsOC/r0gCge3R2aEhHR8Ndm5Itj4XpqZCGXWNHd4wOvb5nx9QPvnvK39xz9s23nv1Xd+cHBrIuEwC6QdtCQ6lUqi2Xy+V2HbaFdHQ03Pi5ZPvzIYTpXG7kpk+s+MTHPlDoee3xJ17adM+xo0d+/ODf/3LnS5c9tlVuAIC5a09oKJVK9UGh4eV8uWtTNTGENE3u+cKq63+/uvq888497ZL3bb/u2nR8/MgPnnvpzi+c/5V7572Yxaoa5hYmxgHQ3dowEfL4iFAul6vnqtrPqvpdGlbWt2+6S4P0xZ8mWx57c/l3Lk/eSgxVp1x26Tm33TZQLA4Ui3sf/aeRF16c+8fsRAuU3gBYGuZ9TkP9eau6PFO3RP36hl2aHHfzt8P01JvLt1x//PbTb7557ze+EaamQghDW7as2HB3mz5QJ5EYAGijeb/kMv68dVJnuOSpZ6oLabEvXHjB8Q16169fc/bZ1c6G8eeeiz8yANBUNldPtBh3iGwQdu+p/puseVtYsbxpk5Wnn5Gv7AkhhAMHTrZCAKBBNqGhdadCw4hG60OlISQzbOrr6037iyGEkM+ffI0AwP/ThuGJ2rTHmpOaf3fiToVm0vXvSNM0TdOw/2A6crhpm97h4WXF4rJicfnpp8/iLQCAeu3paWjIDQ3zHBvWt2jc9GhNjV36vomHHgkhhJHD/YM/Lnzw/Q0N0jfeKO4dSvv6QgjJJZeczKcBAJpo2/DETF0LTdc3DQoxR6sp3Hjdvn/YUr04YvxrD51yXGgIjz+ezyUhV0iTJFzzkdZH61YNV7S6mAKAuejU20gXNpxb+OTH93394RDC8Hf+Lbf50dU3XFfbmv7oR+Hxx998cfXVyVmzGQHpAlICAG00v6FhXk9ap3758/t/unP4qWdDCCOfuf3Xfv7K22+4Nsnn0+3bk0ceCZOTIYR0w4Zw663zVwMALB2d2tMQQsgN9L9760M7b7/r1Qc2h2OTz9/1lTVfffDMd522etWyfJIbOTbW9+EP99/2uaRYzLpSAOgGHRwaQjU3/O09a2/5g/ID33r9u9t2vbr71b37i2esW3vlh979qVsG3rsh6wIBoHt0dmioWnXhBRf+XZObQgIAbTTvt5EGALqD0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKN3w7InZuePmi7MuAQA6ydINDRe/Z13WJQBAJzE8AQBEERoAgChCAwAQRWgAAKIkaZpmXQMA0AH0NAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCI8r99fpUl3Zsc/AAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
@@ -1646,7 +1646,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANjUlEQVR4nO3de3Bc1X0H8HN39VjJNjYYgmsTDN0aYmooDUwCpbzaTuqGtFPCuGmapInLZFoK/2SmlJmWkr5gisuEtJlphzI048YlkDTwR50/yCTQMAl1EpRCCoHi2QRsLD9lLJCtt27/WFiW1Wp1tJZ0tdLn84fn6t6z9/7EiD3fPefcu0mapgEAYDq5rAsAAFqD0AAARBEaAIAoQgMAEEVoAACiCA0AQBShYTYVi8WpdtY91OBVALDQCA3zpFQqTXtIegBgIRMaZlOpVKrp+IvFYoO4AAAtpC3rAlrPXQ88XbPnz268dNpXVdJDdaqo7KmkjcrRmvwheQCQOaFhxnbvfX10dLTyY3t7+759+9atWxfz2pqBh+ofyymheqpiqpYAkAnTE804USWE0NvbWzlUPUIwbU8fnwMkBgAyJzTMq3KkiFnwGN8SAOaH6Yn5Vr2yIWYcIqYlAMwDoaEZ3d3dDY5WZiimvc0yZqVCfEsAmFNCw4xd/yvF3n37mnttfN8vJQCw0AgNM/ZbV60PYX1zr218I2X1UbdcArDQJGmaZl0DANAC3D0BAEQRGgCAKEIDABBFaAAAorh74h3csACZc78xzL/I7k9oeJvviILMeXQ6zL/47s/0BLBQSOqwwAkNwIIgMcDCZ3oCyJ7EABmKfwax0AAsCNXvWTIEzKf4NQ1CA5A9a5ChJVjTAABEMdLwNl8sCcASFN/9+ZZLACCK6QkAIIrQAABEERoAgChCAwAQRWgAAKIIDQBAFKGhjp6enqxLgCWqt7e3t7c36ypgiZq2+xMaAIAoQgMAEEVoAACiCA0AQBRfWFVfae+xrEuApejw4eMhhMFx/wNCBvb3jTRuIDTUd+vnnsi6BACYbx/6QKOjpicAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIMiffclksFkul0lycGQCYa8VisbJd3aHHjjRUv36qPQBAqyt/8q+o7u5NTwAAUU42NJQDSPEtDRrUbVasUt1+qu1pLwcAzJFZWNNQvYKhZjXDVIfK2w0aN3c5AOAk1UxJNLOmofHZ6+6v6dEje/dKrZVgUXMqKQEA5k4GaxqMAQDAIjNXoaEmmwAArS52TUPNEoSYgYTJqxaauFbTJwEAmtBgTcMMFkJWn2VGCxSmatygLAAgK1P1yEmapvNcysLX09Nz5449WVcBAPPtkXuvb3DUw50AgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFHasi5ggWr83aDAHOnt7Q0hrF27NutCYCnq6elp3MBIAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACieIx0fTf97WNZl0Dz/vn2X8+6BIBFSGio72DfiaxLoHnP7T68acMZWVcBsNiYngAAoggNAEAUoQEAiCI0AABRhAYAIIrQAABEERoAgChCAwAQRWgAAKIIDQBAlKUXGkaeTPvvzboIAGg9S+u7J9Kh55PXt4WxkbTjfUnXFVmXAwCtZE5GGorFYrFYnIszz0g6djwd7nvHrv77w9hQMj4e+u5OR36SUV0A0JLqjzTUdPmlUqlYLJZKpZgzxrec9tJTnafSpsGF0pHB9FsfSy78dDpaSFasCKe/L4zvS/qfCrnOkOtIwkB64C/SM/8ytJ+V5LqarpaFLOZvCYB4U05P1LzJzs97bk3gqJs/YkPJ43fnfvzf4cRQOLp/7Kq7encNHfnO2Fj/rasv3vWzV+8KoTsZPRwOP5B2nxNO+6PZ/S1YCGL+lgCYkdjpifKHtup/w1vTENWTEZUG1RuTG0zeLpv2bT3yrT89vDc88ZXwRj68/ExIDgz/8E+euafU+91lff975UsP3vLNu24dfS0No/nw2rNh4L/SsVci/gPQYkQEgFk344WQlW677ie56omMxg2a/uQXNeb8zBNJ/1g4pSOcnoaOsGz09Q/ecu0L/3fLi098pm204xev+06yLJceSZJTQhjqDwNPhVXrm6gEAJaUKUPDVH3zPHyAa7xkIWbMOd39cjJQSI/kw7mDyanpcNeq0sFr9+Q39XV1dHYk39z2p1u/tjk98K70UD5ZPhaG98zRL8ICYW4CYFbErmmoq7lbJKYdZqgcav69/tBEGOhOxobDf7bvvar7nocfzp9xSqG7bdmKie7j6VDI9b24avXoSNq/Mr9mIHQON3MJWkH5T1RiAJgVJ/WchqbnF05meiLGSHJ24XhHGMmHrpEDz645Mrqvo+14PunqyneeMjEaRiZOSV+ZOLght6o/PRJC1ynJHNVBpgwwAMyuWXtOw6w8mGGqk8z45Be/d+y15elAZ3i969K+V1eveP74od7BYwf6j+3p6zt0/sYvFY6G/NDx3NDQ+N6OkL/w5CtnoZEYAGZd8yMN5dGC6h9jGlTeyusONjR3zsk6f3Xj0ds3rpzYnRseTobatnVu3zF8zQ/Hf66tfeSaNf9z/TmPpz2n57rGJ/rbJtrPaHv35TP6xWkVkx83klUlAItDkqZp1jXMiRP/+t0Td9y/YvVALjeay48m7SNJfii0jyehPbSloZBOrEwGJ1YVPn1T/toP1ry2p6fnzh1WR7awv/7jX9604Yysq6AZvb29IYS1a9dmXQgsRT09PZdcckmDBov2uye6PnX5yNOvHP2Px7tXDXV0jOVGxpL8WC4ZT3ITSTIxOpYb2tPVseXa3NWbs64UAFrDog0NSS638h8/kl+z8ug/fD3XNthRGG9vm0hyE+NpOj6aS5KOFTddV/jMbye5pfc9nwDQlEUbGkIISVt+xR3XdW+5dOCBJ0984/njLx8KSWg/57Rlmy9ctvWa3HvOzLpAAGglizk0lOU3nrnyni0rw5asCwGA1mZwHgCIIjQAAFGEBgAgitAAAEQRGgCAKEIDABBFaAAAoggNAEAUoQEAiCI0AABRFv9jpJvzyL3XZ10CACwsRhoAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEMVjpOvbsfP5rEuYQx//0M9nXQIArUdoqO+Rb72UdQlzSGgAoAmmJwCAKEIDABBFaAAAoggNAEAUoQEAiCI0AABRhAYAIIrQAABEERoAgChCAwAQZfE/Rjr90Y/Dg19Lvv1U2Lc/hCSsW5te/UvhYx9OLtyYdWkA0EoWc2hIBwfDZ7clDz0aJiZCGl4dPvHciSMHe58f/8Fjq7+w7bw/2Hre3Xflu7uzLhMAWkNtaCgWi5XtUqk0p9eOuValTaVBZIXp4GD4xM3JrqdDCOO53BufvGH5Db95RUfn3p07X/z7bUPHjz/7wH0HX3rxykcfkRsAIMY7QkOxWKzuhmt+nF0x15q8cwYVfnZbOTGENE3uvmPVRz9c3n3BBRvfddll3/udLenIyBvf/94Lf377pns/Nwu/Twsqx6+5joYALBpvL4Sc3AGXSqVyv1L5t6z6JTU7q9vXfUm8uoEgsodLn3sxeejRN7d/7ercW4mh7PSrrnzPzTd3FwrLuroOffUrA88910R5rW5OEyEAi1LsmobqPqa8PdWH/ur9NS+ZaXHNz5Xs+GqYmHhze+tHJx8/61NbD2/fHsbHQwiHH/zy8rvunGltrU5iAGCmYkNDfB8zi73RVDMRkxc61Ei+/VR5Iy10hkt+YXKDzneftXrDeYMv/zSEMPKD789WwQCwiJ3U3RPTzjs0aFCZ+2jC9AMY+/a/uXHaqmTF8ronWb5+fW7//hBCOHasuTIAYEk5qdDQeFCh7tjAVC9vOkA0rbO9LXQVQgghn5/nSwNAK3p7IeTkj/4zWohwMr3+tPFipldJ1/1MWnbkaPrGQN02HceOLSsUlhUKy88+e6YFA8AS9I6RhprcMNVIQHl/g8Z1zzZZ46UJdc8/7UXLhq+8bGz7QyGEMDZW6Hm27ZorahqkBw4U+vpCZ2cIIXf55Q2KBADKaqcnpuqGp+rXG+9pPFAx7TkjLzpZ/ve39H3xy+WbI4bv2756cmjYubMtlwu5XEiSdPPmaU+4+NTcJetmCgCmtTgfI92+6YK2j99w9IF/DyH0f/0buS89fOonPlI5mj77o2Tnzje3N29ONmzIpspMSQkAzFRUaGjFDuaMO28/+sLu/iefCiEM3HzbuT/56emf/N2QyyW7doWHH07GxkII6YWbwo03Zl0pALSGxTnSEELIdXed/8j23bf91Z77d0wMDh39m8+fet8X15+75tSV3flc7vWh4a7Nv1G45eakUMi6UgBoDYs2NIRybvjC36258fdK//JvBx97Yu+eV185fLRw9ro1H7j2/D/c2nXxRVkXCACtZDGHhrKVF1/03n+6J+sqAKDl5aZvAgAgNAAAkYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgyuL/7onm3Lb1/VmXAAALi9BQ3/svWpt1CQCwsJieAACiCA0AQBShAQCIIjQAAFGSNE2zrgEAaAFGGgCAKEIDABBFaAAAoggNAEAUoQEAiCI0AABRhAYAIIrQAABE+X8YHhi5AmrZyQAAAABJRU5ErkJggg=="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAANnUlEQVR4nO3de4xc1X0H8HNn9jG79tqxCcWxA5QOIUDtEEFbQsMjRBUQSFPRBCQaUHmoTUL4qw+Q2pCgNkSiJqCqVdNIkIbWxZSo8AdEalPFhFaARdgmKTgkcac8HK9je228Xttr7+v2j4FhmJ2dPTve3bsz+/n8YWbvPffe30rLnO+cc+6dJE3TAAAwk1zWBQAArUFoAACiCA0AQBShAQCIIjQAAFGEBgAgitAwl4rF4nQb6+5qcBQALDZCwwIplUoz7pIeAFjMhIa5VCqVajr+YrHYIC4AQAvpyLqA1vOVB1+o2fJnt/zajEdV0kN1qqhsqaSNyt6a/CF5AJA5oWHWtu84ODY2Vvmxs7Nz586d69atizm2ZuCh+sdySqieqpiuJQBkwvREM45UCSEMDAxUdlWPEMzY08fnAIkBgMwJDQuqHCliFjzGtwSAhWF6YqFVr2yIGYeIaQkAC0BoaEZvb2+DvZUZihlvs4xZqRDfEgDmldAwa1d/tDiwc2dzx8b3/VICAIuN0DBrn7j41BBObe7YxjdSVu91yyUAi02SpmnWNQAALcDdEwBAFKEBAIgiNAAAUYQGACCKuyfewQ0LkDn3G8PCi+z+hIa3+Y4oyJxHp8PCi+/+TE8Ai4WkDouc0AAsChIDLH6mJ4DsSQyQofhnEAsNwKJQ/Z4lQ8BCil/TIDQA2bMGGVqCNQ0AQBQjDW/zxZIALEHx3Z9vuQQAopieAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGuro7+/PugRYogYGBgYGBrKuApaoGbs/oQEAiCI0AABRhAYAIIrQAABE8YVV9ZV2HMi6BFiK9u49HEIYmfA/IGRg177Rxg2Ehvr+9L6nsi4BABbaxy9rtNf0BAAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFHm5Vsui8ViqVSajzMDAPOtWCxWXld36LEjDdXHT7cFAGh15U/+FdXdvekJACDK8YaGcgApvqVBg7rNilWq20/3esbLAQDzZA7WNFSvYKhZzTDdrvLrBo2buxwAcJxqpiSaWdPQ+Ox1t9f06JG9e6XWSrCoOZWUAADzJ4M1DcYAAKDNzFdoqMkmAECri13TULMEIWYgYeqqhSau1fRJAIAmNFjTMIuFkNVnmdUChekaNygLAMjKdD1ykqbpApey+PX399+96fWsqwCAhfbY/Vc32OvhTgBAFKEBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKB1ZF7BINf5uUGCeDAwMhBDWrl2bdSGwFPX39zduYKQBAIgiNAAAUYQGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFE8Rrq+z33537MugeZ97QuXZ10CQBsSGurbve9I1iXQvJe2713/vhOzrgKg3ZieAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKEIDABBFaAAAoggNAECUJRca0mP/mQ7dn3UVANB6ltZ3T6Sj25KDG9Px0bTrN5KeD2ddDgC0knkZaSgWi8VicT7OPCvp2OF0bF/Vz5Phja+HsZFkfCwM3pMeK2VXGgC0nvojDTVdfqlUKhaLpVJULxvfcsZLT3eeSpsGF0qPHQ5bbggb/iAd7QzL+pKTzg+Tu5Kh50KuEPJdSTiS7vlS+u47Q/cpSa6n6WpZzGL+lgCIN+30RM2b7MK859YEjrr5IzaUbNmYbHs2HB5J9+2auPTLA88f2/vM2NjQHSec89zpl25N0t5kdHcYfHByeTFZ9Zm5/S1YDGL+lgCYldjpifKHtup/w1vTENWTEZUG1S+mNpj6umzGt/XIt/508Ofhe4+G4c7w6g+Sjj3j/bf/z30/HXhm+YEXL/zfzbdt+cs7xg4kYTQXhl4MB7+Xjr468+9PqxERAObcrBdCVrrtup/kqicyGjdo+pNf1Jjzfz+VHJwMfR3hl/KhMy2MDl1+6+U/3f7ZH3/3jzvHu8/67WfSwli6r5CsCMmxA2Fka+j65SYqAYAlZdrQMF3fvAAf4BovWYgZc07/75XkUHcYTMJpI2FVerSwurTnotdyHziwrKtjPN1y3x/9/iNXpbu7070dub7R9OirYeU8/SosCuYmAOZE7JqGupq7RWLGYYbKrqbf69NfpGG4EMZy4cn8jo8s37jpkY41K3t7OwsrJpYdSkeP5ff/rG/1xGj6Rk9uzXDoGm/iErSE8p+oxAAwJ47rOQ1Nzy8cz/REjPHce/OHusNYPnR1Dvxgzb50Z2f+8MHQ25t09aUT6fj4iuT1yV1n5FYenBxMQs/yZJ7qIFMGGADm1pw9p2FOHsww3Ulme/J0/QfHDixPDxbCcOHXB3es7t12eHDX4aGBAwd27B3cfebZD3ftSfIjB5OjI+lrXUnX+uOvnMVGYgCYc82PNJRHC6p/jGlQeSuvO9jQ3Dmn6r5s/RtfOnPF5Pbc6GhytHNj4R8fHruk/+DpnUl60UnPX33aU0n/icmyyYmhjonOE3Pv9WjI9jT1cSNZVQLQHpI0TbOuYV4c+cYzR+58YPnqQ/mO0VzHWC4/GjqPhvxEknSFjjT0ppN9yUi6ovCHt+YvubLm2P7+/rs3vZ5J2cyJv7j1wvXvOzHrKmjGwMBACGHt2rVZFwJLUX9//3nnndegQdt+90TPjReM9r+6/1tblr/rWGfXeC43nuTGc7nJJDeRJJNj+5Kj4z1d116au+iKrCsFgNbQtqEhyeVW/vV1+bWr9t/37XzHSEdhvKtzIgnpZJicHE8mJnv6PntV4U9+J8ktue/5BIDmtG1oCCEkHbm+P79y2SfPHX7gv47820uHfz6YJKHjlFW9l29YduPF+bPfk3WBANBK2jk0lOXOXLPy3mtW3ntN1oUAQGszOA8ARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKO3/GOnmPHb/1VmXAACLi5EGACCK0AAARBEaAIAoQgMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAETxGOn6Nj25LesS5tH1H//VrEsAoPUIDfU99t2fZV3CPBIaAGiC6QkAIIrQAABEERoAgChCAwAQRWgAAKIIDQBAFKEBAIgiNAAAUYQGACCK0AAARGn/x0inL/44/PO/Jk8/G3buCiEJ69aml/xm+PTVyYazsy4NAFpJO4eGdGQk3LUx2fx4mJwIadhx7Mi2kcHdu7ZNfP87J/zNPWfcdMsZf3V3vrc36zIBoDXUhoZisVh5XSqV5vXaMdeqtKk0iKwwHRkJN3w+2fpCCGEylxu+8VN9n/rEhR2drz/x5Msb7zl65PCPHvz7X2x/+eLHH5MbACDGO0JDsVis7oZrfpxbMdeaunEWFd61sZwYQpom93xx5XW/W9589tlnnXTBh7Zee006Onr4+8+/fOcX13/13jn4fVpQOX7NdzQEoG28vRByagdcKpXK/Url37LqQ2o2Vreve0i8uoEgsodLX/pJsvnxN1//1iXJW4mh7ISLLzrzttt6C4XeQmHvo/8y/OJLTZTX6uY1EQLQlmLXNFT3MeXX033or95ec8hsi2t+rmTTt8LkxJuvb75u6v6Tb7pp7ze/GSYmQgiDmzf3bbh7trW1OokBgNmKDQ3xfcwc9kbTzURMXehQI3n62fKLtNAdzj1naoOudetWn3HG0VdeCSGMPv/8XBUMAG3suO6emHHeoUGDytxHE2YewNi5q/zfZPW7Qt/yuidZcfIp+YFdIYTwxhvNlQEAS8pxhYbGgwp1xwamO7zpANFYGkIyza7u7q60pxBCCPn8fFwaANrM2wshp370n9VChOPp9WeMF7O9SrruPWmapmka9h9Ihw/VbdM1NLSsUFhWKCw/+eTZFgwAS9A7RhpqcsN0IwHl7Q0a1z3bVI2XJtQ9/4wXLTt20YfGHnokhBCGD/X0/6jjIx+uaZDu2VPYO5h2d4cQkgsuaFAkAFBWOz0xXTc8Xb/eeEvjgYoZzxl50ak6brh23z9sLt8cMfr1h06YEhrCE0/kc0nIdaRJEq68asYTtp+au2TdTAHAjNrzMdIdG87q+PQn933j4RDC0Lf/I7fp0VXXX1vZm/7wh+GJJ9784YorktPnZTnFIiclADBbUaGhFTuYE7/yhf0/2T709HMhhOHP3f4rr7z67uuvSfL5dOvW5JFHwvh4CCHdsCHcckvWlQJAa2jPkYYQQq635/2PPbT99rtee2BTODr+wl1fXf21B0897aRVK5flk9zw0WPdH/tYz22fTwqFrCsFgNbQtqEhlHPD396z5ubfKz3wT7u/s2XHaztf27u/cMraNZd99P2fubn3gxuyLhAAWkk7h4ayleeec+7f1XkoJAAwK7mZmwAACA0AQCShAQCIIjQAAFGEBgAgitAAAEQRGgCAKEIDABBFaAAAoggNAEAUoQEAiNL+3z3RnDtuOj/rEgBgcREa6jv/A2uzLgEAFhfTEwBAFKEBAIgiNAAAUYQGACBKkqZp1jUAAC3ASAMAEEVoAACiCA0AQBShAQCIIjQAAFGEBgAgitAAAEQRGgCAKP8PfGohLlT1SlQAAAAASUVORK5CYII="
height="200"
width="700"
margin="0 auto"/>
@@ -1880,7 +1880,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIGElEQVR4nO3dT28jZx3A8WccO7ub/oMWUZoVWqoRapEAgYrEjVIuXFClPfUF8AYqJCTEjUMpCKm9cUFIHDhxqHgHHOGAJSQkugrrqtolZtsm3dClm02ywRwCs1PbsX9xnH088edziOz54zwXe76eeWwXg8EgAQBM08o9AACgGUQDABAiGgCAENEAAISIBgAgRDQAACGi4WTKsjxu4dhVE/YCgGYRDXPT6/WmrlIPADSXaDiZXq83dOAvy3JCLgDAudHOPYBF9NNf/3loyY+//42pe1X1UK+KaklVG9Xaof5QHgAsONEwxt9vfnRwcFDd7XQ6m5ubly9fjuw7dOKhfveoEuqXKo7bEgAWkMsT492tSSn1+/1qVf0MwdQjfbwDFAMAC040zNlRUkQmPMa3BIBF4PLE/NVnNkTOQ0S2BIDsRMN4a2trE9ZWVyimfswyMlMhviUAZCQaxrj6nbK/uTnbvvFjv0oAoFlEwxgvf+tKSldm23fyBynra33kEoBmKQaDQe4xAAAN4NMTAECIaAAAQkQDABAiGgCAkKX79IQPLMCi8fFjyC54cFyuaPAbUbBofJM6ZBc/OLo8AWQj3KFZRAOQh2KAxlmuyxPAglAMsDji31AsGoA86i9SGgIyis9pEA1ABqYkQxOZ0wAAhCzXmQY/LAkAQ+IHR79yCQCEuDwBAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCljQaut1u7iEAKaXU7/f7/X7uUQApBQ6OSxoNAMBJiQYAIEQ0AAAhogEACBENAECIaAAAQkQDABDSzj2AbLp/u5V7CEDa3r6dUvrnjjcwkN/1zd0XXpi0wfJGw2u/+mPuIQDAYnnl5Ulr1T0AECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAImTEayrKc7zgAgAX3IBpGO0AZAMASKmvqy9u5BgQALKCyLHu93ti70y9PHFXG2OIY2mDsZqO1MrQ2+DgAQF6hMw31ypgQIKO3J2w8278DAHIJRcNxh+2hI3rw6F7FxOjfEz0OADB3Rwfl+t3q9uxzGpwDAIDz51RzGo4zVCIAwPn2IBqGIiByImHmbqhfjxid+gAALKBPXJ6oR8BJJyhMWFu/O+s4AYCHYcKxuxgMBjmGlFm3233ttzdyjwIAFstbb16dsNZvTwAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACCknXsA2bz15tXcQwBSv99PKa2vr+ceCJC63e7kDZxpAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAEBIO/cAsvnhG3/IPQSY7hc/eCn3EAD+Z3mjoXdzJ/cQAKBJXJ4AAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhLRzD2DODgeDrd3ixs7Bxvb9d7buXXvv7rUP9je29u785PncQwOAZmtwNBwcDrb2in8c9cH23lefbv/p5t5vujtbHx/ePzzMPToAOG/ONhrKsuz1emfxyF//Zb+/s/vh3Qd98KMXn7q+vX/ro/2z+HeQV1mW1e0zek4BTDU8p6H+2nTc3aGFWfzl5r/ev7PvjALL4Ci+K4vwBASW0ywTIb3RgYfJMw5YEMPRUH8fc/T+Zuhu+uT5hvL/qkcoayYsHFo7env0QQCAjE41p6E+ZaEqjPq7oioshhZOfed0dpMhoKGqgPbUAHI5VTSc5sWrKozRv5Hdv/fco6srRXslpZT+M0gppS9/7sJnHllpFeliu3WxU6SUUmtl5uHBohkK9LyDAZbTsdFQvTCd6Fg+L9VlkeP+79pqcXSjVRRrq8XqSrHWaX3q4sr6452UUruVUlG0LjzS8uVVADAnY6Jh7PTsLN0w4f/+7q93hpY8eWnl2vt7v3/737Vl29Wt17/9pbMYJDwETi0AC+LYMw31F6nZPuU1dZf6OYy5nM9oFcVpdofFNPQEFBBALnP+cqf6q1v9EsNJX/Jmm/PlYgTnlVAAFsH4aBh9hRo68TC6TXV3dMuxDzhh4wnbAwC5NPW9+fNPP/r4pU5zxw8AjdPUH6x6+9XP794f3Po4vXt7f2P78J2t3a+tr+4PWp99bK/+gxQAwLw0NRpSSpfaxbNPpGefuPDSF1JKaymlV77y2M+++9TWveLG7YOND++/u3Xv2nt3Nz7Yu759kHeoAHAONDgaxuq0imfW0jNrnW9e7qR0KaVP5x4RAJwT5gQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQtq5B5DNz199MfcQAKBJljcavnjlydxDAIAmcXkCAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIKQYDAa5xwAANIAzDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACPkvKCHEn1E7guoAAAAASUVORK5CYII="
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAArwAAADICAIAAACF9KXqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIF0lEQVR4nO3dz48bZx3A4Xfs3SzZhFYEEdFEIlQjoPRQCRWJG6VcuKBKOSHO/AOAhIS4cSgUIdETpwqJAycOFf8BRySEJSQkCMu6qtKsCcnuJm1ostkfmMPCZGp77e96vXk96+c5rOz54X0v9nw889ou+v1+AgCYpJV7AABAM4gGACBENAAAIaIBAAgRDQBAiGgAAEJEw/GUZXnUwpGrxuwFAM0iGmam2+1OXKUeAGgu0XA83W534MBfluWYXACAM2Mp9wDm0U9+9aeBJT/6zpcn7lXVQ70qqiVVbVRrB/pDeQAw50TDCP9474O9vb3q7vLy8sbGxtWrVyP7Dpx4qN89rIT6pYqjtgSAOeTyxGgPa1JKvV6vWlU/QzDxSB/vAMUAwJwTDTN2mBSRCY/xLQFgHrg8MXv1mQ2R8xCRLQEgO9Ew2urq6pi11RWKiR+zjMxUiG8JABmJhhGuf73sbWxMt2/82K8SAGgW0TDCa1+9ltK16fYd/0HK+lofuQSgWYp+v597DABAA/j0BAAQIhoAgBDRAACEiAYAIGThPj3hAwswb3z8GLILHhwXKxr8RhTMG9+kDtnFD44uTwDZCHdoFtEA5KEYoHEW6/IEMCcUA8yP+DcUiwYgj/qLlIaAjOJzGkQDkIEpydBE5jQAACGLdabBD0sCwID4wdGvXAIAIS5PAAAhogEACBENAECIaAAAQkQDABAiGgCAkAWNhk6nk3sIQEop9Xq9Xq+XexRASoGD44JGAwBwXKIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACELOUeQDadv97OPQQgbW3dSyn98743MJDf+sajl18et8HiRsPrb/0h9xAAYL5867Vxa9U9ABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACJkyGsqynO04AIA59yQahjtAGQDAAipr6suXcg0IAJhDZVl2u92RdydfnjisjJHFMbDByM2Ga2VgbfBxAIC8Qmca6pUxJkCGb4/ZeLp/BwDkEoqGow7bA0f04NG9ionhv8d6HABg5g4PyvW71e3p5zQ4BwAAZ8+J5jQcZaBEAICz7Uk0DERA5ETC1N1Qvx4xPPUBAJhDH7k8UY+A405QGLO2fnfacQIAT8OYY3fR7/dzDCmzTqfz+m9u5h4FAMyXt9+8Pmat354AAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAyFLuAWTz9pvXcw8BSL1eL6V05cqV3AMBUqfTGb+BMw0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACFnKPYBsfvCL3+ceAkz28++/mnsIAP+zuNHQfe9+7iEAQJO4PAEAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAECIaAAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIWco9gBk76Pe3d4qb9/fWtvfX7+zc+NfDtbu7NzYfP/jxC7mHBgDN1uBo2PtPf3OnuHV/b217/92t3Rc/1f7jrd1fd+5tfniwf3CQe3QAcNacbjSUZdntdk/jkb/0y17v/UfbD5/0wQ9f+eT61u7tD3ZP499BXmVZVrdP6TkFMNHgnIb6a9NRdwcWZvHnW+/febDrjAKL4DC+K/PwBAQW0zQTIb3RgafJMw6YE4PRUH8fc/j+ZuBu+uj5hvL/qkcoa8YsHFg7fHv4QQCAjE40p6E+ZaEqjPq7oiosBhZOfOd0epMhoKGqgPbUAHI5UTSc5MWrKozhv5Hdv/mFi+faxVL7yZIXL69cvthuFWn1XOtcu0gppVb7qN2hcQYCPe9ggMV0ZDRUL0zHOpbPSnVZ5Kj/u3quOLzRKopz7eJjy8XFldbuQfvKM8sppVaRWq2itXKh5curAGBGRkTDyOnZWbphzP/97V8eDCy5dL59487j3/3t37VlW9Wtn37ti6cxSHgKnFoA5sSRZxrqL1LTfcpr4i71cxgzOZ/RKoqT7A7zaeAJKCCAXGb85U71V7f6JYbjvuRNN+fLxQjOKqEAzIPR0TD8CjVw4mF4m+ru8JYjH3DMxmO2BwByaep7889fvvDM+eXmjh8AGqepP1j19+995tF+//aH6d17u+vbB+9s7rz06ZXdfvvyxx/Xf5ACAJiVpkZDSun8UvH8s+n5Z1de/WxKaTWl9O2XLrzxjUubO8XNe3tr2/vv3N1Zu/Nw7e7j9S2/YgUAJ9XgaBhpuVU8t5qeW13+ytXllM6n9IncIwKAM8KcAAAgRDQAACGiAQAIEQ0AQIhoAABCRAMAECIaAIAQ0QAAhIgGACBENAAAIaIBAAgRDQBAiGgAAEJEAwAQIhoAgBDRAACEiAYAIEQ0AAAhogEACBENAEDIUu4BZPOz776SewgA0CSLGw2fu3Yp9xAAoElcngAAQkQDABAiGgCAENEAAISIBgAgRDQAACGiAQAIKfr9fu4xAAAN4EwDABAiGgCAENEAAISIBgAgRDQAACGiAQAIEQ0AQIhoAABC/gt+qMSDllQJQgAAAABJRU5ErkJggg=="
height="200"
width="700"
margin="0 auto"/>
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 53e59012e6..5fb1170b3b 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_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
index 9e59990e88..1d8b208913 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
@@ -119,7 +119,7 @@
<id>Transitions_Transitions</id>
<name>Transitions</name>
<order>46</order>
- <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -369,7 +369,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -457,7 +457,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -576,7 +576,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1280,7 +1280,7 @@
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1315,7 +1315,7 @@
<id>UserId_UserReportTitle</id>
<name>User IDs</name>
<order>40</order>
- <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -1571,7 +1571,7 @@
<id>Referrers_SubmenuSearchEngines</id>
<name>Search Engines &amp; Keywords</name>
<order>10</order>
- <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
+ <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -4383,7 +4383,7 @@
<id>Goals_ManageGoals</id>
<name>Manage Goals</name>
<order>9999</order>
- <help>&lt;p&gt;This section allows you to create and edit Goals for specific actions which visitors take on your site, such as visiting a certain page or submitting a specific form. Goal reports vary but can help you track your website performance against business objectives such as lead generation, online sales and increased brand exposure.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/tracking-goals-web-analytics/&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>
+ <help>&lt;p&gt;This section allows you to create and edit Goals for specific actions which visitors take on your site, such as visiting a certain page or submitting a specific form. Goal reports vary but can help you track your website performance against business objectives such as lead generation, online sales and increased brand exposure.&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>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 76c4f64f4b..2033a7f476 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -124,7 +124,7 @@
<category>Visitors</category>
<name>Device brand</name>
<segment>deviceBrand</segment>
- <acceptedValues>2E, 3GNET, 3GO, 3Q, 4Good, 4ife, 7 Mobile, 360, 8848, A1, Accent, Ace, Acer, Acteck, Adronix, Advan, Advance, AfriOne, AGM, AG Mobile, Ainol, Airness, AIRON, Airties, AIS, Aiuto, Aiwa, Akai, AKIRA, Alba, Alcatel, Alcor, ALDI NORD, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Alps, Altech UEC, Altice, altron, Amazon, AMCV, AMGOO, Amigoo, Amoi, Andowl, Anker, Anry, ANS, AOC, Aocos, AOpen, Aoson, AOYODKG, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, ArtLine, Asano, Asanzo, Ask, Aspera, Assistant, Astro, Asus, AT&amp;T, Atom, Atvio, Audiovox, AURIS, Avenzo, AVH, Avvio, Awow, Axioo, Axxion, Azumi Mobile, BangOlufsen, Barnes &amp; Noble, BBK, BB Mobile, BDF, BDQ, Becker, Beeline, Beelink, Beetel, Bellphone, BenQ, BenQ-Siemens, Benzo, Beyond, Bezkam, BGH, Bigben, BIHEE, BilimLand, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Bleck, Blloc, Blow, Blu, Bluboo, Bluebird, Bluedot, Bluegood, Bluewave, BMAX, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, BrightSign, Brondi, BS Mobile, Bubblegum, Bundy, Bush, CAGI, Camfone, Canal Digital, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Cavion, Celcus, Celkon, Cell-C, CellAllure, Cellution, Centric, CG Mobile, CGV, Changhong, Cherry Mobile, Chico Mobile, China Mobile, Chuwi, Claresta, Clarmin, Clementoni, Cloud, Cloudfone, Cloudpad, Clout, CnM, Cobalt, Coby Kyros, Colors, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Connectce, Connex, Conquest, Contixo, Coolpad, CORN, Cosmote, Covia, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datalogic, Datamini, Datang, Datawind, Datsun, Dazen, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, DF, Dialog, Dicam, Digi, Digicel, DIGIFORS, Digihome, Digiland, Digma, DING DING, DISH, Ditecma, Diva, Divisat, DIXON, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doro, Dragon Touch, Dreamgate, Droxio, Dune HD, E-Boda, E-Ceros, E-tel, Eagle, Easypix, EBEST, Echo Mobiles, ECON, ECS, EE, Einstein, EKO, Eks Mobility, EKT, ELARI, Electroneum, ELECTRONIA, Elekta, Element, Elenberg, Elephone, Eltex, Ematic, Energizer, Energy Sistem, Engel, Enot, Epik One, Epson, Ergo, Ericsson, Ericy, Erisson, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurostar, Evercoss, Evertek, Evolio, Evolveo, Evoo, EvroMedia, EWIS, EXCEED, Exmart, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, F&amp;U, F2 Mobile, F150, Facebook, Fairphone, Famoco, Fantec, FaRao Pro, FarEasTone, Fengxiang, FEONAL, Fero, FiGO, FiiO, FinePower, Finlux, FireFly Mobile, FISE, Fly, FLYCAT, FMT, FNB, FNF, Fondi, Fonos, FORME, Formuler, Forstar, Fortis, Fourel, Four Mobile, Foxconn, Freetel, Fuego, Fujitsu, G-TiDE, G-Touch, Galaxy Innovations, Garmin-Asus, Gateway, Gemini, General Mobile, Genesis, GEOFOX, Geotel, Geotex, GFive, Ghia, Ghong, Ghost, Gigabyte, Gigaset, Gini, Ginzzu, Gionee, Globex, Glofiish, GLX, GOCLEVER, Gocomma, GoGEN, Gol Mobile, Goly, Gome, GoMobile, Google, Goophone, Gooweel, Gradiente, Grape, Gree, Greentel, Gresso, Gretel, Grundig, Gtel, H96, Hafury, Haier, HannSpree, Hardkernel, Hasee, Helio, HERO, Hezire, Hi, Hi-Level, High Q, Highscreen, HiMax, Hipstreet, Hisense, Hitachi, Hitech, Hoffmann, Hometech, Homtom, Honeywell, Hoozo, Horizon, Hosin, Hotel, Hotwav, How, HP, HTC, Huadoo, Huavi, Huawei, Humax, Hurricane, Huskee, Hyrican, Hyundai, Hyve, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iDroid, iGet, iHunt, Ikea, IKI Mobile, iKoMo, IKU Mobile, iLA, iLife, iMan, iMars, IMO Mobile, Impression, INCAR, Inch, Inco, iNew, Infinix, InFocus, InfoKit, Inkti, InnJoo, Innos, Innostream, Inoi, INQ, Insignia, INSYS, Intek, Intex, Invens, Inverto, Invin, iOcean, iOutdoor, iPro, iQ&amp;T, IQM, Irbis, Iris, iRola, iRulu, iSWAG, IT, iTel, iTruck, IUNI, iVA, iView, iVooMi, ivvi, iZotron, JAY-Tech, Jeka, Jesy, JFone, Jiake, Jiayu, Jinga, Jivi, JKL, Jolla, Juniper Systems, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, Kata, KATV1, Kazam, Kazuna, KDDI, Kempler &amp; Strauss, Keneksi, Kenxinda, Kiano, Kingsun, KINGZONE, Kiowa, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, KREZ, KRIP, KRONO, Krüger&amp;Matz, KT-Tech, KUBO, Kuliao, Kult, Kumai, Kurio, Kvant, Kyocera, Kyowon, Kzen, L-Max, LAIQ, Land Rover, Landvo, Lanix, Lark, Laurus, Lava, LCT, Leader Phone, Leagoo, Leben, Ledstar, LeEco, Leff, LEMFO, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Liberton, Lifemaxx, Lingwin, Linnex, Linsar, Loewe, Logic, Logicom, Loview, LT Mobile, Lumigon, Lumus, Luna, Luxor, LYF, M-Horse, M-Tech, M.T.T., M4tel, MAC AUDIO, Macoox, Mafe, Magnus, Majestic, Malata, Manhattan, Mann, Manta Multimedia, Mantra, Mara, Masstel, Matrix, Maxcom, Maximus, Maxtron, MAXVI, Maxwest, Maze, Maze Speed, MBOX, MDC Store, MDTV, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Minix, Mintt, Mio, Miray, Mito, Mitsubishi, Mitsui, MIVO, MIXC, MiXzo, MLLED, MLS, Mobicel, MobiIoT, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, mPhone, Mpman, MSI, MStar, MTC, MTN, Multilaser, MYFON, MyGica, Mymaga, MyPhone, Myria, Myros, Mystery, MyTab, MyWigo, Nabi, Naomi Phone, National, Navcity, Navitech, Navitel, Navon, NavRoad, NEC, Necnot, Neffos, Neomi, Neon IQ, Netgear, NeuImage, New Balance, Newgen, Newland, Newman, Newsday, NewsMy, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, NOBUX, NOGA, Nokia, Nomi, Nomu, Nordmende, NorthTech, Nos, Nous, Novex, NuAns, Nubia, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, OASYS, Obi, Oculus, Odys, OINOM, Ok, Okapia, OKSI, OKWU, Onda, OnePlus, Onix, ONN, ONYX BOOX, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Ordissimo, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Packard Bell, Paladin, Palm, Panacom, Panasonic, Pantech, Parrot Mobile, PCBOX, PCD, PCD Argentina, PEAQ, Pendoo, Pentagram, Perfeo, Phicomm, Philco, Philips, Phonemax, phoneOne, Pico, Pioneer, PiPO, Pixela, Pixelphone, Pixus, Planet Computers, Ployer, Plum, Pluzz, PocketBook, POCO, Point of View, Polar, PolarLine, Polaroid, Polestar, PolyPad, Polytron, Pomp, Poppox, POPTEL, Porsche, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, PROFiLO, Proline, Prology, ProScan, Protruly, ProVision, PULID, Q-Box, Q-Touch, Q.Bell, Qilive, QMobile, Qnet Mobile, QTECH, Qtek, Quantum, Qubo, Quechua, Qumo, R-TV, Rakuten, Ramos, Raspberry, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Reeder, REGAL, Remdun, Revo, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Rivo, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, RoyQueen, RT Project, RugGear, Ruio, Runbo, Ryte, S-TELL, Saba, Safaricom, Sagem, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, SCBC, Schneider, Seatel, Seeken, SEG, Sega, Selecline, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, Seuic, SFR, Sharp, Shift Phones, Shivaki, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Simply, Singtech, Siragon, Sirin labs, SKG, Sky, Skyworth, Smadl, Smailo, Smart, Smartab, SmartBook, SMARTEC, Smart Electronic, Smartfren, Smartisan, Smarty, Smooth Mobile, Smotreshka, Softbank, Soho Style, SOLE, SOLO, Solone, Sonim, SONOS, Sony, Sony Ericsson, Soundmax, Soyes, Spark, SPC, Spectralink, Spectrum, Spice, Sprint, SQOOL, Star, Starlight, Starmobile, Starway, Starwind, STF Mobile, STG Telecom, STK, Stonex, Storex, StrawBerry, STRONG, Stylo, Subor, Sugar, Sumvision, Sunmi, Sunny, Sunstech, SunVan, Sunvell, SUNWIND, SuperSonic, SuperTab, Supra, Suzuki, Swipe, SWISSMOBILITY, Swisstone, SWTV, Symphony, Syrox, T-Mobile, Taiga System, Takara, Tambo, Tanix, TB Touch, TCL, TD Systems, Technicolor, Technika, TechniSat, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, TEENO, Teknosa, Tele2, Telefunken, Telego, Telenor, Telia, Telit, Telpo, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Time2, Timovi, Tinai, Tinmo, TiPhone, TOKYO, Tolino, Tone, Tooky, Topelotek, Top House, Toplux, Topway, Torex, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trident, Trifone, Trio, Tronsmart, True, True Slim, TTEC, TuCEL, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TurboPad, Turkcell, TVC, TWM, Twoe, TWZ, Tymes, Türk Telekom, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, Unonu, Unowhy, Urovo, UTime, UTOK, UTStarcom, UZ Mobile, v-mobile, VAIO, Vankyo, Vargo, Vastking, VAVA, VC, Vega, Venso, Venturer, Verico, Verizon, Vernee, Vertex, Vertu, Verykool, Vesta, Vestel, Vexia, VGO TEL, Videocon, Videoweb, ViewSonic, Vinga, Vinsoc, Vipro, Virzo, Vision Touch, Vitelcom, Viumee, Vivax, Vivo, VIWA, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorke, Voto, VOX, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, WE, Web TV, Weimei, WellcoM, WELLINGTON, Western Digital, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Winnovo, Wintouch, Wiseasy, WIWA, Wizz, Wolder, Wolfgang, Wolki, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, XGIMI, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Xtratech, Yandex, Yarvik, YASIN, Yes, Yezz, Yoka TV, Yota, Ytone, Yu, Yuandao, YUHO, Yuno, Yusun, Yxtel, Zaith, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, ZH&amp;K, Zidoo, ZIFRO, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, öwn</acceptedValues>
+ <acceptedValues>2E, 3GNET, 3GO, 3Q, 4Good, 4ife, 7 Mobile, 360, 8848, A1, Accent, Ace, Acer, Acteck, Adronix, Advan, Advance, AfriOne, AGM, AG Mobile, AIDATA, Ainol, Airness, AIRON, Airties, AIS, Aiuto, Aiwa, Akai, AKIRA, Alba, Alcatel, Alcor, ALDI NORD, ALDI SÜD, Alfawise, Aligator, AllCall, AllDocube, Allview, Allwinner, Alps, Altech UEC, Altice, altron, Amazon, AMCV, AMGOO, Amigoo, Amino, Amoi, Andowl, Angelcare, Anker, Anry, ANS, AOC, Aocos, AOpen, Aoson, AOYODKG, Apple, Archos, Arian Space, Ark, ArmPhone, Arnova, ARRIS, Artel, Artizlee, ArtLine, Asano, Asanzo, Ask, Aspera, Assistant, Astro, Asus, AT&amp;T, Atmaca Elektronik, Atom, Atvio, Audiovox, AURIS, Autan, Avenzo, AVH, Avvio, Awow, Axioo, Axxion, Azumi Mobile, b2m, BangOlufsen, Barnes &amp; Noble, BBK, BB Mobile, BDF, BDQ, Becker, Beeline, Beelink, Beetel, Beista, Bellphone, Benco, BenQ, BenQ-Siemens, Benzo, Beyond, Bezkam, BGH, Bigben, BIHEE, BilimLand, Billion, BioRugged, Bird, Bitel, Bitmore, Bkav, Black Bear, Black Fox, Blackview, Blaupunkt, Bleck, Blloc, Blow, Blu, Bluboo, Bluebird, Bluedot, Bluegood, Bluewave, BMAX, Bmobile, Bobarry, bogo, Boway, bq, Brandt, Bravis, BrightSign, Brondi, BS Mobile, Bubblegum, Bundy, Bush, CAGI, Camfone, Canal Digital, Capitel, Captiva, Carrefour, Casio, Casper, Cat, Cavion, Celcus, Celkon, Cell-C, CellAllure, Cellution, Centric, CG Mobile, CGV, Changhong, Cherry Mobile, Chico Mobile, China Mobile, China Telecom, Chuwi, Claresta, Clarmin, ClearPHONE, Clementoni, Cloud, Cloudfone, Cloudpad, Clout, CnM, Cobalt, Coby Kyros, Colors, Comio, Compal, Compaq, ComTrade Tesla, Concord, ConCorde, Condor, Connectce, Connex, Conquest, Contixo, Coolpad, CORN, Cosmote, Covia, Cowon, CreNova, Crescent, Cricket, Crius Mea, Crony, Crosscall, Crown, Cube, CUBOT, CVTE, Cyrus, Daewoo, Danew, Datalogic, Datamini, Datang, Datawind, Datsun, Dazen, Dbtel, Dell, Denver, Desay, DeWalt, DEXP, DF, Dialog, Dicam, Digi, Digicel, DIGIFORS, Digihome, Digiland, Digma, DING DING, DISH, Ditecma, Diva, Divisat, DIXON, DMM, DNS, DoCoMo, Doffler, Dolamee, Doogee, Doopro, Doov, Dopod, Doppio, DORLAND, Doro, Dragon Touch, Dreamgate, Droxio, Dune HD, DUNNS Mobile, E-Boda, E-Ceros, E-tel, Eagle, Easypix, EBEST, Echo Mobiles, ecom, ECON, ECS, EE, Einstein, EKO, Eks Mobility, EKT, ELARI, Electroneum, ELECTRONIA, Elekta, Element, Elenberg, Elephone, Eltex, Ematic, Energizer, Energy Sistem, Engel, Enot, Epik One, Epson, Ergo, Ericsson, Ericy, Erisson, Essential, Essentielb, eSTAR, Eton, eTouch, Etuline, Eurocase, Eurostar, Evercoss, Evertek, Evolio, Evolveo, Evoo, EVPAD, EvroMedia, EWIS, EXCEED, Exmart, ExMobile, EXO, Explay, Extrem, Ezio, Ezze, F&amp;U, F2 Mobile, F150, Facebook, Fairphone, Famoco, Fantec, FaRao Pro, FarEasTone, Fengxiang, FEONAL, Fero, FiGi, FiGO, FiiO, FinePower, Finlux, FireFly Mobile, FISE, Fly, FLYCAT, FMT, FNB, FNF, Fondi, Fonos, FORME, Formuler, Forstar, Fortis, Fourel, Four Mobile, Foxconn, Freetel, Fuego, Fujitsu, Funai, Fusion5, G-TiDE, G-Touch, Galaxy Innovations, Garmin-Asus, Gateway, Gemini, General Mobile, Genesis, GEOFOX, Geotel, Geotex, GFive, Ghia, Ghong, Ghost, Gigabyte, Gigaset, Gini, Ginzzu, Gionee, Globex, Glofiish, GLONYX, GLX, GOCLEVER, Gocomma, GoGEN, Gol Mobile, Goly, Gome, GoMobile, Google, Goophone, Gooweel, Gplus, Gradiente, Grape, Gree, Greentel, Gresso, Gretel, Grundig, Gtel, H96, Hafury, Haier, Hamlet, HannSpree, Hardkernel, Hasee, Helio, HERO, Hezire, Hi, Hi-Level, High Q, Highscreen, HiMax, Hi Nova, Hipstreet, Hisense, Hitachi, Hitech, HKPro, Hoffmann, Hometech, Homtom, Honeywell, Hoozo, Horizon, Horizont, Hosin, Hotel, Hot Pepper, Hotwav, How, HP, HTC, Huadoo, Huavi, Huawei, Humax, Hurricane, Huskee, Hyrican, Hyundai, Hyve, i-Cherry, i-Joy, i-mate, i-mobile, iBall, iBerry, iBrit, IconBIT, iData, iDroid, iGet, iHunt, Ikea, IKI Mobile, iKoMo, iKon, IKU Mobile, iLA, iLife, iMan, iMars, IMO Mobile, Impression, INCAR, Inch, Inco, iNew, Infinix, InFocus, InfoKit, Inkti, InnJoo, Innos, Innostream, Inoi, INQ, Insignia, INSYS, Intek, Intex, Invens, Inverto, Invin, iOcean, iOutdoor, iPEGTOP, iPro, iQ&amp;T, IQM, IRA, Irbis, Iris, iRola, iRulu, iSafe Mobile, iSWAG, IT, iTel, iTruck, IUNI, iVA, iView, iVooMi, ivvi, iZotron, JAY-Tech, Jedi, Jeka, Jesy, JFone, Jiake, Jiayu, Jinga, Jio, Jivi, JKL, Jolla, Jumper, Juniper Systems, Just5, JVC, K-Touch, Kaan, Kaiomy, Kalley, Kanji, Karbonn, Kata, KATV1, Kazam, Kazuna, KDDI, Kempler &amp; Strauss, Keneksi, Kenxinda, Kiano, Kingbox, Kingsun, KINGZONE, Kiowa, Kivi, Klipad, Kocaso, Kodak, Kogan, Komu, Konka, Konrow, Koobee, Koolnee, Kooper, KOPO, Koridy, Koslam, KREZ, KRIP, KRONO, Krüger&amp;Matz, KT-Tech, KUBO, Kuliao, Kult, Kumai, Kurio, Kvant, Kyocera, Kyowon, Kzen, L-Max, LAIQ, Land Rover, Landvo, Lanix, Lark, Laurus, Lava, LCT, Leader Phone, Leagoo, Leben, Ledstar, LeEco, Leff, LEMFO, Lemhoov, Lenco, Lenovo, Leotec, Le Pan, Lephone, Lesia, Lexand, Lexibook, LG, Liberton, Lifemaxx, Lingwin, Linnex, Linsar, Loewe, Logic, Logicom, Loview, LT Mobile, Lumigon, Lumus, Luna, Luxor, LYF, M-Horse, M-Tech, M.T.T., M4tel, MAC AUDIO, Macoox, Mafe, Magicsee, Magnus, Majestic, Malata, Manhattan, Mann, Manta Multimedia, Mantra, Mara, Massgo, Masstel, Mastertech, Matrix, Maxcom, Maximus, Maxtron, MAXVI, Maxwest, Maze, Maze Speed, MBOX, MDC Store, MDTV, meanIT, Mecer, Mecool, Mediacom, MediaTek, Medion, MEEG, MegaFon, Meitu, Meizu, Melrose, Memup, Metz, MEU, MicroMax, Microsoft, Microtech, Minix, Mintt, Mio, Mione, Miray, Mito, Mitsubishi, Mitsui, MIVO, MIXC, MiXzo, MLLED, MLS, MMI, Mobicel, MobiIoT, Mobiistar, Mobiola, Mobistel, MobiWire, Mobo, Modecom, Mofut, Motorola, Movic, mPhone, Mpman, MSI, MStar, MTC, MTN, Multilaser, MYFON, MyGica, Mymaga, MyPhone, Myria, Myros, Mystery, MyTab, MyWigo, Nabi, Naomi Phone, National, Navcity, Navitech, Navitel, Navon, NavRoad, NEC, Necnot, Neffos, Neo, Neomi, Neon IQ, Netgear, NeuImage, New Balance, Newgen, Newland, Newman, Newsday, NewsMy, Nexa, NEXBOX, Nexian, NEXON, Nextbit, NextBook, NextTab, NGM, NG Optics, Nikon, Nintendo, NOA, Noain, Nobby, Noblex, NOBUX, NOGA, Nokia, Nomi, Nomu, Noontec, Nordmende, NorthTech, Nos, Nous, Novex, NuAns, Nubia, NUU Mobile, Nuvo, Nvidia, NYX Mobile, O+, O2, Oale, OASYS, Obabox, Obi, Oculus, Odys, OINOM, Ok, Okapia, OKSI, OKWU, OMIX, Onda, OnePlus, Onix, Onkyo, ONN, ONYX BOOX, Ookee, OpelMobile, Openbox, OPPO, Opsson, Orange, Orbic, Orbita, Ordissimo, Orion, Ouki, Oukitel, OUYA, Overmax, Ovvi, Owwo, Oysters, Oyyu, OzoneHD, P-UP, Packard Bell, Paladin, Palm, Panacom, Panasonic, Pantech, Parrot Mobile, PCBOX, PCD, PCD Argentina, PEAQ, Pendoo, Pentagram, Perfeo, Phicomm, Philco, Philips, Phonemax, phoneOne, Pico, Pioneer, PiPO, Pixela, Pixelphone, Pixus, Planet Computers, Ployer, Plum, Pluzz, PocketBook, POCO, Point Mobile, Point of View, Polar, PolarLine, Polaroid, Polestar, PolyPad, Polytron, Pomp, Poppox, POPTEL, Porsche, Positivo, Positivo BGH, PPTV, Premio, Prestigio, Primepad, Primux, Prixton, PROFiLO, Proline, Prology, ProScan, Protruly, ProVision, PULID, Purism, Q-Box, Q-Touch, Q.Bell, Qilive, QMobile, Qnet Mobile, QTECH, Qtek, Quantum, Qubo, Quechua, Qumo, R-TV, Rakuten, Ramos, Raspberry, Ravoz, Razer, RCA Tablets, Reach, Readboy, Realme, RED, Redfox, Reeder, REGAL, Remdun, Retroid Pocket, Revo, Rikomagic, RIM, Rinno, Ritmix, Ritzviva, Riviera, Rivo, Roadrover, Rokit, Roku, Rombica, Ross&amp;Moor, Rover, RoverPad, Royole, RoyQueen, RT Project, RugGear, Ruio, Runbo, Ryte, S-TELL, S2Tel, Saba, Safaricom, Sagem, Saiet, Salora, Samsung, Sanei, Sansui, Santin, Sanyo, Savio, SCBC, Schneider, Schok, Seatel, Seeken, SEG, Sega, Selecline, Selenga, Selevision, Selfix, SEMP TCL, Sencor, Sendo, Senkatel, Senseit, Senwa, Seuic, SFR, Shanling, Sharp, Shift Phones, Shivaki, Shtrikh-M, Shuttle, Sico, Siemens, Sigma, Silelis, Silent Circle, Simbans, Simply, Singtech, Siragon, Sirin labs, SK Broadband, SKG, Sky, Skyworth, Smadl, Smailo, Smart, Smartab, SmartBook, SMARTEC, Smart Electronic, Smartfren, Smartisan, Smarty, Smooth Mobile, Smotreshka, Softbank, Soho Style, SOLE, SOLO, Solone, Sonim, SONOS, Sony, Sony Ericsson, Soundmax, Soyes, Spark, SPC, Spectralink, Spectrum, Spice, Sprint, SQOOL, Star, Starlight, Starmobile, Starway, Starwind, STF Mobile, STG Telecom, STK, Stonex, Storex, StrawBerry, STRONG, Stylo, Subor, Sugar, Sumvision, Sunmi, Sunny, Sunstech, SunVan, Sunvell, SUNWIND, SuperSonic, SuperTab, Supra, Suzuki, Swipe, SWISSMOBILITY, Swisstone, SWTV, Symphony, Syrox, T-Mobile, TAG Tech, Taiga System, Takara, Tambo, Tanix, TB Touch, TCL, TD Systems, Technicolor, Technika, TechniSat, Technopc, TechnoTrend, TechPad, Techwood, Teclast, Tecno Mobile, TEENO, Teknosa, Tele2, Telefunken, Telego, Telenor, Telia, Telit, Telpo, Tesco, Tesla, Tetratab, teXet, ThL, Thomson, Thuraya, TIANYU, Tigers, Time2, Timovi, Tinai, Tinmo, TiPhone, TiVo, TOKYO, Tolino, Tone, Tooky, Topelotek, Top House, Toplux, Topway, Torex, TOSCIDO, Toshiba, Touchmate, Transpeed, TrekStor, Trevi, Trident, Trifone, Trio, Tronsmart, True, True Slim, TTEC, TuCEL, Tunisie Telecom, Turbo, Turbo-X, TurboKids, TurboPad, Turkcell, TVC, TWM, Twoe, TWZ, Tymes, Türk Telekom, U-Magic, U.S. Cellular, Ugoos, Uhans, Uhappy, Ulefone, Umax, UMIDIGI, Unihertz, Unimax, Uniscope, UNIWA, Unknown, Unnecto, UNNO, Unonu, Unowhy, Urovo, UTime, UTOK, UTStarcom, UZ Mobile, v-mobile, VAIO, Vankyo, Vargo, Vastking, VAVA, VC, VDVD, Vega, Venso, Venturer, VEON, Verico, Verizon, Vernee, Verssed, Vertex, Vertu, Verykool, Vesta, Vestel, Vexia, VGO TEL, Videocon, Videoweb, ViewSonic, Vinabox, Vinga, Vinsoc, Vios, Vipro, Virzo, Vision Touch, Vitelcom, Viumee, Vivax, Vivo, VIWA, Vizio, VK Mobile, VKworld, Vodacom, Vodafone, Vonino, Vontar, Vorago, Vorcom, Vorke, Voto, VOX, Voxtel, Voyo, Vsmart, Vsun, Vulcan, VVETIME, Walton, WE, Web TV, Weimei, WellcoM, WELLINGTON, Western Digital, Westpoint, Wexler, Wieppo, Wigor, Wiko, Wileyfox, Winds, Wink, Winmax, Winnovo, Wintouch, Wiseasy, WIWA, Wizz, Wolder, Wolfgang, Wolki, Wonu, Woo, Wortmann, Woxter, X-BO, X-TIGI, X-View, X.Vision, XGIMI, Xgody, Xiaolajiao, Xiaomi, Xion, Xolo, Xoro, Xshitou, Xtouch, Xtratech, Yandex, Yarvik, YASIN, Yes, Yezz, Yoka TV, Yota, YOTOPT, Ytone, Yu, Yuandao, YUHO, Yuno, Yusun, Yxtel, Zaith, Zatec, Zebra, Zeemi, Zen, Zenek, Zentality, Zfiner, ZH&amp;K, Zidoo, ZIFRO, Ziox, Zonda, Zopo, ZTE, Zuum, Zync, ZYQ, Zyrex, öwn</acceptedValues>
</row>
<row>
<type>dimension</type>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 93306cb8a7..512c40a197 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -217,7 +217,7 @@
<id>Live_VisitorLog</id>
<name>Visits Log</name>
<order>5</order>
- <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Visits Log shows you every visit your website receives in detail. You can see what actions each visitor has taken, how they got to your site, a bit about who they are, and more (while still complying with your local privacy regulations).&lt;/p&gt;&lt;p&gt;While other reports in Matomo show how your visitors behave at an aggregate level, the Visits Log provides granular detail. You can also use segments to narrow it down to specific types of visits to understand your visitors better.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/real-time/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; target=&quot;_blank&quot; rel=&quot;noreferrer noopener&quot;&gt;Learn more in the Visits Log guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Live</module>
<action>getLastVisitsDetails</action>
@@ -862,7 +862,7 @@
<id>UserId_UserReportTitle</id>
<name>User IDs</name>
<order>40</order>
- <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The User IDs report shows visits associated with all of your registered and logged in users. You can use this section to understand website usage by specific users and identify who your most and least active users are.&lt;/p&gt;&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://matomo.org/docs/user-id/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot;&gt;&lt;span class=&quot;icon-info&quot;&gt;&lt;/span&gt; Learn more&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>UserId</module>
<action>getUsers</action>
@@ -1078,7 +1078,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getPageTitlesFollowingSiteSearch</action>
@@ -1105,7 +1105,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getPageUrlsFollowingSiteSearch</action>
@@ -1132,7 +1132,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchCategories</action>
@@ -1159,7 +1159,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchKeywords</action>
@@ -1186,7 +1186,7 @@
<id>Actions_SubmenuSitesearch</id>
<name>Site Search</name>
<order>25</order>
- <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Site Search section shows which keywords visitors use when searching your website. It also displays which pages users view after performing a search and which on-site search keywords return no results at all.&lt;/p&gt;&lt;p&gt;These reports can give you ideas about missing content on your site, insight into what your visitors are looking for but can’t find easily, and more.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/site-search/?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 the Site Search guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Actions</module>
<action>getSiteSearchNoResultKeywords</action>
@@ -1267,7 +1267,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getAction</action>
@@ -1295,7 +1295,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getAction</action>
@@ -1323,7 +1323,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getCategory</action>
@@ -1351,7 +1351,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getCategory</action>
@@ -1379,7 +1379,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getName</action>
@@ -1407,7 +1407,7 @@
<id>Events_Events</id>
<name>Events</name>
<order>40</order>
- <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Events section offers reports on the custom events associated with your site. Events typically require custom configuration. Once configured you can review reports broken down by category, action and name.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/event-tracking/?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 about event tracking here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Events</module>
<action>getName</action>
@@ -1435,7 +1435,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentNames</action>
@@ -1462,7 +1462,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentNames</action>
@@ -1489,7 +1489,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentPieces</action>
@@ -1516,7 +1516,7 @@
<id>Contents_Contents</id>
<name>Contents</name>
<order>45</order>
- <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Content tracking helps you determine the popularity of specific pieces of content on any page of your website or app. This section reports the number of impressions and interactions the various pieces of content on your site receive.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/content-tracking/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in the Content Tracking guide.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Contents</module>
<action>getContentPieces</action>
@@ -1543,7 +1543,7 @@
<id>Transitions_Transitions</id>
<name>Transitions</name>
<order>46</order>
- <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;Transitions gives you a report that shows the things your visitors did directly before and after viewing a certain page. This page will explain how to access, understand, and use the powerful Transitions report.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/transitions/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;More Details&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>Transitions</module>
<action>getTransitions</action>
@@ -1817,7 +1817,7 @@
<id>Referrers_SubmenuSearchEngines</id>
<name>Search Engines &amp; Keywords</name>
<order>10</order>
- <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
+ <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
</subcategory>
<module>Referrers</module>
<action>getKeywords</action>
@@ -1844,7 +1844,7 @@
<id>Referrers_SubmenuSearchEngines</id>
<name>Search Engines &amp; Keywords</name>
<order>10</order>
- <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
+ <help>&lt;p&gt;This section helps you analyse your search engine optimisation and performance. You can analyse your most popular keywords with the combined keyword reports or see which keywords perform well on specific search engines for more targeted analysis and optimisation.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/matomo-cloud/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Matomo Cloud&lt;/a&gt; and &lt;a href=&quot;https://plugins.matomo.org/SearchEngineKeywordsPerformance&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Search Engine Keywords Performance&lt;/a&gt; plugin users will receive the best results from this report.&lt;/p&gt;</help>
</subcategory>
<module>Referrers</module>
<action>getSearchEngines</action>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__API.getProcessedReport_year.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__API.getProcessedReport_year.xml
index ba790b2a95..ad045fb48d 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__API.getProcessedReport_year.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__API.getProcessedReport_year.xml
@@ -21,7 +21,7 @@
<nb_actions_per_visit>Nombre moyen d'actions (affichages de page, recherches, téléchargements ou liens sortants) qui ont été effectuées durant les visites.</nb_actions_per_visit>
<avg_time_on_site>Durée moyenne d'une visite.</avg_time_on_site>
<bounce_rate>Pourcentage de visites qui ont eu un affichage unique de page. Cela signifie que le visiteur a quitté le site directement depuis la page d'entrée.</bounce_rate>
- <conversion_rate>Le Pourcentage de visites qui ont déclenché une conversion d'objectif.</conversion_rate>
+ <conversion_rate>Le pourcentage de visites qui ont déclenché une conversion d'objectif.</conversion_rate>
</metricsDocumentation>
<processedMetrics>
<nb_actions_per_visit>Actions par visite</nb_actions_per_visit>
diff --git a/tests/PHPUnit/System/expected/test_reportLimitingdimension_2_rankingQuery__CustomDimensions.getCustomDimension_day.xml b/tests/PHPUnit/System/expected/test_reportLimitingdimension_2_rankingQuery__CustomDimensions.getCustomDimension_day.xml
index ecd14db85a..eccf657358 100644
--- a/tests/PHPUnit/System/expected/test_reportLimitingdimension_2_rankingQuery__CustomDimensions.getCustomDimension_day.xml
+++ b/tests/PHPUnit/System/expected/test_reportLimitingdimension_2_rankingQuery__CustomDimensions.getCustomDimension_day.xml
@@ -81,6 +81,8 @@
<avg_time_on_dimension>0</avg_time_on_dimension>
+
+
</row>
<row>
@@ -121,6 +123,8 @@
<avg_time_on_dimension>0</avg_time_on_dimension>
+
+
</row>
</subtable>
</row>
diff --git a/tests/PHPUnit/Unit/AssetManagerTest.php b/tests/PHPUnit/Unit/AssetManagerTest.php
index ed34623130..406739bc8f 100644
--- a/tests/PHPUnit/Unit/AssetManagerTest.php
+++ b/tests/PHPUnit/Unit/AssetManagerTest.php
@@ -7,7 +7,6 @@
*/
namespace Piwik\Tests\Unit;
-use Piwik\Cache;
use Piwik\AssetManager;
use Piwik\Config;
diff --git a/tests/PHPUnit/Unit/Category/CategoryTest.php b/tests/PHPUnit/Unit/Category/CategoryTest.php
index 8304375483..d9d550b494 100644
--- a/tests/PHPUnit/Unit/Category/CategoryTest.php
+++ b/tests/PHPUnit/Unit/Category/CategoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Category;
-use Piwik\Cache;
use Piwik\Category\Category;
use Piwik\Category\Subcategory;
diff --git a/tests/PHPUnit/Unit/Category/SubcategoryTest.php b/tests/PHPUnit/Unit/Category/SubcategoryTest.php
index 1cc42e0948..f04fb78ede 100644
--- a/tests/PHPUnit/Unit/Category/SubcategoryTest.php
+++ b/tests/PHPUnit/Unit/Category/SubcategoryTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Category;
-use Piwik\Cache;
use Piwik\Category\Subcategory;
/**
diff --git a/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php b/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
index 883dfe922a..0219d546e5 100644
--- a/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
+++ b/tests/PHPUnit/Unit/CliMulti/RequestParserTest.php
@@ -10,7 +10,6 @@
namespace PHPUnit\Unit\CliMulti;
use PHPUnit\Framework\TestCase;
-use Piwik\API\Request;
use Piwik\CliMulti\RequestParser;
class RequestParserTest extends TestCase
diff --git a/tests/PHPUnit/Unit/Config/IniFileChainTest.php b/tests/PHPUnit/Unit/Config/IniFileChainTest.php
index 0274d12fba..886f214f48 100644
--- a/tests/PHPUnit/Unit/Config/IniFileChainTest.php
+++ b/tests/PHPUnit/Unit/Config/IniFileChainTest.php
@@ -8,7 +8,6 @@
namespace Piwik\Tests\Unit\Config;
use PHPUnit\Framework\TestCase;
-use Piwik\Config;
use Piwik\Config\IniFileChain;
/**
diff --git a/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php b/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
index b358e23e90..600078aecd 100644
--- a/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
+++ b/tests/PHPUnit/Unit/DataAccess/ArchiveWriterTest.php
@@ -10,8 +10,6 @@ namespace Piwik\Tests\Unit;
use Piwik\Archive\Chunk;
use Piwik\DataAccess\ArchiveWriter;
-use Piwik\DataTable;
-use Piwik\Segment;
/**
* @group ArchiveWriterTest
diff --git a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
index f315da52fd..4f80c779b8 100644
--- a/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
+++ b/tests/PHPUnit/Unit/DataAccess/LogQueryBuilder/JoinGeneratorTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\DataAccess;
use Piwik\DataAccess\LogQueryBuilder\JoinGenerator;
use Piwik\DataAccess\LogQueryBuilder\JoinTables;
use Piwik\Tests\Framework\Mock\Plugin\LogTablesProvider;
-use Piwik\Tracker\Visit;
/**
* @group Core
diff --git a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
index e2bc31f960..e4d9ce5da8 100644
--- a/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
+++ b/tests/PHPUnit/Unit/DataTable/Filter/AddSegmentFilterBySegmentValueTest.php
@@ -10,10 +10,8 @@ namespace Piwik\Tests\Core\DataTable\Filter;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Plugins\Actions\Reports\GetOutlinks;
use Piwik\Plugins\DevicePlugins\Reports\GetPlugin;
use Piwik\Plugins\UserCountry\Reports\GetCity;
-use Piwik\Plugins\UserCountry\Reports\GetCountry;
use Piwik\Plugins\VisitsSummary\Reports\Get;
/**
diff --git a/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php b/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
index 93c7e927a1..29d99d7a38 100644
--- a/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
+++ b/tests/PHPUnit/Unit/DataTable/Filter/RangeCheckTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\DataTable\Filter;
use Piwik\DataTable\Filter\RangeCheck;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Plugins\CoreHome\Columns\Metrics\VisitsPercent;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/DataTable/ManagerTest.php b/tests/PHPUnit/Unit/DataTable/ManagerTest.php
index 7c482a585d..5a5a82f74d 100644
--- a/tests/PHPUnit/Unit/DataTable/ManagerTest.php
+++ b/tests/PHPUnit/Unit/DataTable/ManagerTest.php
@@ -2,10 +2,8 @@
namespace Piwik\Tests\Unit\DataTable;
-use Piwik\Config;
use Piwik\DataTable\Manager;
use Piwik\DataTable;
-use Piwik\DataTable\Row;
/**
* @group DataTable
diff --git a/tests/PHPUnit/Unit/DataTable/MapTest.php b/tests/PHPUnit/Unit/DataTable/MapTest.php
index e21147f240..03639f24f7 100644
--- a/tests/PHPUnit/Unit/DataTable/MapTest.php
+++ b/tests/PHPUnit/Unit/DataTable/MapTest.php
@@ -2,11 +2,9 @@
namespace Piwik\Tests\Unit\DataTable;
-use Piwik\Config;
use Piwik\DataTable\Manager;
use Piwik\DataTable;
use Piwik\DataTable\Row;
-use Piwik\Tests\Framework\Mock\TestConfig;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/DataTableTest.php b/tests/PHPUnit/Unit/DataTableTest.php
index 57b5297910..e0fc18b7f4 100644
--- a/tests/PHPUnit/Unit/DataTableTest.php
+++ b/tests/PHPUnit/Unit/DataTableTest.php
@@ -14,7 +14,6 @@ use Piwik\DataTable\Row;
use Piwik\DataTable;
use Piwik\Date;
use Piwik\Timer;
-use Symfony\Component\VarDumper\Cloner\Data;
/**
* @group DataTableTest
diff --git a/tests/PHPUnit/Unit/FilesystemTest.php b/tests/PHPUnit/Unit/FilesystemTest.php
index b21705e796..3c27985b83 100644
--- a/tests/PHPUnit/Unit/FilesystemTest.php
+++ b/tests/PHPUnit/Unit/FilesystemTest.php
@@ -10,10 +10,10 @@ namespace Piwik\Tests\Unit;
use Piwik\Filesystem;
use Piwik\Tests\Framework\Mock\File;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Core
+ * @group FileSystem
*/
class FilesystemTest extends \PHPUnit\Framework\TestCase
{
@@ -193,6 +193,51 @@ class FilesystemTest extends \PHPUnit\Framework\TestCase
$this->assertEquals(array(), $result);
}
+ public function test_unlockTargetFilesNotPresentInSource_doNotAttemptToUnlinkFilesWithTheSameCaseInsensitiveName()
+ {
+ $sourceInsensitive = $this->createCaseInsensitiveSourceFiles();
+ $targetInsensitive = $this->createCaseInsensitiveTargetFiles();
+
+ // Target: /CoreHome/vue/src/Menudropdown/Menudropdown.vue'
+ // Source: /CoreHome/vue/src/MenuDropdown/MenuDropdown.vue'
+
+ $result = Filesystem::directoryDiff($sourceInsensitive, $targetInsensitive);
+
+ if (Filesystem::isFileSystemCaseInsensitive()) {
+
+ // Case insensitive filesystem:
+ // Since the target and source will be treated as the same file then we do not want directoryDiff() to
+ // report a difference as copying the source command will overwrite the target file. Reporting a difference
+ // will cause the target file to be unlinked after the copy which will result in a missing file.
+
+ $this->assertEquals(array(), $result);
+
+ } else {
+
+ // Case sensitive filesystem:
+ // directoryDiff() should report a difference and we should be able to unlink the target file safely after
+ // the source file has been copied.
+
+ // make sure there is a difference between those folders
+ $this->assertNotEmpty($result);
+
+ Filesystem::unlinkTargetFilesNotPresentInSource($sourceInsensitive, $targetInsensitive);
+
+ // make sure there is no longer a difference
+ $result = Filesystem::directoryDiff($sourceInsensitive, $targetInsensitive);
+ $this->assertEquals(array(), $result);
+
+ $result = Filesystem::directoryDiff($targetInsensitive, $sourceInsensitive);
+ $this->assertEquals(array(
+ '/CoreHome/vue/src/MenuDropdown',
+ '/CoreHome/vue/src/MenuDropdown/MenuDropdown.vue',
+ '/CoreHome/vue/src/MenuDropdown/index.htm',
+ '/CoreHome/vue/src/MenuDropdown/index.php',
+ ), $result);
+
+ }
+ }
+
private function createSourceFiles()
{
$source = $this->createEmptySource();
@@ -265,6 +310,26 @@ class FilesystemTest extends \PHPUnit\Framework\TestCase
return $this->testPath . '/target';
}
+ private function createCaseInsensitiveTargetFiles()
+ {
+ $target = $this->createEmptyTarget();
+ Filesystem::mkdir($target . '/CoreHome/vue/src/Menudropdown');
+
+ file_put_contents($target . '/CoreHome/vue/src/Menudropdown/Menudropdown.vue', '');
+
+ return $target;
+ }
+
+ private function createCaseInsensitiveSourceFiles()
+ {
+ $source = $this->createEmptySource();
+ Filesystem::mkdir($source . '/CoreHome/vue/src/MenuDropdown');
+
+ file_put_contents($source . '/CoreHome/vue/src/MenuDropdown/MenuDropdown.vue', '');
+
+ return $source;
+ }
+
public function test_getFileSize_ZeroSize()
{
File::setFileSize(0);
diff --git a/tests/PHPUnit/Unit/Period/RangeTest.php b/tests/PHPUnit/Unit/Period/RangeTest.php
index e817f1bd7e..bbb0873b87 100644
--- a/tests/PHPUnit/Unit/Period/RangeTest.php
+++ b/tests/PHPUnit/Unit/Period/RangeTest.php
@@ -10,7 +10,6 @@ namespace Piwik\Tests\Unit\Period;
use Exception;
use Piwik\Date;
-use Piwik\Period;
use Piwik\Period\Month;
use Piwik\Period\Range;
use Piwik\Period\Week;
diff --git a/tests/PHPUnit/Unit/PeriodTest.php b/tests/PHPUnit/Unit/PeriodTest.php
index 2b7f4c6275..dae057c732 100644
--- a/tests/PHPUnit/Unit/PeriodTest.php
+++ b/tests/PHPUnit/Unit/PeriodTest.php
@@ -14,7 +14,6 @@ use Piwik\Period;
use Piwik\Period\Month;
use Piwik\Period\Week;
use Piwik\Period\Year;
-use Piwik\Translation\Translator;
/**
* @group Core
diff --git a/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php b/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
index 6d4b41dfd6..a59d204dc3 100644
--- a/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
+++ b/tests/PHPUnit/Unit/Report/ReportWidgetFactoryTest.php
@@ -11,7 +11,6 @@ namespace Piwik\Tests\Unit\Report;
use Piwik\Plugin\Report;
use Piwik\Report\ReportWidgetConfig;
use Piwik\Report\ReportWidgetFactory;
-use Piwik\Widget\WidgetConfig;
use Piwik\Widget\WidgetContainerConfig;
class GetBasicReport extends Report
diff --git a/tests/PHPUnit/Unit/Scheduler/TimetableTest.php b/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
index 2d930b0d06..62aeb71a63 100644
--- a/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
+++ b/tests/PHPUnit/Unit/Scheduler/TimetableTest.php
@@ -9,7 +9,6 @@
namespace Piwik\Tests\Unit\Scheduler;
use Piwik\Date;
-use Piwik\Plugin;
use Piwik\Scheduler\Task;
use Piwik\Scheduler\Timetable;
use Piwik\Tests\Framework\Mock\PiwikOption;
diff --git a/tests/PHPUnit/Unit/Translation/FilesTest.php b/tests/PHPUnit/Unit/Translation/FilesTest.php
index ad41a3fba4..e9687c3a9a 100644
--- a/tests/PHPUnit/Unit/Translation/FilesTest.php
+++ b/tests/PHPUnit/Unit/Translation/FilesTest.php
@@ -8,8 +8,6 @@
namespace Piwik\Tests\Unit\Translation\Loader;
-use Piwik\Translation\Loader\JsonFileLoader;
-use Piwik\Translation\Translator;
/**
* @group Translation
diff --git a/tests/PHPUnit/bootstrap.php b/tests/PHPUnit/bootstrap.php
index 961627e5ac..589606864f 100644
--- a/tests/PHPUnit/bootstrap.php
+++ b/tests/PHPUnit/bootstrap.php
@@ -1,8 +1,6 @@
<?php
use Piwik\Application\Environment;
-use Piwik\Container\StaticContainer;
-use Piwik\Http;
use Piwik\Intl\Locale;
use Piwik\Config;
use Piwik\SettingsPiwik;
diff --git a/tests/PHPUnit/proxy/includes.php b/tests/PHPUnit/proxy/includes.php
index c6f301623c..8de134acf8 100644
--- a/tests/PHPUnit/proxy/includes.php
+++ b/tests/PHPUnit/proxy/includes.php
@@ -1,8 +1,10 @@
<?php
if (!defined('PIWIK_INCLUDE_PATH')) {
- define('PIWIK_INCLUDE_PATH', realpath(dirname(__FILE__)) . '/../../../');
+ // NOTE: PIWIK_INCLUDE_PATH must end in '/' or some parts of matomo will break
+ define('PIWIK_INCLUDE_PATH', realpath(dirname(__FILE__) . '/../../..') . '/');
}
+
if (!defined('PIWIK_USER_PATH')) {
define('PIWIK_USER_PATH', PIWIK_INCLUDE_PATH);
}
diff --git a/tests/UI/expected-screenshots/Comparison_goals_table.png b/tests/UI/expected-screenshots/Comparison_goals_table.png
index c25d31e99a..e96ec9a9da 100644
--- a/tests/UI/expected-screenshots/Comparison_goals_table.png
+++ b/tests/UI/expected-screenshots/Comparison_goals_table.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:205c3a5c96bd29a40a3d9b3e8770db001effe5578765d55290a89567d8d71dd2
-size 144169
+oid sha256:05f877c6c566eb09aad6ac404d4a0f272703d1c731a40dd77b2649c7ec43b9ec
+size 147925
diff --git a/tests/UI/expected-screenshots/Comparison_goals_table_specific.png b/tests/UI/expected-screenshots/Comparison_goals_table_specific.png
new file mode 100644
index 0000000000..0f48f1b14b
--- /dev/null
+++ b/tests/UI/expected-screenshots/Comparison_goals_table_specific.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:522d360bfec1df54f6eafa68cb389f3a580c265b86a95fc78d4abaaf37da3596
+size 167427
diff --git a/tests/UI/expected-screenshots/Comparison_normal_table.png b/tests/UI/expected-screenshots/Comparison_normal_table.png
index ff422b478c..3696ae31f7 100644
--- a/tests/UI/expected-screenshots/Comparison_normal_table.png
+++ b/tests/UI/expected-screenshots/Comparison_normal_table.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1f8cbd7d2b781ef2e33bb714833cff3b8d945cd337834492fdcd8c1fb41b4484
-size 114929
+oid sha256:9518e492149ae431e3f932aaad6061bbda59e2ddedff0215da564e40e78df025
+size 114906
diff --git a/tests/UI/expected-screenshots/Comparison_normal_table_no_periods.png b/tests/UI/expected-screenshots/Comparison_normal_table_no_periods.png
index c57ec01265..48b555880a 100644
--- a/tests/UI/expected-screenshots/Comparison_normal_table_no_periods.png
+++ b/tests/UI/expected-screenshots/Comparison_normal_table_no_periods.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c2dbecd1a1e2999fc212cbe5c7d6d8eb0f4c6765cb82bd8d5a8eb397bd8c02a0
-size 65549
+oid sha256:581fc2917ed6f3fb7c3f5bff343542775fcf5f51b9c9bfa2dbeea735491ea43a
+size 65542
diff --git a/tests/UI/expected-screenshots/Comparison_normal_table_no_segments.png b/tests/UI/expected-screenshots/Comparison_normal_table_no_segments.png
index 2f156da72e..0390cafc25 100644
--- a/tests/UI/expected-screenshots/Comparison_normal_table_no_segments.png
+++ b/tests/UI/expected-screenshots/Comparison_normal_table_no_segments.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ebaca97f66b1b73010b4cf30423e9a971bc0b1a1608ce8a5fb8761477918a6c3
-size 51285
+oid sha256:6785519585fa923844df899012b87c48fbaa80d98762540b76aa67aba288c142
+size 51271
diff --git a/tests/UI/expected-screenshots/Comparison_row_evolution.png b/tests/UI/expected-screenshots/Comparison_row_evolution.png
index 9eb90f613a..2779cf641a 100644
--- a/tests/UI/expected-screenshots/Comparison_row_evolution.png
+++ b/tests/UI/expected-screenshots/Comparison_row_evolution.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9c055db2628bbc3ab72903aee7e92de69fc485a9e8fb63d833d83bda558043bb
-size 72600
+oid sha256:a930d69dfea976f39b6a8c231c1503d031ff2d575ca8d9c8f5b5ba036e051ee5
+size 72574
diff --git a/tests/UI/expected-screenshots/Comparison_segmented_visitorlog.png b/tests/UI/expected-screenshots/Comparison_segmented_visitorlog.png
index b066cd61fd..034c860e3e 100644
--- a/tests/UI/expected-screenshots/Comparison_segmented_visitorlog.png
+++ b/tests/UI/expected-screenshots/Comparison_segmented_visitorlog.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:018c398ef12b2d611950b158a996b590caa8ae5ccbba6a4dc40cc808dbc92bac
-size 406599
+oid sha256:2f8b6f360b48a4548983db0c138e4d6b3ecafdfc3d1f041ab0542f4c3c2fe3a8
+size 406514
diff --git a/tests/UI/expected-screenshots/Comparison_subtables_loaded.png b/tests/UI/expected-screenshots/Comparison_subtables_loaded.png
index e21b6940ab..1966deaf3c 100644
--- a/tests/UI/expected-screenshots/Comparison_subtables_loaded.png
+++ b/tests/UI/expected-screenshots/Comparison_subtables_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ae98646aff5361bf05242562f515ac5cbc078cddc81b82fb2c989f4fe52975bc
-size 123332
+oid sha256:3f5def12f703d12d93e50b68316138fe9aea8175d2f1837bd7c95ff34c886d09
+size 123322
diff --git a/tests/UI/expected-screenshots/Comparison_subtables_paginate.png b/tests/UI/expected-screenshots/Comparison_subtables_paginate.png
index 30635b2ee6..09f0eac0d7 100644
--- a/tests/UI/expected-screenshots/Comparison_subtables_paginate.png
+++ b/tests/UI/expected-screenshots/Comparison_subtables_paginate.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dec66604b35686c7e5217a6ec2b759fadb27d08f6ff3bf4173df48a5197b895b
-size 96809
+oid sha256:a0af6408870fed214b37d07cf8b578d500e3e912e344fa67f1a7d1ed7decf38c
+size 96802
diff --git a/tests/UI/expected-screenshots/Comparison_visits_overview_widget_sv.png b/tests/UI/expected-screenshots/Comparison_visits_overview_widget_sv.png
new file mode 100644
index 0000000000..c020741684
--- /dev/null
+++ b/tests/UI/expected-screenshots/Comparison_visits_overview_widget_sv.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a170b350af9aec503f895c76483a0285b663d789cdeb445f1838e7b298eeecc2
+size 235286
diff --git a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png
index 3aeaa376c7..01c923734e 100644
--- a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png
+++ b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:60dfff8b861a4d7670ac8b36cd19d6acaecfe4a4950d9ebd4d790163842c9fea
-size 377355
+oid sha256:cac18b28d4cf433501aba18587935455108bc36a1afb4358ed6c46523932538c
+size 376789
diff --git a/tests/UI/expected-screenshots/JSTracker_visitor_log.png b/tests/UI/expected-screenshots/JSTracker_visitor_log.png
index c851067e78..2a428fd99d 100644
--- a/tests/UI/expected-screenshots/JSTracker_visitor_log.png
+++ b/tests/UI/expected-screenshots/JSTracker_visitor_log.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:eceebc742be98f6ad9ac12243ac85df43c1c98ca2739d5554bdf16fa151f3726
-size 33495
+oid sha256:354e9d552d60ad26c452bfedda76959973ee98228886942fdd47bf6ed83e68e7
+size 33486
diff --git a/tests/UI/expected-screenshots/SiteSelector_expanded.png b/tests/UI/expected-screenshots/SiteSelector_expanded.png
index 5e2d8ed274..6318cab0df 100644
--- a/tests/UI/expected-screenshots/SiteSelector_expanded.png
+++ b/tests/UI/expected-screenshots/SiteSelector_expanded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7b9161297a0646d8b74f5e12814bc409c12457d808b7b091b6146ce9719fe9cb
-size 21442
+oid sha256:36c1d4d5b30dc0ce50b0aa5da4684be333aa73f1e22d2072d4ab861baca50e8d
+size 13670
diff --git a/tests/UI/expected-screenshots/SiteSelector_loaded.png b/tests/UI/expected-screenshots/SiteSelector_loaded.png
index e3f92cfc80..573abf362e 100644
--- a/tests/UI/expected-screenshots/SiteSelector_loaded.png
+++ b/tests/UI/expected-screenshots/SiteSelector_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3481516eaae3c23c72be54daa2570e1cca82f1ee424721af17792de7aad8427c
-size 2788
+oid sha256:8626f664049fd86b77b3beb4f933443715e19f56ddd021853dff61ada963dce3
+size 2310
diff --git a/tests/UI/expected-screenshots/SiteSelector_search_no_results.png b/tests/UI/expected-screenshots/SiteSelector_search_no_results.png
index b8921c6765..07eac17f73 100644
--- a/tests/UI/expected-screenshots/SiteSelector_search_no_results.png
+++ b/tests/UI/expected-screenshots/SiteSelector_search_no_results.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:73c1220722bb8b0d7f6460ee9acad41b796ee1f891e4ba8c520c6af5b57bf680
-size 8337
+oid sha256:8834eaa686a63c9a3825871be5bf6a0f4f152578ae439ad2710b250e748f4e53
+size 6071
diff --git a/tests/UI/expected-screenshots/SiteSelector_search_one_char.png b/tests/UI/expected-screenshots/SiteSelector_search_one_char.png
index ce68bf714d..1d7e80a088 100644
--- a/tests/UI/expected-screenshots/SiteSelector_search_one_char.png
+++ b/tests/UI/expected-screenshots/SiteSelector_search_one_char.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e74c3e31e9d43848938ed0fcd05168cfb143091ca1ffe9fb1af15b081ba64f71
-size 21189
+oid sha256:e0ce1728bf9923184d037e13d79e282b6d8b69f91e8902c2322a91d833a5f8d1
+size 13347
diff --git a/tests/UI/expected-screenshots/SiteSelector_search_two_chars.png b/tests/UI/expected-screenshots/SiteSelector_search_two_chars.png
index 298f3671a5..161c5dbb95 100644
--- a/tests/UI/expected-screenshots/SiteSelector_search_two_chars.png
+++ b/tests/UI/expected-screenshots/SiteSelector_search_two_chars.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7545cb7858670358143b6a52c6dc7c2608543b3ccd97874e0b2b2fd4d881f080
-size 10678
+oid sha256:01011bd80b316a6ff24090aac2a8cf584ecb29e0b11a6e6f21f6611a209f3c5b
+size 8547
diff --git a/tests/UI/expected-screenshots/SiteSelector_site_selected.png b/tests/UI/expected-screenshots/SiteSelector_site_selected.png
index 6a6d2e06f8..1586c5f70c 100644
--- a/tests/UI/expected-screenshots/SiteSelector_site_selected.png
+++ b/tests/UI/expected-screenshots/SiteSelector_site_selected.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:753034d54e96eecefef96c35b02afe4397c90851bdd706535d57a806616c448b
-size 2046
+oid sha256:158486173ec45db2405a09faf4d3587a5ff8c562baa26a2651aa25f154cb9708
+size 1598
diff --git a/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png b/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
index 81683662aa..4102c19458 100644
--- a/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
+++ b/tests/UI/expected-screenshots/SupportedBrowser_page_loads_when_browser_supported.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0c79230fd835287b1e39e4364d3520c94c9245ed512936f1571e4ee6bbadcf86
-size 222711
+oid sha256:aea6ac0c372c37fa405a7a99e83e270baffa5c5afda8d02ec83380647d7d6e28
+size 222709
diff --git a/tests/UI/expected-screenshots/Theme_home.png b/tests/UI/expected-screenshots/Theme_home.png
index 3f0431e947..1b9b03d4cd 100644
--- a/tests/UI/expected-screenshots/Theme_home.png
+++ b/tests/UI/expected-screenshots/Theme_home.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3f0aa4871b7a82c4787fb115999339790fd5914b70f9ac4e342ae8700cf77b8f
-size 735319
+oid sha256:6e485e5fecb31825071259af175a969ad027b9c459a91a1339173e406d8890f6
+size 735341
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png b/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png
index 192d6d800a..be82358dcb 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_actions_outlinks_vlog.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:84cf856bedceefed3a488acefd70037265a575c69487d4b3a704d631852e44b1
-size 76264
+oid sha256:70a72d1914fc918fa179ca1fd34cd016a59957294a07feadc578e001faf03315
+size 76259
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
index 1f45fab367..37e1990847 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c65a5991b6764745f2367c769e3a889036b6d06b606b14139c4b28937b18020c
-size 445423
+oid sha256:0108aed2c28f0e209b7007a7a5c214173639c1728f6e763599b328706b4925f8
+size 471865
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_visitor_generator.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_visitor_generator.png
index e8a06615e6..21b26c41e2 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_visitor_generator.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_visitor_generator.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:59f1fec2b3363f78ccd7b2d69f1d73beba93928921de12f7a96a735dd896c2f4
-size 85070
+oid sha256:a3b3520fc7bbfaf44073c811780e855fdfd3a5047ae608fc33e28d543aafb807
+size 84546
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
index 6fb439806c..6c72ebeabe 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard1.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ccbfcd3fdcfa1eaafb559b8e6366fa442c215167dd79284235f0e3dedefb928c
-size 662601
+oid sha256:c2a62536d11ad78ecb4b757dc6c071aea27d1aee38543bc3a6cfcdab8dffdd17
+size 662637
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
index 55a8062948..64732f1625 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard2.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:63ec20e13955d1abeef114c9709af2de8b4dd02914716d9980e911eb274b629c
-size 1562758
+oid sha256:540edd7a2e07074e421326aa63bdada90ba6a657a7e960daa2cafa2b435749f8
+size 1562746
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
index 4ea6d4eede..15a5381be2 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:e45b6ba5244813562b887a69adf9fb4e5de72b14822c42d883c408d669e68673
-size 712635
+oid sha256:841bb4c3b9258bd5d9295992db55ebc3adc8e8d8e1d165f2b27e0ef83a90297e
+size 712598
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log.png b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log.png
index 9692c3a27e..4abedf6bd6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bf50f44857549e60f72257ec36cd6344c2917538fb2705e08c8ed5f254cf51bc
-size 724447
+oid sha256:feb91f3c2d6d353d3b966c1bd935fef4433acf2c66f9de06843aa6606f631821
+size 724349
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log_segmented.png b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log_segmented.png
index a12e1fd32c..2f84df55ab 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log_segmented.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_log_segmented.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:87436b8de8c73069da18bd74a89d49ff4b79b3a8efb65ef0b46d0a9de4a17153
-size 103756
+oid sha256:5823a110d26ef4bcdbe21518ef6f6b7f5375b97e730e45ea0d554098e34367dc
+size 103730
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_referrers_search_engines_keywords.png b/tests/UI/expected-screenshots/UIIntegrationTest_referrers_search_engines_keywords.png
index a264e4f4d9..3e60d46c81 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_referrers_search_engines_keywords.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_referrers_search_engines_keywords.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1a58f15d349090aa67fd0073a337fa9d9080b608d8ed74a843d61a4c19823199
-size 120493
+oid sha256:7459cc7a7f15a243135eb46a1b44f0576d9aa1d29dd718c753bfe214e0d5454a
+size 120482
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_segmented_visitorlog.png b/tests/UI/expected-screenshots/UIIntegrationTest_segmented_visitorlog.png
index 400faa2093..9ae59410c2 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_segmented_visitorlog.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_segmented_visitorlog.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:521e86c402633149ffb3189589b4d2316cabb5ca6886dae4f6402b79385ffd47
-size 395500
+oid sha256:48446f145a918b089e41de647baec2b16e30f726756bcbb436154f300939126e
+size 395327
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_not_segmented.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_not_segmented.png
index d301931c34..ef94a390c6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_not_segmented.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_not_segmented.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d47a808b48f0c76242d087de24af64d27ffd187be311580059f45d1e1c0df81e
-size 556346
+oid sha256:4f00dbb5c576a742119d14dd06e346d0cceef4daa0bf088895eaeb9c2e9f2478
+size 556349
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
index 41b8c99010..d1efb6f94e 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitor_profile_popup.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:66d13f079fb1127d46de080b61e572a28abc8e0e6d5c63d9207d6c79fb914f01
-size 184667
+oid sha256:fe35e28fe4d034fb1a1e72e5a5e83c9c107faa38ff824bdd2add21431c93ef80
+size 184673
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
index 6f6e6dde63..8052153311 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_devices.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f06e90c2fa930447de5a2344a348eecf71410d76699c4dccfc4314d673cec09e
-size 86508
+oid sha256:88f3368bc4e25c8d05aa8d7f4407c5ac163893264d7531cfa2aa708def228d71
+size 86448
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
index be580b9dba..3b34d4d605 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_locations_provider.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9646d5170b956afb8717de662f532c0bbbdbb6cbc6ad40a77af3a06e2151837d
-size 158705
+oid sha256:3c9bdaacf005ea6fa927b80e6ef3fbef4360497e4ca4f573cab72bb2e53fc363
+size 158658
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
index b02ddac951..42777baf1a 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_map.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1ed91660fe4456189ae8229dba064fa1a5519642f310252212b087c303a6cf90
-size 116786
+oid sha256:8f19f65d2f8932ee53d64878da518ca2541a58a46a66710ad0e967f0a94daa45
+size 116782
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_visits.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_visits.png
index 95ef32c320..eff66b3671 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_visits.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_realtime_visits.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3a44ce67223f24984969dac6720a0f0331775eb352d25c36fd4b2e0c0a989b88
-size 71111
+oid sha256:17f74783fd34c327908f8632d4a243ebba8bdeb166bfcfa47e6575fd5ab15685
+size 71086
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_software.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_software.png
index 572c6f1186..78079ce9a6 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_software.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_software.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:61ed6a907b6a3a2d703837ebba844393f26e3d6dc1ccd0f5dc24791347215f50
-size 149829
+oid sha256:8542b180cd681d0a9e4dce131d6967ab5557de89a02a910529526fca25e3dbac
+size 149796
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_ecommercelog.png b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_ecommercelog.png
index a31001b82e..256ea28d9d 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_ecommercelog.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_ecommercelog.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:171fee4f8629a0c09ae815bb3dd4fffdc13529683a51f7e8bcdb99c49e49a3c6
-size 703766
+oid sha256:e77ec92e725b062fcc23ebf1a1c163fd87b1c07ac71b51c87e8b74b39a9ffc2e
+size 703441
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_visitor_log.png b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_visitor_log.png
index f32e639bbb..9b1b8cee3e 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_visitor_log.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_widgetize_visitor_log.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:304dc4781d378c3a6e869e53d1a6463e178b75eb9fb8d0ed0dc5ad4e1345950b
-size 369951
+oid sha256:43b575e67e9ebd6c019a030a0d9743577a802a2359d7f96338377c70bfcefbce
+size 369915
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_11_flattened.png b/tests/UI/expected-screenshots/ViewDataTableTest_11_flattened.png
index 69c88f562c..3ad306e541 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_11_flattened.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_11_flattened.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:52e23ff06876988fced273cc6dfce607f050858093eb772048051bf1fedfef94
-size 71180
+oid sha256:6d621b60b8588fa255645959b208e0de0178cbf8b3baf7eca54fca5915c329cb
+size 71014
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_12_aggregate_shown.png b/tests/UI/expected-screenshots/ViewDataTableTest_12_aggregate_shown.png
index 3d1da6952a..7e31e352ad 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_12_aggregate_shown.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_12_aggregate_shown.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:981354eea0574702d2bfb621aeac0e72b5e941b7a9c85931a98431e5cdb53370
-size 73407
+oid sha256:2ae4d6606f6147ef2741d08b3f9c3152240d624243167e45c59a87b4671776d1
+size 73349
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_dimension_columns.png b/tests/UI/expected-screenshots/ViewDataTableTest_dimension_columns.png
index f5fc40ee4a..6475ef9a15 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_dimension_columns.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_dimension_columns.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:95bcd3ab9a9b46c36da97dd00c4e8982c6063e37aae619f4bcf0216abf3e6eda
-size 74856
+oid sha256:97c4a6003ecdf2c0ca7d1909deafef3ca6db2b876dae641b12d8d26deff7d8b9
+size 74802
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_dimension_search.png b/tests/UI/expected-screenshots/ViewDataTableTest_dimension_search.png
index e7f07134eb..6658a735ca 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_dimension_search.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_dimension_search.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a7d2b46e34604fab23522037ba5afeb84991ad56474aea3a16a8919f108a4841
-size 43963
+oid sha256:a07567417b1703abe67fcd9bc85ae5c5fd252e700b2fa726a2866397d0afa1ca
+size 43966
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_flatten_search.png b/tests/UI/expected-screenshots/ViewDataTableTest_flatten_search.png
index 9035e17985..0a1f9f92c7 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_flatten_search.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_flatten_search.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d4fe87cca5cfeee0248e015b7a933e2f1ffc38ed4d0584c943f12d55ccd070db
-size 43962
+oid sha256:30f0dbb8feb68d3a75fbfba96f4f06ec61eca561b4705e8d1b3e4b335f368ba1
+size 43952
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_related_report_click.png b/tests/UI/expected-screenshots/ViewDataTableTest_related_report_click.png
index c590f7359d..3fb3d9bbd0 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_related_report_click.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_related_report_click.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f08924faf0b720cff0ae2cc2329c898163e845c608b3ec5905cd2d433ec075da
-size 38870
+oid sha256:805ef4bdfdb8c5f3288293c0bd4b189278e7f191027dbe281609bc050038a4d6
+size 38855
diff --git a/tests/UI/expected-screenshots/ViewDataTableTest_subtables_loaded.png b/tests/UI/expected-screenshots/ViewDataTableTest_subtables_loaded.png
index 045bcba255..8620f79ec9 100644
--- a/tests/UI/expected-screenshots/ViewDataTableTest_subtables_loaded.png
+++ b/tests/UI/expected-screenshots/ViewDataTableTest_subtables_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3b384526b430208c2888f9dfcf6de965ced5e95d335b93b97b5e0332ecc1ae2a
-size 79340
+oid sha256:0cb878cf49f91c7d1b9d35a8a91af2eabb60795d77d41d1574d351f0c71ded46
+size 79278
diff --git a/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png b/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
index 7f30b5bbce..267b226055 100644
--- a/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
+++ b/tests/UI/expected-screenshots/enable_framed_pages_embed_whole_app.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6b67901e1d2bc6a772d3178e1cd6c4ce556b8f7113fb4757001595493f6ff31b
-size 233080
+oid sha256:24b09d471463370f8639b563e03990ec3cae30f9e3dff63606a67246883bb976
+size 233087
diff --git a/tests/UI/specs/Comparison_spec.js b/tests/UI/specs/Comparison_spec.js
index ef2989f3f7..7b29345b4f 100644
--- a/tests/UI/specs/Comparison_spec.js
+++ b/tests/UI/specs/Comparison_spec.js
@@ -31,6 +31,9 @@ describe("Comparison", function () {
+ "actionToWidgetize=getSearchEngines&viewDataTable=table&filter_limit=5&isFooterExpandedInDashboard=1" + comparePeriod,
visitOverviewWidget = "?module=Widgetize&action=iframe&containerId=VisitOverviewWithGraph&disableLink=0&widget=1&" +
"moduleToWidgetize=CoreHome&actionToWidgetize=renderWidgetContainer&disableLink=1&widget=1&" + generalParams + "&" +
+ compareParams,
+ visitOverviewSparklines = "?module=Widgetize&action=iframe&disableLink=1&widget=1&" +
+ "moduleToWidgetize=VisitsSummary&actionToWidgetize=get&forceView=1&viewDataTable=sparklines&" + generalParams + "&" +
compareParams
;
@@ -48,6 +51,7 @@ describe("Comparison", function () {
await page.waitForSelector('.widget');
await page.waitForNetworkIdle();
await page.waitForSelector('.piwik-graph');
+ await page.waitForNetworkIdle();
const pageWrap = await page.$('.pageWrap');
expect(await pageWrap.screenshot()).to.matchImage('dashboard_last_period');
@@ -241,15 +245,32 @@ describe("Comparison", function () {
expect(await dialog.screenshot()).to.matchImage('segmented_visitorlog');
});
- it('should show the goals table correctly when comparing segments and period', async () => {
+ it('should show the goals overview table correctly when comparing segments and period', async () => {
await page.goto(goalsTableUrl);
await page.waitForNetworkIdle();
expect(await page.screenshot({ fullPage: true })).to.matchImage('goals_table');
});
+ it('should show a specific goals table correctly when comparing segments and period', async () => {
+ await page.goto(goalsTableUrl + '&idGoal=1');
+ await page.waitForNetworkIdle();
+ expect(await page.screenshot({ fullPage: true })).to.matchImage('goals_table_specific');
+ });
+
it('should load a widgetized sparklines visualization correctly', async () => {
await page.goto(visitOverviewWidget);
await page.waitForNetworkIdle();
expect(await page.screenshot({ fullPage: true })).to.matchImage('visits_overview_widget');
});
+
+ it('should show evolution metrics correctly formatted in other language', async () => {
+ await page.goto(visitOverviewSparklines + '&language=sv');
+ await page.waitForNetworkIdle();
+ await page.evaluate(function(){
+ // replace all metric names with `metric name` to avoid test failures when metric translation changes
+ $('.sparkline-metrics').each(function(){ $(this).html($(this).find('strong').prop('outerHTML') + ' metric name') });
+ });
+
+ expect(await page.screenshot({ fullPage: true })).to.matchImage('visits_overview_widget_sv');
+ });
});
diff --git a/tests/UI/specs/SiteSelector_spec.js b/tests/UI/specs/SiteSelector_spec.js
index 2aff9454d5..2f3aee9ea4 100644
--- a/tests/UI/specs/SiteSelector_spec.js
+++ b/tests/UI/specs/SiteSelector_spec.js
@@ -10,7 +10,7 @@
describe("SiteSelector", function () {
this.timeout(0);
- const selectorToCapture = '[piwik-siteselector],[piwik-siteselector] .dropdown';
+ const selectorToCapture = '.siteSelector,.siteSelector .dropdown';
const url = "?module=UsersManager&action=userSettings&idSite=1&period=day&date=yesterday";
it("should load correctly", async function() {
diff --git a/tests/UI/specs/UIIntegration_spec.js b/tests/UI/specs/UIIntegration_spec.js
index 18ade5d869..67758c3f04 100644
--- a/tests/UI/specs/UIIntegration_spec.js
+++ b/tests/UI/specs/UIIntegration_spec.js
@@ -74,6 +74,7 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik?
it("should load dashboard2 correctly", async function () {
await page.goto("?" + urlBase + "#?" + generalParams + "&category=Dashboard_Dashboard&subcategory=2");
+ await page.waitForNetworkIdle();
await page.waitForSelector('.widget');
await page.waitForNetworkIdle();
@@ -83,6 +84,7 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik?
it("should load dashboard3 correctly", async function () {
await page.goto("?" + urlBase + "#?" + generalParams + "&category=Dashboard_Dashboard&subcategory=3");
+ await page.waitForNetworkIdle();
await page.waitForSelector('.widget');
await page.waitForNetworkIdle();
await page.evaluate(() => { // give table headers constant width so the screenshot stays the same
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index c2faef267c..f288e64990 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -5225,6 +5225,24 @@ if ($mysql) {
ok( diffTime >= 2000, 'setLinkTrackingTimer(): ' + diffTime);
});
+ test("Browser detector feature Disable and enable", function() {
+ var pattern = /(res=)|(cookie=)/;
+ var tracker = Piwik.getTracker();
+ var siteIdPattern = /idsite/;
+
+ tracker.enableBrowserFeatureDetection();
+ var requestWithFingerprint = tracker.getRequest('hello=world');
+
+ equal(siteIdPattern.test(requestWithFingerprint), true);
+ equal(pattern.test(requestWithFingerprint), true, 'When browser fingerprint is enabled the request should include browser resolution or cookie');
+
+ tracker.disableBrowserFeatureDetection();
+ var requestWithoutFingerprint = tracker.getRequest('hello=world');
+
+ equal(siteIdPattern.test(requestWithoutFingerprint), true);
+ equal(pattern.test(requestWithoutFingerprint), false, 'When browser fingerprint is disabled the request should not include browser resolution or cookie');
+ });
+
<?php
}
?>
diff --git a/tests/lib/screenshot-testing/support/page-renderer.js b/tests/lib/screenshot-testing/support/page-renderer.js
index 1564fe225e..e08da577b8 100644
--- a/tests/lib/screenshot-testing/support/page-renderer.js
+++ b/tests/lib/screenshot-testing/support/page-renderer.js
@@ -305,7 +305,16 @@ PageRenderer.prototype.waitForNetworkIdle = async function () {
await new Promise(resolve => setTimeout(resolve, AJAX_IDLE_THRESHOLD));
}
- await this.waitForLazyImages()
+ await this.waitForLazyImages();
+
+ // wait for any queued vue logic
+ await this.webpage.evaluate(function () {
+ if (window.Vue) {
+ return window.Vue.nextTick(function () {
+ // wait
+ });
+ }
+ });
};
PageRenderer.prototype.waitForLazyImages = async function () {