diff options
author | Stefan Giehl <stefan@matomo.org> | 2020-02-11 11:38:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-11 11:38:47 +0300 |
commit | 5d2dab75e3654126ed95ea72b58b4c225ac59492 (patch) | |
tree | 7886dcc7c8593906fbebbca49c7946405bcfa2cc /plugins | |
parent | ab1e70016dde3ef93498bca99d0aa8b38e6d7f38 (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')
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> </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> |