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:
authorAltamashShaikh <altamash@innocraft.com>2021-11-02 12:44:34 +0300
committerGitHub <noreply@github.com>2021-11-02 12:44:34 +0300
commit1ff74449e73517b1d93bfdaab346ba5e5dd36d78 (patch)
tree13350c39e293a4eed51a26340ba0a7d27f8049fd /plugins/CustomDimensions
parentbd326ab72947aeef0dbef67aba459b1650f5516c (diff)
Added code to filter response for API.getReportPagesMetadata and API.getWidgetMetadata (#18233)
* Added code to filter response for API.getReportPagesMetadata and API.getWidgetMetadata, #DEV-2366 * Updated filters check when the filterkey is array * Added testcases with filter for API.getWidgetMetadata and API.getReportPagesMetadata
Diffstat (limited to 'plugins/CustomDimensions')
-rw-r--r--plugins/CustomDimensions/tests/System/ApiTest.php20
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml1534
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getWidgetMetadata.xml143
3 files changed, 1697 insertions, 0 deletions
diff --git a/plugins/CustomDimensions/tests/System/ApiTest.php b/plugins/CustomDimensions/tests/System/ApiTest.php
index 3b4193ef3e..5932490c81 100644
--- a/plugins/CustomDimensions/tests/System/ApiTest.php
+++ b/plugins/CustomDimensions/tests/System/ApiTest.php
@@ -29,6 +29,8 @@ class ApiTest extends SystemTestCase
self::setAllowedModulesToFilterApiResponse('API.getReportMetadata', array('CustomDimensions'));
self::setAllowedCategoriesToFilterApiResponse('API.getSegmentsMetadata', array('Visitors', 'Behaviour'));
+ self::setAllowedModulesToFilterApiResponse('API.getWidgetMetadata', array('CustomDimensions'));
+ self::setAllowedCategoriesToFilterApiResponse('API.getReportPagesMetadata', array('Visitors', 'Behaviour'));
}
/**
@@ -187,6 +189,24 @@ class ApiTest extends SystemTestCase
)
);
+ $apiToTest[] = array(
+ array('API.getReportPagesMetadata'),
+ array(
+ 'idSite' => 1,
+ 'date' => self::$fixture->dateTime,
+ 'periods' => array('day')
+ )
+ );
+
+ $apiToTest[] = array(
+ array('API.getWidgetMetadata'),
+ array(
+ 'idSite' => 1,
+ 'date' => self::$fixture->dateTime,
+ 'periods' => array('day')
+ )
+ );
+
$apiToTest[] = array(array('API.getProcessedReport'),
array(
'idSite' => 1,
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
new file mode 100644
index 0000000000..4bebb3b636
--- /dev/null
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
@@ -0,0 +1,1534 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <uniqueId>General_Actions.customdimension3</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>customdimension3</id>
+ <name>MyName3</name>
+ <order>72</order>
+ <help />
+ </subcategory>
+ <widgets>
+ <row>
+ <name>MyName3</name>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>203</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>3</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension3</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.customdimension5</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>customdimension5</id>
+ <name>MyName5</name>
+ <order>73</order>
+ <help />
+ </subcategory>
+ <widgets>
+ <row>
+ <name>MyName5</name>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>205</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>5</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension5</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.VisitorInterest_Engagement</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>VisitorInterest_Engagement</id>
+ <name>Engagement</name>
+ <order>46</order>
+ <help>&lt;p&gt;The Engagement section provides reports that help to quantify how many new and returning visitors you get. You can also review reports that break down the average time and number of pages per visit, as well as the number of times a visitor has been to your site and the most common number of days between visits.&lt;/p&gt;&lt;p&gt;This can help you to optimise for frequency and high-interaction visits in addition to maximising your reach.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visits per visit duration</name>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsPerVisitDuration</action>
+ <order>115</order>
+ <parameters>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsPerVisitDuration</action>
+ </parameters>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsPerVisitDuration</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>cloud</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits per number of pages</name>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsPerPage</action>
+ <order>120</order>
+ <parameters>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsPerPage</action>
+ </parameters>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsPerPage</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>cloud</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits by Visit Number</name>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsByVisitCount</action>
+ <order>125</order>
+ <parameters>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsByVisitCount</action>
+ </parameters>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsByVisitCount</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits by Days Since Last Visit</name>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsByDaysSinceLast</action>
+ <order>130</order>
+ <parameters>
+ <module>VisitorInterest</module>
+ <action>getNumberOfVisitsByDaysSinceLast</action>
+ </parameters>
+ <uniqueId>widgetVisitorInterestgetNumberOfVisitsByDaysSinceLast</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Returning Visits Over Time</name>
+ <module>VisitFrequency</module>
+ <action>getEvolutionGraph</action>
+ <order>1</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>graphEvolution</viewDataTable>
+ <module>VisitFrequency</module>
+ <action>getEvolutionGraph</action>
+ </parameters>
+ <uniqueId>widgetVisitFrequencygetEvolutionGraphforceView1viewDataTablegraphEvolution</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphEvolution</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Frequency Overview</name>
+ <module>VisitFrequency</module>
+ <action>get</action>
+ <order>2</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>sparklines</viewDataTable>
+ <module>VisitFrequency</module>
+ <action>get</action>
+ </parameters>
+ <uniqueId>widgetVisitFrequencygetforceView1viewDataTablesparklines</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>sparklines</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Transitions_Transitions</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Transitions</name>
+ <module>Transitions</module>
+ <action>getTransitions</action>
+ <order>99</order>
+ <parameters>
+ <module>Transitions</module>
+ <action>getTransitions</action>
+ </parameters>
+ <uniqueId>widgetTransitionsgetTransitions</uniqueId>
+ <isWide>0</isWide>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.General_Downloads</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>General_Downloads</id>
+ <name>Downloads</name>
+ <order>35</order>
+ <help>&lt;p&gt;In this report, you can see which files your visitors have downloaded.&lt;/p&gt;&lt;p&gt;What Matomo counts as a download is the click on a download link. Whether the download was completed or not isn't known to Matomo.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Downloads</name>
+ <module>Actions</module>
+ <action>getDownloads</action>
+ <order>109</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getDownloads</action>
+ </parameters>
+ <uniqueId>widgetActionsgetDownloads</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Actions_SubmenuPagesEntry</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>Actions_SubmenuPagesEntry</id>
+ <name>Entry pages</name>
+ <order>10</order>
+ <help>&lt;p&gt;This report contains information about the entry pages that were used during the specified period. An entry page is the first page that a user views during their visit.&lt;/p&gt;&lt;p&gt;The entry URLs are displayed as a folder structure.&lt;/p&gt;&lt;p&gt;Use the plus and minus icons on the left to navigate.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Entry pages</name>
+ <module>Actions</module>
+ <action>getEntryPageUrls</action>
+ <order>103</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getEntryPageUrls</action>
+ </parameters>
+ <uniqueId>widgetActionsgetEntryPageUrls</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Entry Page Titles</name>
+ <module>Actions</module>
+ <action>getEntryPageTitles</action>
+ <order>106</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getEntryPageTitles</action>
+ </parameters>
+ <uniqueId>widgetActionsgetEntryPageTitles</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Actions_SubmenuPagesExit</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>Actions_SubmenuPagesExit</id>
+ <name>Exit pages</name>
+ <order>15</order>
+ <help>&lt;p&gt;This report contains information about the exit pages that occurred during the specified period. An exit page is the last page that a user views during their visit.&lt;/p&gt;&lt;p&gt;The exit URLs are displayed as a folder structure.&lt;/p&gt;&lt;p&gt;Use the plus and minus icons on the left to navigate.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Exit pages</name>
+ <module>Actions</module>
+ <action>getExitPageUrls</action>
+ <order>104</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getExitPageUrls</action>
+ </parameters>
+ <uniqueId>widgetActionsgetExitPageUrls</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Exit page titles</name>
+ <module>Actions</module>
+ <action>getExitPageTitles</action>
+ <order>107</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getExitPageTitles</action>
+ </parameters>
+ <uniqueId>widgetActionsgetExitPageTitles</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.General_Outlinks</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>General_Outlinks</id>
+ <name>Outlinks</name>
+ <order>30</order>
+ <help>&lt;p&gt;This report shows a hierarchical list of outlink URLs that were clicked by your visitors. An outlink is a link that leads the visitor away from your website (to another domain).&lt;/p&gt;&lt;p&gt;Use the plus and minus icons on the left to navigate.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Outlinks</name>
+ <module>Actions</module>
+ <action>getOutlinks</action>
+ <order>108</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getOutlinks</action>
+ </parameters>
+ <uniqueId>widgetActionsgetOutlinks</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Actions_SubmenuPageTitles</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>Actions_SubmenuPageTitles</id>
+ <name>Page titles</name>
+ <order>20</order>
+ <help>&lt;p&gt;This report contains information about the titles of the pages that have been visited.&lt;/p&gt;&lt;p&gt;The page title is the HTML &amp;lt;title&amp;gt; Tag that most browsers show in their window title.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Page titles</name>
+ <module>Actions</module>
+ <action>getPageTitles</action>
+ <order>105</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getPageTitles</action>
+ </parameters>
+ <uniqueId>widgetActionsgetPageTitles</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.General_Pages</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>General_Pages</id>
+ <name>Pages</name>
+ <order>5</order>
+ <help>&lt;p&gt;This report contains information about the page URLs that have been visited.&lt;/p&gt;&lt;p&gt;The table is organized hierarchically, the URLs are displayed as a folder structure.&lt;/p&gt;&lt;p&gt;Use the plus and minus icons on the left to navigate.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Pages</name>
+ <module>Actions</module>
+ <action>getPageUrls</action>
+ <order>102</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getPageUrls</action>
+ </parameters>
+ <uniqueId>widgetActionsgetPageUrls</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Actions_SubmenuSitesearch</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Site Search Keywords</name>
+ <module>Actions</module>
+ <action>getSiteSearchKeywords</action>
+ <order>115</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getSiteSearchKeywords</action>
+ </parameters>
+ <uniqueId>widgetActionsgetSiteSearchKeywords</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Pages Following a Site Search</name>
+ <module>Actions</module>
+ <action>getPageUrlsFollowingSiteSearch</action>
+ <order>116</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getPageUrlsFollowingSiteSearch</action>
+ </parameters>
+ <uniqueId>widgetActionsgetPageUrlsFollowingSiteSearch</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Search Keywords with No Results</name>
+ <module>Actions</module>
+ <action>getSiteSearchNoResultKeywords</action>
+ <order>118</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getSiteSearchNoResultKeywords</action>
+ </parameters>
+ <uniqueId>widgetActionsgetSiteSearchNoResultKeywords</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Page Titles Following a Site Search</name>
+ <module>Actions</module>
+ <action>getPageTitlesFollowingSiteSearch</action>
+ <order>119</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getPageTitlesFollowingSiteSearch</action>
+ </parameters>
+ <uniqueId>widgetActionsgetPageTitlesFollowingSiteSearch</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Search Categories</name>
+ <module>Actions</module>
+ <action>getSiteSearchCategories</action>
+ <order>120</order>
+ <parameters>
+ <module>Actions</module>
+ <action>getSiteSearchCategories</action>
+ </parameters>
+ <uniqueId>widgetActionsgetSiteSearchCategories</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Events_Events</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name />
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <order>99</order>
+ <parameters>
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <containerId>Events</containerId>
+ </parameters>
+ <uniqueId>widgetEvents</uniqueId>
+ <isWide>0</isWide>
+ <layout>ByDimension</layout>
+ <isContainer>1</isContainer>
+ <widgets>
+ <row>
+ <name>Event Categories</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Actions</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>Events_Events</id>
+ <name>Events</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>Events</module>
+ <action>getCategory</action>
+ <order>100</order>
+ <parameters>
+ <module>Events</module>
+ <action>getCategory</action>
+ <secondaryDimension>eventAction</secondaryDimension>
+ </parameters>
+ <uniqueId>widgetEventsgetCategorysecondaryDimensioneventAction</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Event Actions</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Actions</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>Events_Events</id>
+ <name>Events</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>Events</module>
+ <action>getAction</action>
+ <order>101</order>
+ <parameters>
+ <module>Events</module>
+ <action>getAction</action>
+ <secondaryDimension>eventName</secondaryDimension>
+ </parameters>
+ <uniqueId>widgetEventsgetActionsecondaryDimensioneventName</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Event Names</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Actions</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>Events_Events</id>
+ <name>Events</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>Events</module>
+ <action>getName</action>
+ <order>102</order>
+ <parameters>
+ <module>Events</module>
+ <action>getName</action>
+ <secondaryDimension>eventAction</secondaryDimension>
+ </parameters>
+ <uniqueId>widgetEventsgetNamesecondaryDimensioneventAction</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.Contents_Contents</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name />
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <order>99</order>
+ <parameters>
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <containerId>Contents</containerId>
+ </parameters>
+ <uniqueId>widgetContents</uniqueId>
+ <isWide>0</isWide>
+ <layout>ByDimension</layout>
+ <isContainer>1</isContainer>
+ <widgets>
+ <row>
+ <name>Content Name</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Actions</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>Contents_Contents</id>
+ <name>Contents</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>Contents</module>
+ <action>getContentNames</action>
+ <order>135</order>
+ <parameters>
+ <module>Contents</module>
+ <action>getContentNames</action>
+ </parameters>
+ <uniqueId>widgetContentsgetContentNames</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Content Piece</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Actions</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>Contents_Contents</id>
+ <name>Contents</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>Contents</module>
+ <action>getContentPieces</action>
+ <order>136</order>
+ <parameters>
+ <module>Contents</module>
+ <action>getContentPieces</action>
+ </parameters>
+ <uniqueId>widgetContentsgetContentPieces</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Actions.PagePerformance_Performance</uniqueId>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>PagePerformance_Performance</id>
+ <name>Performance</name>
+ <order>47</order>
+ <help>&lt;p&gt;The Performance section can help you analyse how fast your website or app is performing on the whole and help discover whether you have specific pages that significantly deviate from your averages.&lt;/p&gt;&lt;p&gt;You can also find reports showing exactly how long each page of your website takes to load and what is contributing to their loading time.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Evolution of page performance metrics</name>
+ <module>PagePerformance</module>
+ <action>getEvolutionGraph</action>
+ <order>1</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>graphStackedBarEvolution</viewDataTable>
+ <module>PagePerformance</module>
+ <action>getEvolutionGraph</action>
+ </parameters>
+ <uniqueId>widgetPagePerformancegetEvolutionGraphforceView1viewDataTablegraphStackedBarEvolution</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphStackedBarEvolution</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name />
+ <module>PagePerformance</module>
+ <action>get</action>
+ <order>2</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>sparklines</viewDataTable>
+ <module>PagePerformance</module>
+ <action>get</action>
+ </parameters>
+ <uniqueId>widgetPagePerformancegetforceView1viewDataTablesparklines</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>sparklines</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Page URLs</name>
+ <module>Actions</module>
+ <action>getPageUrls</action>
+ <order>3</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>tablePerformanceColumns</viewDataTable>
+ <module>Actions</module>
+ <action>getPageUrls</action>
+ <performance>1</performance>
+ </parameters>
+ <uniqueId>widgetActionsgetPageUrlsforceView1viewDataTabletablePerformanceColumnsperformance1</uniqueId>
+ <isWide>1</isWide>
+ <viewDataTable>tablePerformanceColumns</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Page titles</name>
+ <module>Actions</module>
+ <action>getPageTitles</action>
+ <order>4</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>tablePerformanceColumns</viewDataTable>
+ <module>Actions</module>
+ <action>getPageTitles</action>
+ <performance>1</performance>
+ </parameters>
+ <uniqueId>widgetActionsgetPageTitlesforceView1viewDataTabletablePerformanceColumnsperformance1</uniqueId>
+ <isWide>1</isWide>
+ <viewDataTable>tablePerformanceColumns</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.customdimension1</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension1</id>
+ <name>MyName1</name>
+ <order>70</order>
+ <help />
+ </subcategory>
+ <widgets>
+ <row>
+ <name>MyName1</name>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>201</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>1</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension1</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.customdimension2</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension2</id>
+ <name>MyName2</name>
+ <order>71</order>
+ <help />
+ </subcategory>
+ <widgets>
+ <row>
+ <name>MyName2</name>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>202</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>2</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension2</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.customdimension6</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension6</id>
+ <name>MyName6</name>
+ <order>74</order>
+ <help />
+ </subcategory>
+ <widgets>
+ <row>
+ <name>MyName6</name>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>206</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>6</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension6</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.DevicesDetection_Devices</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>DevicesDetection_Devices</id>
+ <name>Devices</name>
+ <order>15</order>
+ <help>&lt;p&gt;The Devices section helps you understand the technology that your visitors are using to access your site. You will see reports on the type of device and specific models to enable you to optimise your site for the most popular devices.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Device type</name>
+ <module>DevicesDetection</module>
+ <action>getType</action>
+ <order>100</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getType</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetType</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Device model</name>
+ <module>DevicesDetection</module>
+ <action>getModel</action>
+ <order>102</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getModel</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetModel</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Device brand</name>
+ <module>DevicesDetection</module>
+ <action>getBrand</action>
+ <order>104</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getBrand</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetBrand</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Screen Resolution</name>
+ <module>Resolution</module>
+ <action>getResolution</action>
+ <order>108</order>
+ <parameters>
+ <module>Resolution</module>
+ <action>getResolution</action>
+ </parameters>
+ <uniqueId>widgetResolutiongetResolution</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.DevicesDetection_Software</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>DevicesDetection_Software</id>
+ <name>Software</name>
+ <order>20</order>
+ <help>&lt;p&gt;The Software section shows the operating systems, browsers and plugins that your visitors are using to access the site so that you can optimise your site to ensure it is fully compatible with the most popular configurations.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Operating System versions</name>
+ <module>DevicesDetection</module>
+ <action>getOsVersions</action>
+ <order>102</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getOsVersions</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetOsVersions</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Browsers</name>
+ <module>DevicesDetection</module>
+ <action>getBrowsers</action>
+ <order>105</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getBrowsers</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetBrowsers</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Browser version</name>
+ <module>DevicesDetection</module>
+ <action>getBrowserVersions</action>
+ <order>106</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getBrowserVersions</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetBrowserVersions</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Configurations</name>
+ <module>Resolution</module>
+ <action>getConfiguration</action>
+ <order>107</order>
+ <parameters>
+ <module>Resolution</module>
+ <action>getConfiguration</action>
+ </parameters>
+ <uniqueId>widgetResolutiongetConfiguration</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Operating System families</name>
+ <module>DevicesDetection</module>
+ <action>getOsFamilies</action>
+ <order>108</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getOsFamilies</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetOsFamilies</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Browser engines</name>
+ <module>DevicesDetection</module>
+ <action>getBrowserEngines</action>
+ <order>110</order>
+ <parameters>
+ <module>DevicesDetection</module>
+ <action>getBrowserEngines</action>
+ </parameters>
+ <uniqueId>widgetDevicesDetectiongetBrowserEngines</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphPie</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Browser Plugins</name>
+ <module>DevicePlugins</module>
+ <action>getPlugin</action>
+ <order>113</order>
+ <parameters>
+ <module>DevicePlugins</module>
+ <action>getPlugin</action>
+ </parameters>
+ <uniqueId>widgetDevicePluginsgetPlugin</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.General_Overview</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>General_Overview</id>
+ <name>Overview</name>
+ <order>2</order>
+ <help>&lt;p&gt;The Visitors Overview helps you understand the popularity of your site. It does this by providing charts that show how many visits your site is receiving over a selected period and the average level of engagement for key features, such as searches and downloads.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visits Over Time</name>
+ <module>VisitsSummary</module>
+ <action>getEvolutionGraph</action>
+ <order>5</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>graphEvolution</viewDataTable>
+ <module>VisitsSummary</module>
+ <action>getEvolutionGraph</action>
+ </parameters>
+ <uniqueId>widgetVisitsSummarygetEvolutionGraphforceView1viewDataTablegraphEvolution</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphEvolution</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits Overview</name>
+ <module>VisitsSummary</module>
+ <action>get</action>
+ <order>10</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>sparklines</viewDataTable>
+ <module>VisitsSummary</module>
+ <action>get</action>
+ </parameters>
+ <uniqueId>widgetVisitsSummarygetforceView1viewDataTablesparklines</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>sparklines</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.UserCountry_SubmenuLocations</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>UserCountry_SubmenuLocations</id>
+ <name>Locations</name>
+ <order>10</order>
+ <help>&lt;p&gt;The Locations section is the best way to find out where people are when they visit your site. It reveals the countries, continents, regions, cities that you visitors come from, in tables and map form. Additionally, you can see what language their browser is set to, helping identify international visitors in alternative locations.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visitor Map</name>
+ <module>UserCountryMap</module>
+ <action>visitorMap</action>
+ <order>1</order>
+ <parameters>
+ <module>UserCountryMap</module>
+ <action>visitorMap</action>
+ </parameters>
+ <uniqueId>widgetUserCountryMapvisitorMap</uniqueId>
+ <isWide>0</isWide>
+ </row>
+ <row>
+ <name>Country</name>
+ <module>UserCountry</module>
+ <action>getCountry</action>
+ <order>105</order>
+ <parameters>
+ <module>UserCountry</module>
+ <action>getCountry</action>
+ </parameters>
+ <uniqueId>widgetUserCountrygetCountry</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name />
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <order>106</order>
+ <parameters>
+ <module>CoreHome</module>
+ <action>renderWidgetContainer</action>
+ <containerId>Continent</containerId>
+ </parameters>
+ <uniqueId>widgetContinent</uniqueId>
+ <isWide>0</isWide>
+ <layout />
+ <isContainer>1</isContainer>
+ <widgets>
+ <row>
+ <name>Continent</name>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>UserCountry_SubmenuLocations</id>
+ <name>Locations</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>UserCountry</module>
+ <action>getContinent</action>
+ <order>106</order>
+ <parameters>
+ <module>UserCountry</module>
+ <action>getContinent</action>
+ </parameters>
+ <uniqueId>widgetUserCountrygetContinent</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name />
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>99</order>
+ <icon />
+ <help />
+ </category>
+ <subcategory>
+ <id>UserCountry_SubmenuLocations</id>
+ <name>Locations</name>
+ <order>99</order>
+ <help />
+ </subcategory>
+ <module>UserCountry</module>
+ <action>getDistinctCountries</action>
+ <order>106</order>
+ <parameters>
+ <module>UserCountry</module>
+ <action>getDistinctCountries</action>
+ </parameters>
+ <uniqueId>widgetUserCountrygetDistinctCountries</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <name>Region</name>
+ <module>UserCountry</module>
+ <action>getRegion</action>
+ <order>107</order>
+ <parameters>
+ <module>UserCountry</module>
+ <action>getRegion</action>
+ </parameters>
+ <uniqueId>widgetUserCountrygetRegion</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Browser language</name>
+ <module>UserLanguage</module>
+ <action>getLanguage</action>
+ <order>108</order>
+ <parameters>
+ <module>UserLanguage</module>
+ <action>getLanguage</action>
+ </parameters>
+ <uniqueId>widgetUserLanguagegetLanguage</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>City</name>
+ <module>UserCountry</module>
+ <action>getCity</action>
+ <order>110</order>
+ <parameters>
+ <module>UserCountry</module>
+ <action>getCity</action>
+ </parameters>
+ <uniqueId>widgetUserCountrygetCity</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Language code</name>
+ <module>UserLanguage</module>
+ <action>getLanguageCode</action>
+ <order>111</order>
+ <parameters>
+ <module>UserLanguage</module>
+ <action>getLanguageCode</action>
+ </parameters>
+ <uniqueId>widgetUserLanguagegetLanguageCode</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.VisitTime_SubmenuTimes</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>VisitTime_SubmenuTimes</id>
+ <name>Times</name>
+ <order>35</order>
+ <help>&lt;p&gt;The Times section shows you when people are visiting your site. You can see the most popular local times your users visit at, so you can understand where your site fits into their life. Additionally, it shows the most popular server times, which can reveal demands on your technology stack.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visits per local time</name>
+ <module>VisitTime</module>
+ <action>getVisitInformationPerLocalTime</action>
+ <order>115</order>
+ <parameters>
+ <module>VisitTime</module>
+ <action>getVisitInformationPerLocalTime</action>
+ </parameters>
+ <uniqueId>widgetVisitTimegetVisitInformationPerLocalTime</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphVerticalBar</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits per server time</name>
+ <module>VisitTime</module>
+ <action>getVisitInformationPerServerTime</action>
+ <order>120</order>
+ <parameters>
+ <module>VisitTime</module>
+ <action>getVisitInformationPerServerTime</action>
+ </parameters>
+ <uniqueId>widgetVisitTimegetVisitInformationPerServerTime</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphVerticalBar</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>Visits by Day of Week</name>
+ <module>VisitTime</module>
+ <action>getByDayOfWeek</action>
+ <order>125</order>
+ <parameters>
+ <module>VisitTime</module>
+ <action>getByDayOfWeek</action>
+ </parameters>
+ <uniqueId>widgetVisitTimegetByDayOfWeek</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>graphVerticalBar</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.UserCountryMap_RealTimeMap</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>UserCountryMap_RealTimeMap</id>
+ <name>Real-time Map</name>
+ <order>9</order>
+ <help>&lt;p&gt;The Real-time Map shows the location of visitors on your site within the last 30 minutes. Large orange bubbles represent more recent visits, while smaller grey bubbles represent older visits. This data refreshes every five seconds, and new visitors appear with a flashing effect.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Real-time Map</name>
+ <module>UserCountryMap</module>
+ <action>realtimeMap</action>
+ <order>15</order>
+ <parameters>
+ <module>UserCountryMap</module>
+ <action>realtimeMap</action>
+ </parameters>
+ <uniqueId>widgetUserCountryMaprealtimeMap</uniqueId>
+ <isWide>1</isWide>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.General_RealTime</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>General_RealTime</id>
+ <name>Real-time</name>
+ <order>7</order>
+ <help>&lt;p&gt;The Visits in Real-time report shows the real-time flow of visits to your website. It includes a real-time counter of your visits and page views in the last 24 hours and the previous 30 minutes.&lt;/p&gt;&lt;p&gt;This report refreshes every 5 seconds and displays new visits (or existing visitors that view a new page) at the top of the list with a fade-in effect.&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visits in Real-time</name>
+ <module>Live</module>
+ <action>widget</action>
+ <order>20</order>
+ <parameters>
+ <module>Live</module>
+ <action>widget</action>
+ </parameters>
+ <uniqueId>widgetLivewidget</uniqueId>
+ <isWide>1</isWide>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.Live_VisitorLog</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Visits Log</name>
+ <module>Live</module>
+ <action>getLastVisitsDetails</action>
+ <order>10</order>
+ <parameters>
+ <forceView>1</forceView>
+ <viewDataTable>VisitorLog</viewDataTable>
+ <module>Live</module>
+ <action>getLastVisitsDetails</action>
+ <small>1</small>
+ </parameters>
+ <uniqueId>widgetLivegetLastVisitsDetailsforceView1viewDataTableVisitorLogsmall1</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>VisitorLog</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.UserId_UserReportTitle</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <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>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>User IDs</name>
+ <module>UserId</module>
+ <action>getUsers</action>
+ <order>109</order>
+ <parameters>
+ <module>UserId</module>
+ <action>getUsers</action>
+ </parameters>
+ <uniqueId>widgetUserIdgetUsers</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+ <row>
+ <uniqueId>General_Visitors.CustomVariables_CustomVariables</uniqueId>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>CustomVariables_CustomVariables</id>
+ <name>Custom Variables</name>
+ <order>45</order>
+ <help>&lt;p&gt;This report contains information about your Custom Variables. Click on a variable name to see the distribution of the values.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/custom-variables/&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Read more about this topic in the online guide.&lt;/a&gt;&lt;/p&gt;</help>
+ </subcategory>
+ <widgets>
+ <row>
+ <name>Custom Variables</name>
+ <module>CustomVariables</module>
+ <action>getCustomVariables</action>
+ <order>110</order>
+ <parameters>
+ <module>CustomVariables</module>
+ <action>getCustomVariables</action>
+ </parameters>
+ <uniqueId>widgetCustomVariablesgetCustomVariables</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ </widgets>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getWidgetMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getWidgetMetadata.xml
new file mode 100644
index 0000000000..cd5478b2f4
--- /dev/null
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getWidgetMetadata.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <name>MyName1</name>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension1</id>
+ <name>MyName1</name>
+ <order>70</order>
+ <help />
+ </subcategory>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>201</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>1</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension1</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>MyName2</name>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension2</id>
+ <name>MyName2</name>
+ <order>71</order>
+ <help />
+ </subcategory>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>202</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>2</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension2</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>MyName6</name>
+ <category>
+ <id>General_Visitors</id>
+ <name>Visitors</name>
+ <order>5</order>
+ <icon>icon-reporting-visitors</icon>
+ <help>&lt;p&gt;The Visitors pages tell you things about who your visitors are. Things like where your visitors came from, what devices and browsers they're using and when they generally visit your website. Understand, in the aggregate, who your audience is, and look for outliers to see how your audience could grow.&lt;/p&gt;&lt;p&gt;In addition to general information about your visitors, you can also use the &lt;a href=&quot;#&quot; onclick=&quot;this.href=broadcast.buildReportingUrl('category=General_Visitors&amp;subcategory=Live_VisitorLog')&quot;&gt;Visits Log&lt;/a&gt; to see what occurred in every individual visit.&lt;/p&gt;</help>
+ </category>
+ <subcategory>
+ <id>customdimension6</id>
+ <name>MyName6</name>
+ <order>74</order>
+ <help />
+ </subcategory>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>206</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>6</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension6</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>MyName3</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>customdimension3</id>
+ <name>MyName3</name>
+ <order>72</order>
+ <help />
+ </subcategory>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>203</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>3</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension3</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+ <row>
+ <name>MyName5</name>
+ <category>
+ <id>General_Actions</id>
+ <name>Behaviour</name>
+ <order>10</order>
+ <icon>icon-reporting-actions</icon>
+ <help />
+ </category>
+ <subcategory>
+ <id>customdimension5</id>
+ <name>MyName5</name>
+ <order>73</order>
+ <help />
+ </subcategory>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <order>205</order>
+ <parameters>
+ <module>CustomDimensions</module>
+ <action>getCustomDimension</action>
+ <idDimension>5</idDimension>
+ </parameters>
+ <uniqueId>widgetCustomDimensionsgetCustomDimensionidDimension5</uniqueId>
+ <isWide>0</isWide>
+ <viewDataTable>table</viewDataTable>
+ <isReport>1</isReport>
+ </row>
+</result> \ No newline at end of file