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:
authorStefan Giehl <stefan@matomo.org>2020-02-11 11:38:48 +0300
committerGitHub <noreply@github.com>2020-02-11 11:38:47 +0300
commit5d2dab75e3654126ed95ea72b58b4c225ac59492 (patch)
tree7886dcc7c8593906fbebbca49c7946405bcfa2cc /plugins
parentab1e70016dde3ef93498bca99d0aa8b38e6d7f38 (diff)
Merge branch 3.x-dev into 4.x-dev (#15543)
* Updates search engine and social definitions (#15384) * updates device detector to latest release (#15388) * updates device detector to latest release * updates tests * translation update (#15389) * Fix Could not get the lock for ID, when creating a site (#15401) * Lock key start * do not empty key lock Co-authored-by: Thomas Steur <tsteur@users.noreply.github.com> * 3.13.1 * submodule updates * Use correct name in update available message (#15423) * Fix removing user capabilities (#15422) * Order of implode() args, avoid E_NOTICE in PHP7.4 (#15428) * Fixes possible php warning in visitor log (#15442) * silence is_executable call (#15446) * Make sure geolocation admin experience is consistent if user is not using GeoIp2 plugin. (#15447) * Fix referrers test. (#15448) * Ensure to close visitor popover correctly (#15443) * Fixes possible warning (#15453) * Forward instance_id from local config when reseting config during tests. (#15445) * Add event that allows plugins to disable archiving for certain periods/sites if they want. (#15457) * Add event that allows plugins to disable archiving for certain periods/sites if they want. * apply review feedback * Fix possible warning for columns without index (#15467) * Day range archiving issue (#15462) * Improve lock ID check for max length (#15407) Better patch for https://github.com/matomo-org/matomo/pull/15401 which was merged last minute... This way it always works even when someone calls `acquireLock` directly instead of `execute` Pushing this for now into 3.x-dev but can also put it into 4.x-dev directly but then there might be merge conflicts when merging 3.x-dev into 4.x-dev * Use SameSite none for session token when embedded into iframe (#15439) * Make sure tracking works in IE9 and lower (#15480) * Mention Joomla install FAQ (#15481) * Make sparklines work when mbstring extension is not installed (#15489) 1) Too few arguments to function mb_strtolower(), 1 passed in matomo/vendor/davaxi/sparkline/src/Sparkline/StyleTrait.php on line 129 and exactly 2 expected 2) mb_strlen is not defined * update screenshots (#15488) * 3.13.2-rc1 * Use safemode when running CLI commands (#15472) * update icons submodule (#15490) * update icons submodule * update UI tests * Fix possible undefined index notice (#15502) * Use latest davaxi/sparkline release (#15464) * translation update * submodule updates * Fix deprecation notice (#15530) see https://github.com/matomo-org/matomo/pull/15467#issuecomment-583283444 * 3.13.2-rc2 * update cache component (#15536) * fixes copy dashboard to user for more than 100 users (#15538) cherry picking #15424 to fix #15420 in 3.x-dev * Add missing return statement. (#15539) * 3.13.2 * update tests * update tests Co-authored-by: Matthieu Aubry <mattab@users.noreply.github.com> Co-authored-by: Thomas Steur <tsteur@users.noreply.github.com> Co-authored-by: Peter Upfold <pgithub@upfold.org.uk> Co-authored-by: diosmosis <diosmosis@users.noreply.github.com> Co-authored-by: Lukas Winkler <github@lw1.at>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_browserName__API.getSuggestedValuesForSegment.xml7
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_operatingSystemName__API.getSuggestedValuesForSegment.xml1
-rw-r--r--plugins/CoreAdminHome/javascripts/optOut.js20
-rw-r--r--plugins/CoreHome/templates/_headerMessage.twig2
-rw-r--r--plugins/CoreVisualizations/Visualizations/HtmlTable.php5
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_loaded_token_auth.png4
-rw-r--r--plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png4
-rw-r--r--plugins/Live/Visualizations/VisitorLog.php7
-rw-r--r--plugins/Live/javascripts/visitorProfile.js29
m---------plugins/Morpheus/icons0
-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_unconfirmed.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/Referrers/tests/System/ApiTest.php14
-rw-r--r--plugins/SitesManager/templates/_trackingCodeEmail.twig1
-rw-r--r--plugins/SitesManager/templates/siteWithoutData.twig1
-rw-r--r--plugins/UserCountry/Controller.php6
-rw-r--r--plugins/UserCountry/lang/el.json3
-rw-r--r--plugins/UserCountry/lang/en.json3
-rw-r--r--plugins/UserCountry/lang/es-ar.json3
-rw-r--r--plugins/UserCountry/lang/pt-br.json3
-rw-r--r--plugins/UserCountry/lang/sq.json3
-rw-r--r--plugins/UserCountry/lang/tr.json3
-rw-r--r--plugins/UserCountry/templates/adminIndex.twig13
-rw-r--r--plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html2
26 files changed, 106 insertions, 44 deletions
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 f2c3a13147..deede069b3 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
@@ -18,6 +18,7 @@
<row>Amiga Aweb</row>
<row>Atomic Web Browser</row>
<row>Avast Secure Browser</row>
+ <row>AVG Secure Browser</row>
<row>Beaker Browser</row>
<row>Beamrise</row>
<row>BlackBerry Browser</row>
@@ -56,6 +57,7 @@
<row>Chrome Webview</row>
<row>dbrowser</row>
<row>Deepnet Explorer</row>
+ <row>Delta Browser</row>
<row>Dolphin</row>
<row>Dorado</row>
<row>Dooble</row>
@@ -77,6 +79,7 @@
<row>Fennec</row>
<row>Firefox</row>
<row>Firefox Focus</row>
+ <row>Firefox Reality</row>
<row>Firefox Rocket</row>
<row>Flock</row>
<row>Firefox Mobile</row>
@@ -117,6 +120,7 @@
<row>LieBaoFast</row>
<row>LG Browser</row>
<row>Links</row>
+ <row>Lovense Browser</row>
<row>LuaKit</row>
<row>Lunascape</row>
<row>Lynx</row>
@@ -149,6 +153,7 @@
<row>Odyssey Web Browser</row>
<row>Off By One</row>
<row>ONE Browser</row>
+ <row>Opera GX</row>
<row>Opera Neon</row>
<row>Opera Devices</row>
<row>Opera Mini</row>
@@ -156,6 +161,7 @@
<row>Opera</row>
<row>Opera Next</row>
<row>Opera Touch</row>
+ <row>Ordissimo</row>
<row>Oregano</row>
<row>Origyn Web Browser</row>
<row>Openwave Mobile Browser</row>
@@ -199,6 +205,7 @@
<row>Sunrise</row>
<row>SuperBird</row>
<row>Super Fast Browser</row>
+ <row>START Internet Browser</row>
<row>Streamy</row>
<row>Swiftfox</row>
<row>Seznam Browser</row>
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 cda5b1843b..ca3ca7f06b 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
@@ -47,6 +47,7 @@
<row>OS/2</row>
<row>OSF1</row>
<row>OpenBSD</row>
+ <row>Ordissimo</row>
<row>PlayStation Portable</row>
<row>PlayStation</row>
<row>Red Hat</row>
diff --git a/plugins/CoreAdminHome/javascripts/optOut.js b/plugins/CoreAdminHome/javascripts/optOut.js
index cbca7a8181..03ba11d927 100644
--- a/plugins/CoreAdminHome/javascripts/optOut.js
+++ b/plugins/CoreAdminHome/javascripts/optOut.js
@@ -4,6 +4,20 @@ function getDomain(url)
return url.replace(/^http[s]?:\/\//, '').replace(/\/.*/, '');
}
+function addEventListener(element, eventType, eventHandler) {
+ if (element.addEventListener) {
+ element.addEventListener(eventType, eventHandler, false);
+
+ return true;
+ }
+
+ if (element.attachEvent) {
+ return element.attachEvent('on' + eventType, eventHandler);
+ }
+
+ element['on' + eventType] = eventHandler;
+}
+
// Strips off protocol and trailing path and URL params
function getHostName(url)
{
@@ -72,7 +86,7 @@ function submitForm(e, form) {
// Send a message to the parent window so that it can set a first-party cookie (a fallback in case
// third-party cookies are not permitted by the browser).
if (typeof parent === 'object' && typeof parent.postMessage !== 'undefined') {
- window.addEventListener('message', function(e) {
+ addEventListener(window, 'message', function(e) {
var data = getDataIfMessageIsForThisFrame(e);
if (!data || typeof data.maq_confirm_opted_in === 'undefined') {
return;
@@ -172,7 +186,7 @@ function showWarningIfCookiesDisabled() {
var initializationTimer = null;
-document.addEventListener('DOMContentLoaded', function() {
+addEventListener(document, 'DOMContentLoaded', function() {
showWarningIfCookiesDisabled();
var trackVisitsCheckbox = document.getElementById('trackVisits');
@@ -200,7 +214,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Listener for initialization message from parent window
// This will tell us the initial state the form should be in
// based on the first-party cookie value (which we can't access directly)
-window.addEventListener('message', function(e) {
+addEventListener(window, 'message', function(e) {
var data = getDataIfMessageIsForThisFrame(e);
if (!data) {
return;
diff --git a/plugins/CoreHome/templates/_headerMessage.twig b/plugins/CoreHome/templates/_headerMessage.twig
index 5633fca3cb..46ecd55c18 100644
--- a/plugins/CoreHome/templates/_headerMessage.twig
+++ b/plugins/CoreHome/templates/_headerMessage.twig
@@ -43,7 +43,7 @@
<br />
{% elseif latest_version_available and not isPiwikDemo and hasSomeViewAccess and not isUserIsAnonymous %}
{% set updateSubject = 'General_NewUpdatePiwikX'|translate(latest_version_available)|e('url') %}
- {{ 'General_PiwikXIsAvailablePleaseNotifyPiwikAdmin'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/'>Piwik</a> <a target='_blank' rel='noreferrer noopener' href='https://matomo.org/changelog/'>" ~ latest_version_available ~ "</a>", "<a href='mailto:" ~ superUserEmails ~ "?subject=" ~ updateSubject ~ "'>", "</a>")|raw }}
+ {{ 'General_PiwikXIsAvailablePleaseNotifyPiwikAdmin'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/'>Matomo</a> <a target='_blank' rel='noreferrer noopener' href='https://matomo.org/changelog/'>" ~ latest_version_available ~ "</a>", "<a href='mailto:" ~ superUserEmails ~ "?subject=" ~ updateSubject ~ "'>", "</a>")|raw }}
<br />
{% endif %}
diff --git a/plugins/CoreVisualizations/Visualizations/HtmlTable.php b/plugins/CoreVisualizations/Visualizations/HtmlTable.php
index 21116fefb9..42c0798fbf 100644
--- a/plugins/CoreVisualizations/Visualizations/HtmlTable.php
+++ b/plugins/CoreVisualizations/Visualizations/HtmlTable.php
@@ -225,9 +225,10 @@ class HtmlTable extends Visualization
foreach ($this->dataTable->getRows() as $row) {
foreach ($this->report->getMetrics() as $column => $translation) {
- $indexColumn = $columnNamesToIndices[$column]; // TODO: This might fail for goal specific columns...
+ // Try to check the column by it's index (not possible for all metrics, like custom columns)
+ $indexColumn = !empty($columnNamesToIndices[$column]) ? $columnNamesToIndices[$column] : null;
- $value = $row->getColumn($indexColumn) ?: $row->getColumn($column) ?: 0;
+ $value = (($indexColumn && $row->getColumn($indexColumn)) ? $row->getColumn($indexColumn) : $row->getColumn($column)) ?: 0;
if ($column == 'label') {
continue;
}
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_loaded_token_auth.png b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_loaded_token_auth.png
index 53eccc51ba..75623864d3 100644
--- a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_loaded_token_auth.png
+++ b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_loaded_token_auth.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ea8954c9b69f59fe06edb66b9959f3b826786f58f84367bc6a0bab15f67715d2
-size 714817
+oid sha256:8135a587491cf93c53374854053cb54776d8666611b3e6869578edcbd29a4bb7
+size 714834
diff --git a/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png b/plugins/Dashboard/tests/UI/expected-screenshots/Dashboard_removed.png
index 53eccc51ba..75623864d3 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:ea8954c9b69f59fe06edb66b9959f3b826786f58f84367bc6a0bab15f67715d2
-size 714817
+oid sha256:8135a587491cf93c53374854053cb54776d8666611b3e6869578edcbd29a4bb7
+size 714834
diff --git a/plugins/Live/Visualizations/VisitorLog.php b/plugins/Live/Visualizations/VisitorLog.php
index d6c3cd08a2..937bfec893 100644
--- a/plugins/Live/Visualizations/VisitorLog.php
+++ b/plugins/Live/Visualizations/VisitorLog.php
@@ -260,11 +260,14 @@ class VisitorLog extends Visualization
}
$action = $group['pageviewAction'];
+ $actionUrl = !empty($action['url']) ? $action['url'] : '';
+ $actionTitle = !empty($action['pageTitle']) ? $action['pageTitle'] : '';
$lastActionGroup = $actionGroups[$previousId];
+ $lastGroupUrl = !empty($lastActionGroup['pageviewAction']['url']) ? $lastActionGroup['pageviewAction']['url'] : '';
+ $lastGroupTitle = !empty($lastActionGroup['pageviewAction']['pageTitle']) ? $lastActionGroup['pageviewAction']['pageTitle'] : '';
$isLastGroupEmpty = empty($actionGroups[$previousId]['actionsOnPage']);
- $isPageviewActionSame = $lastActionGroup['pageviewAction']['url'] == $action['url']
- && $lastActionGroup['pageviewAction']['pageTitle'] == $action['pageTitle'];
+ $isPageviewActionSame = $lastGroupUrl == $actionUrl && $lastGroupTitle == $actionTitle;
// if the current action has the same url/action name as the last, merge w/ the last action group
if ($isLastGroupEmpty
diff --git a/plugins/Live/javascripts/visitorProfile.js b/plugins/Live/javascripts/visitorProfile.js
index 021908f2e8..c533561887 100644
--- a/plugins/Live/javascripts/visitorProfile.js
+++ b/plugins/Live/javascripts/visitorProfile.js
@@ -71,14 +71,27 @@
var self = this,
$element = this.$element;
- $element.on('click', '.visitor-profile-close', function (e) {
- e.preventDefault();
- try {
- $element.tooltip('destroy');
- } catch (e) {}
- broadcast.propagateNewPopoverParameter(false);
- return false;
- });
+ // if there are no popover params in stack, simply close the popover
+ if (!broadcast.popoverParamStack.length) {
+ $element.on('click', '.visitor-profile-close', function (e) {
+ e.preventDefault();
+ try {
+ $element.tooltip('destroy');
+ } catch (e) {
+ }
+ Piwik_Popover.close();
+ });
+ } else {
+ $element.on('click', '.visitor-profile-close', function (e) {
+ e.preventDefault();
+ try {
+ $element.tooltip('destroy');
+ } catch (e) {
+ }
+ broadcast.propagateNewPopoverParameter(false);
+ return false;
+ });
+ }
$element.on('click', '.visitor-profile-toggle-actions', function (e) {
e.preventDefault();
diff --git a/plugins/Morpheus/icons b/plugins/Morpheus/icons
-Subproject d22c22848b3b8f19a031f396745fcaeaefb1abc
+Subproject 44add4357b4394777e53ecea987205cb70eee28
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 2042ab5b23..d47260c242 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:b65fb3d081c59a5d3925d2cf02e4ba233731e4bac89f77567362be0f31fb5603
-size 544457
+oid sha256:d84b46c2698d65715ea9030081117abc91fbbe8e82ebf8ae6fddf59812861574
+size 578891
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_unconfirmed.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_unconfirmed.png
index f86a2bb290..4aff2f54ba 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_unconfirmed.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_unconfirmed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:85f5a6e7f0bf43cad861da1fd9a1ae7ceccda110091b25b023ddc0408f065151
-size 9192
+oid sha256:e41e6690c96286c93a7c76fc81d2dedeb49e14391c7022701412bbd23a162087
+size 9193
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 2042ab5b23..d226aeba91 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:b65fb3d081c59a5d3925d2cf02e4ba233731e4bac89f77567362be0f31fb5603
-size 544457
+oid sha256:339c7870fa7f06734f81ecffd150be3d6f65ddfe9f9e81121c5ebecb24102c62
+size 579155
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 a04da828f7..d47260c242 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:5bcb002145fd55f0987253acd06ca8d494174c3820ef91812c2d04fb760ba1db
-size 544528
+oid sha256:d84b46c2698d65715ea9030081117abc91fbbe8e82ebf8ae6fddf59812861574
+size 578891
diff --git a/plugins/Referrers/tests/System/ApiTest.php b/plugins/Referrers/tests/System/ApiTest.php
index be8ad2c2e6..ffcd06a46a 100644
--- a/plugins/Referrers/tests/System/ApiTest.php
+++ b/plugins/Referrers/tests/System/ApiTest.php
@@ -220,24 +220,24 @@ class ApiTest extends SystemTestCase
$t = Fixture::getTracker($idSite, $dateTime . ' 00:01:02', $defaultInit = true);
// track an HTTPS request
- $t->setUrlReferrer('https://t.umblr.com/');
+ $t->setUrlReferrer('https://somewebsite.com/');
$t->setUrl('http://piwik.net/');
$t->doTrackPageView('My Title');
// track an HTTP request
$t->setForceNewVisit(true);
- $t->setUrlReferrer('http://t.umblr.com/');
+ $t->setUrlReferrer('http://somewebsite.com/');
$t->setUrl('http://piwik.net/');
$t->doTrackPageView('My Title');
/** @var DataTable $visits */
$visits = Request::processRequest(
- 'Referrers.getWebsites',
+ 'Referrers.getWebsites',
array('idSite' => $idSite, 'period' => 'day', 'date' => $dateTime, 'flat' => 1)
);
$firstRow = $visits->getFirstRow();
- $this->assertEquals('t.umblr.com/index', $firstRow->getColumn('label'));
+ $this->assertEquals('somewebsite.com/index', $firstRow->getColumn('label'));
$this->assertEquals(2, $firstRow->getColumn('nb_visits'));
}
@@ -248,19 +248,19 @@ class ApiTest extends SystemTestCase
$t = Fixture::getTracker($idSite, $dateTime . ' 00:01:02', $defaultInit = true);
// track an HTTPS request
- $t->setUrlReferrer('https://t.umblr.com/');
+ $t->setUrlReferrer('https://somewebsite.com/');
$t->setUrl('http://piwik.net/');
$t->doTrackPageView('My Title');
// track an HTTP request
$t->setForceNewVisit(true);
- $t->setUrlReferrer('http://t.umblr.com/');
+ $t->setUrlReferrer('http://somewebsite.com/');
$t->setUrl('http://piwik.net/');
$t->doTrackPageView('My Title');
/** @var DataTable $visits */
$visits = Request::processRequest(
- 'Referrers.getWebsites',
+ 'Referrers.getWebsites',
array('idSite' => $idSite, 'period' => 'day', 'date' => $dateTime)
);
diff --git a/plugins/SitesManager/templates/_trackingCodeEmail.twig b/plugins/SitesManager/templates/_trackingCodeEmail.twig
index 156eef5530..be2a0e2362 100644
--- a/plugins/SitesManager/templates/_trackingCodeEmail.twig
+++ b/plugins/SitesManager/templates/_trackingCodeEmail.twig
@@ -14,6 +14,7 @@ WordPress: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-track
Squarespace: https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/
Wix: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/
SharePoint: https://matomo.org/faq/how-to-install/faq_19424/
+Joomla: https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/
** {{ 'SitesManager_Integrations'|translate }}
{{ 'CoreAdminHome_JSTrackingIntro3a'|translate('', '') }}
diff --git a/plugins/SitesManager/templates/siteWithoutData.twig b/plugins/SitesManager/templates/siteWithoutData.twig
index f4e13772e4..19e831c00e 100644
--- a/plugins/SitesManager/templates/siteWithoutData.twig
+++ b/plugins/SitesManager/templates/siteWithoutData.twig
@@ -48,6 +48,7 @@
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/'>Squarespace</a>
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/'>Wix</a>
| <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/how-to-install/faq_19424/'>SharePoint</a>
+ | <a target="_blank" rel="noreferrer noopener" href='https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/'>Joomla</a>
<br >
<br >
{{ 'SitesManager_ExtraInformationNeeded'|translate }}
diff --git a/plugins/UserCountry/Controller.php b/plugins/UserCountry/Controller.php
index 84e7fd2376..97b5eadf92 100644
--- a/plugins/UserCountry/Controller.php
+++ b/plugins/UserCountry/Controller.php
@@ -70,6 +70,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
}
$view->isThereWorkingProvider = $isThereWorkingProvider;
+ $view->notUsingGeoIpPlugin = !Manager::getInstance()->isPluginActivated('GeoIp2')
+ && !Manager::getInstance()->isPluginActivated('GeoIp');
+
// if using either the Apache, Nginx or PECL module, they are working and there are no databases
// in misc, then the databases are located outside of Piwik, so we cannot update them
$view->showGeoIPUpdateSection = true;
@@ -80,6 +83,9 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
) {
$view->showGeoIPUpdateSection = false;
}
+ if ($view->notUsingGeoIpPlugin) {
+ $view->showGeoIPUpdateSection = false;
+ }
$view->isInternetEnabled = SettingsPiwik::isInternetEnabled();
diff --git a/plugins/UserCountry/lang/el.json b/plugins/UserCountry/lang/el.json
index b282ebbdd7..e23f0f9a9d 100644
--- a/plugins/UserCountry/lang/el.json
+++ b/plugins/UserCountry/lang/el.json
@@ -98,6 +98,7 @@
"UpdaterScheduledForNextRun": "Είναι προγραμματισμένο για εκτέλεση κατά την εκτέλεση του επόμενου archive.php από το cron.",
"UpdaterWasLastRun": "Το πρόγραμμα ενημέρωσης εκτελέστηκε τελευταία στις %s.",
"UpdaterWillRunNext": "Είναι προγραμματισμένο για εκτέλεση στις %s.",
- "WidgetLocation": "Τοποθεσία Επισκέπτη"
+ "WidgetLocation": "Τοποθεσία Επισκέπτη",
+ "InstallGeoIp2": "Το Matomo προτείνει τη χρήση των βάσεων %1$sdbip%2$s, αλλά αυτό απαιτεί τη χρήση του πρόσθετου GeoIp2. Αν το εγκαταστήσετε και το ενεργοποιήσετε (που ενδεχομένως να χρειαστεί μια μακρόχρονη διαδικασία), θα μπορέσετε να ξεκινήσετε τη χρήση των βάσεων %1$sdbip%2$s. (Αγνοήστε το παρόν αν χρησιμοποιείτε ήδη τρίτο πρόσθετο που παρέχει τη δική του λειτουργικότητα για γεωτοποθεσία.)"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/en.json b/plugins/UserCountry/lang/en.json
index a707f363e8..852293b84d 100644
--- a/plugins/UserCountry/lang/en.json
+++ b/plugins/UserCountry/lang/en.json
@@ -98,6 +98,7 @@
"UpdaterScheduledForNextRun": "It is scheduled to run during the next cron core:archive command execution.",
"UpdaterWasLastRun": "The updater was last run on %s.",
"UpdaterWillRunNext": "It is next scheduled to run on %s.",
- "WidgetLocation": "Visitor Location"
+ "WidgetLocation": "Visitor Location",
+ "InstallGeoIp2": "Matomo recommends using the %1$sdbip%2$s databases, but this requires using the GeoIp2 plugin. If you install and activate it (which will require a possibly long running update), you will be able to get started using %1$sdbip%2$s databases. (Ignore this if you are using a third party plugin that provides it's own geolocation functionality.)"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/es-ar.json b/plugins/UserCountry/lang/es-ar.json
index 40cc3a2f78..d2f268ea3b 100644
--- a/plugins/UserCountry/lang/es-ar.json
+++ b/plugins/UserCountry/lang/es-ar.json
@@ -98,6 +98,7 @@
"UpdaterScheduledForNextRun": "Está programado para ejecutarse durante la próxima ejecución de comando cron \"core:archive\".",
"UpdaterWasLastRun": "El actualizador se ejecutó por última vez: %s.",
"UpdaterWillRunNext": "Está programado para ejecutarse: %s.",
- "WidgetLocation": "Ubicación del visitante"
+ "WidgetLocation": "Ubicación del visitante",
+ "InstallGeoIp2": "Matomo recomienda usar las bases de datos de %1$sdbip%2$s, pero requiere usar el plugin GeoIP2. Si lo instalás y activás (el cual probablemente requiera una larga actualización), vas a poder usar las bases de datos de %1$sdbip%2$s (ignorá esto si ya estás usando un plugin de terceros que ofrece su propia función de geolocalización)."
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/pt-br.json b/plugins/UserCountry/lang/pt-br.json
index 5f44beee1b..3927a68629 100644
--- a/plugins/UserCountry/lang/pt-br.json
+++ b/plugins/UserCountry/lang/pt-br.json
@@ -98,6 +98,7 @@
"UpdaterScheduledForNextRun": "Está programado para ser executado durante a próxima execução do cron job archive.php",
"UpdaterWasLastRun": "O atualizador foi executado pela última vez em %s.",
"UpdaterWillRunNext": "A próxima execução está programada para ser executada em %s.",
- "WidgetLocation": "Localização dos visitantes"
+ "WidgetLocation": "Localização dos visitantes",
+ "InstallGeoIp2": "O Matomo recomenda usar as bases de dados %1$sdbip%2$s, mas isto requer usar o plugin GeoIp2. Se você instalá-lo e ativá-lo (o que deve possivelmente exigir uma atualização de longa duração), você poderá começar a usar bases de dados %1$sdbip%2$s. (Ignore isto se você estiver usando um plugin de terceiro que fornece sua própria funcionalidade de geolocalização.)"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/sq.json b/plugins/UserCountry/lang/sq.json
index 779a1d6bd9..80ea3839f4 100644
--- a/plugins/UserCountry/lang/sq.json
+++ b/plugins/UserCountry/lang/sq.json
@@ -98,6 +98,7 @@
"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.",
- "WidgetLocation": "Vend Vizitori"
+ "WidgetLocation": "Vend Vizitori",
+ "InstallGeoIp2": "Matomo rekomandon përdorimin e bazave të të dhënave %1$sdbip%2$s, por kjo lyp përdorimin e shtojcës GeoIp2. Nëse e instaloni dhe e aktivizoni (çka ka shumë mundësi se do të kërkojë një përditësim që zgjat ca), do të jeni në gjendje të filloni të përdorni baza të dhënash %1$sdbip%2$s. (Shpërfilleni këtë , nëse përdorni një shtojcë pale të tretë që për gjeovendëzim sjell funksione të vetat.)"
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/lang/tr.json b/plugins/UserCountry/lang/tr.json
index 5c5e6fb0cf..ef27d981dc 100644
--- a/plugins/UserCountry/lang/tr.json
+++ b/plugins/UserCountry/lang/tr.json
@@ -98,6 +98,7 @@
"UpdaterScheduledForNextRun": "core:archive komutunun yürütüleceği zamanlanmış görevin bir sonraki çalışmasında güncellenecek.",
"UpdaterWasLastRun": "Güncelleyici en son %s zamanında çalıştı.",
"UpdaterWillRunNext": "Zamanlanmış görev %s zamanında çalışacak.",
- "WidgetLocation": "Ziyaretçi Konumu"
+ "WidgetLocation": "Ziyaretçi Konumu",
+ "InstallGeoIp2": "Matomo %1$sdbip%2$s veritabanlarının kullanılmasını önerir. Ancak bunun için GeoIp2 uygulama eki gereklidir. Bu uygulama ekini kurup etkinleştirdiyseniz (büyük olasılıkla uzun sürecek bir güncelleme yapılır), %1$sdbip%2$s veritabanlarını kullanmaya başlayabilirsiniz (kendi coğrafi konum özelliğini sunan bir üçüncü taraf uygulama eki kullanıyorsanız bunu yok sayabilirsiniz)."
}
} \ No newline at end of file
diff --git a/plugins/UserCountry/templates/adminIndex.twig b/plugins/UserCountry/templates/adminIndex.twig
index ac9e2c1f59..f0a32da588 100644
--- a/plugins/UserCountry/templates/adminIndex.twig
+++ b/plugins/UserCountry/templates/adminIndex.twig
@@ -16,6 +16,7 @@
{% if not isThereWorkingProvider %}
<h3 style="margin-top:0;">{{ 'UserCountry_HowToSetupGeoIP'|translate }}</h3>
+ {% if dbipLiteUrl|default is not empty %}
<p>{{ 'UserCountry_HowToSetupGeoIPIntro'|translate }}</p>
<ul style="list-style:disc !important;margin-left:2em;">
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step1'|translate('<a rel="noreferrer noopener" href="'~dbipLiteUrl~'">','</a>','<a rel="noreferrer noopener" target="_blank" href="http://db-ip.com/?refid=mtm">','</a>')|raw }}</li>
@@ -23,6 +24,9 @@
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step3'|translate('<strong>','</strong>','<span style="color:green"><strong>','</strong></span>')|raw }}</li>
<li style="list-style-type: disc !important;">{{ 'UserCountry_HowToSetupGeoIP_Step4'|translate }}</li>
</ul>
+ {% else %}
+ <p>{{ 'UserCountry_InstallGeoIp2'|translate('<a rel="noreferrer noopener" target="_blank" href="http://db-ip.com/?refid=mtm">','</a>')|raw }}</p>
+ {% endif %}
<p>&nbsp;</p>
{% endif %}
@@ -127,7 +131,7 @@
</div>
{% endif %}
-{% if isInternetEnabled %}
+{% if isInternetEnabled and not notUsingGeoIpPlugin %}
<div piwik-content-block
content-title="{% if not geoIPDatabasesInstalled %}{{ 'UserCountry_GeoIPDatabases'|translate|e('html_attr') }}{% else %}{{ 'UserCountry_SetupAutomaticUpdatesOfGeoIP'|translate|e('html_attr') }}{% endif %}"
id="geoip-db-mangement">
@@ -161,9 +165,14 @@
</div>
</div>
</div>
+ {% if dbipLiteUrl|default is not empty %}
+ {% set downloadingDbLink %}<a href="{{ dbipLiteUrl|e('html_attr') }}">{{ dbipLiteFilename }}</a>{% endset %}
+ {% else %}
+ {% set downloadingDbLink = '' %}
+ {% endif %}
<div id="geoipdb-screen2-download" ng-show="locationUpdater.showFreeDownload">
<div piwik-progressbar
- label="{{ ('UserCountry_DownloadingDb'|translate('<a href="'~dbipLiteUrl~'">'~dbipLiteFilename~'</a>') ~ '...')|json_encode }}"
+ label="{{ ('UserCountry_DownloadingDb'|translate(downloadingDbLink) ~ '...')|json_encode }}"
progress="locationUpdater.progressFreeDownload">
</div>
</div>
diff --git a/plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html b/plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html
index acb0b5cf79..4eee7fe20e 100644
--- a/plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html
+++ b/plugins/UsersManager/angularjs/capabilities-edit/capabilities-edit.component.html
@@ -13,7 +13,7 @@
<span
class="icon-close"
ng-if="!$ctrl.isIncludedInRole(capability)"
- ng-click="$ctrl.capabilityToAddOrRemove = capability; $ctrl.onToggleCapability(fakse)"
+ ng-click="$ctrl.capabilityToAddOrRemoveId = capability.id; $ctrl.onToggleCapability(false)"
></span>
</div>