From ca35a8a0814c24263094e116b95df650b70d09bb Mon Sep 17 00:00:00 2001
From: Thomas Steur <tsteur@users.noreply.github.com>
Date: Sat, 13 May 2017 11:12:14 +1200
Subject: [PATCH] Add possibility to ignore "no data recorded" screen for one
 hour (#11686)

* Add possibility to ignore "no data recorded" screen for one hour

* update screens

* update wording
---
 plugins/SitesManager/Controller.php             |  13 +++++++++++++
 plugins/SitesManager/SitesManager.php           |   6 ++++++
 plugins/SitesManager/lang/en.json               |   3 ++-
 .../SitesManager/templates/siteWithoutData.twig |   5 +++++
 .../EmptySite_emptySiteDashboard.png            | Bin 131 -> 131 bytes
 .../EmptySite_emptySiteDashboard_ignored.png    | Bin 0 -> 131 bytes
 tests/UI/specs/EmptySite_spec.js                |   7 +++++++
 7 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png

diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index b488c39d89..91744e84b2 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -13,6 +13,7 @@ use Piwik\API\ResponseBuilder;
 use Piwik\Common;
 use Piwik\Exception\UnexpectedWebsiteFoundException;
 use Piwik\Piwik;
+use Piwik\Session;
 use Piwik\Settings\Measurable\MeasurableSettings;
 use Piwik\SettingsPiwik;
 use Piwik\Site;
@@ -130,6 +131,18 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
         return file_get_contents($path . $filename);
     }
 
+    public function ignoreNoDataMessage()
+    {
+        Piwik::checkUserHasSomeViewAccess();
+
+        $session = new Session\SessionNamespace('siteWithoutData');
+        $session->ignoreMessage = true;
+        $session->setExpirationSeconds($oneHour = 60 * 60);
+
+        $url = Url::getCurrentUrlWithoutQueryString() . Url::getCurrentQueryStringWithParametersModified(array('module' => 'CoreHome', 'action' => 'index'));
+        Url::redirectToUrl($url);
+    }
+
     public function siteWithoutData()
     {
         $javascriptGenerator = new TrackerCodeGenerator();
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 1154e2cc10..a588191901 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -17,6 +17,7 @@ use Piwik\Plugins\PrivacyManager\PrivacyManager;
 use Piwik\Settings\Storage\Backend\MeasurableSettingsTable;
 use Piwik\Tracker\Cache;
 use Piwik\Tracker\Model as TrackerModel;
+use Piwik\Session\SessionNamespace;
 
 /**
  *
@@ -69,6 +70,11 @@ class SitesManager extends \Piwik\Plugin
 
         $trackerModel = new TrackerModel();
         if ($trackerModel->isSiteEmpty($siteId)) {
+            $session = new SessionNamespace('siteWithoutData');
+            if (!empty($session->ignoreMessage)) {
+                return;
+            }
+
             $module = 'SitesManager';
             $action = 'siteWithoutData';
         }
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 1375674e1c..c4925ed7f1 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -76,6 +76,7 @@
         "SiteWithoutDataSetupTracking": "Please set up the %1$stracking code%2$s below into your website or mobile app if you haven't done already.",
         "SiteWithoutDataMessageDisappears": "This message will disappear as soon as some data was tracked for this website.",
         "SiteWithoutDataSetupGoals": "In the meantime, maybe you would like to %1$sset up some goals%2$s or learn more about the %3$sfeatures%4$s of Piwik in one of our %5$sguides%6$s or %7$sFAQs%8$s.",
+        "SiteWithoutDataIgnoreMessage": "Don't show this message for the next hour",
         "SuperUserAccessCan": "A user with Super User access can also %1$s specify global settings%2$s for new websites.",
         "Timezone": "Time zone",
         "TrackingSiteSearch": "Tracking Internal Site Search",
@@ -92,4 +93,4 @@
         "YouCurrentlyHaveAccessToNWebsites": "You currently have access to %s websites.",
         "YourCurrentIpAddressIs": "Your current IP address is %s"
     }
-}
\ No newline at end of file
+}
diff --git a/plugins/SitesManager/templates/siteWithoutData.twig b/plugins/SitesManager/templates/siteWithoutData.twig
index bf0db36a39..a767fb3c04 100644
--- a/plugins/SitesManager/templates/siteWithoutData.twig
+++ b/plugins/SitesManager/templates/siteWithoutData.twig
@@ -45,6 +45,11 @@
             '<a href="https://piwik.org/features/" rel="noreferrer" target="_blank">', "</a>",
             '<a href="https://piwik.org/docs/" rel="noreferrer" target="_blank">', "</a>",
             '<a href="https://piwik.org/faq/" rel="noreferrer" target="_blank">', "</a>")|raw }}
+
+            <br />
+            <br />
+            <a href="{{ linkTo({module: 'SitesManager', action: 'ignoreNoDataMessage'}) }}"
+               class="btn ignoreSitesWithoutData">{{ 'SitesManager_SiteWithoutDataIgnoreMessage'|translate }}</a>
         </p>
 
         {{ trackingHelp|raw }}
diff --git a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard.png
index 6433c2ab72c12fda4ee8db4491d9b27d8a06bc46..25a957f5846c0967f43c846d895eab65cbe35d27 100644
GIT binary patch
delta 84
zcmV~$u@QhE3<c1$WeP_K2_Z0qLlDTnv$nHk0Y~<|eeC0_7a0p=n39ZQ*|i9xxiQE)
emOy6&80eucXqHXK<g8Sx#**~hZ=B5Bs-z#-1Qy5u

delta 84
zcmV~$u@QhE3<c1mWeP_~2;aaE4gn##v$nHk0Y~<|op$=p%Zssa^u|LLhEX>S5)6q3
eOcO+Pb?Y;Pnpjn=z)&UgPJ#T~uOEe#!1)L9xECh?

diff --git a/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png b/tests/UI/expected-screenshots/EmptySite_emptySiteDashboard_ignored.png
new file mode 100644
index 0000000000000000000000000000000000000000..4977052015d0e6f8e3efc6be8e6ba66a73c58a6b
GIT binary patch
literal 131
zcmWN?OA^8$3;@tQr{Dq>2qXi&4WA&)sO=c+!qe;9yo=v5kCz^6ow6HqpX>JMvi%>Q
zven~h<m75Dr;gdQj0{M7jm298ZU8o?%!x4|1}Nl#sIYA<P{SOHvp&|~GKHQp7O<9D
N?@H#EHAM78>IVfSCyM|8

literal 0
HcmV?d00001

diff --git a/tests/UI/specs/EmptySite_spec.js b/tests/UI/specs/EmptySite_spec.js
index 31b8524d6f..b4978ebd20 100644
--- a/tests/UI/specs/EmptySite_spec.js
+++ b/tests/UI/specs/EmptySite_spec.js
@@ -19,4 +19,11 @@ describe("EmptySite", function () {
             page.load(urlToTest);
         }, done);
     });
+
+    it('should be possible to ignore this screen for one hour', function (done) {
+        expect.screenshot('emptySiteDashboard_ignored').to.be.captureSelector('.page', function (page) {
+            page.click('.ignoreSitesWithoutData');
+            page.wait(1000)
+        }, done);
+    });
 });
-- 
GitLab