From 9ba8f216fd7856ce5fef06bf82ecb8f8a2e7e630 Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Fri, 3 Jul 2015 00:54:27 +0000 Subject: generate pages instead of implementing them in each controller --- plugins/VisitFrequency/Reports/Get.php | 62 +++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 'plugins/VisitFrequency/Reports') diff --git a/plugins/VisitFrequency/Reports/Get.php b/plugins/VisitFrequency/Reports/Get.php index eb4c7ddfbe..735f1cbe0f 100644 --- a/plugins/VisitFrequency/Reports/Get.php +++ b/plugins/VisitFrequency/Reports/Get.php @@ -9,17 +9,22 @@ namespace Piwik\Plugins\VisitFrequency\Reports; use Piwik\Piwik; +use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreHome\Columns\Metrics\ActionsPerVisit; use Piwik\Plugins\CoreHome\Columns\Metrics\AverageTimeOnSite; use Piwik\Plugins\CoreHome\Columns\Metrics\BounceRate; +use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution; +use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines; use Piwik\Plugins\VisitFrequency\Columns\Metrics\ReturningMetric; +use Piwik\Report\ReportWidgetFactory; +use Piwik\Widget\WidgetsList; class Get extends \Piwik\Plugin\Report { protected function init() { parent::init(); - $this->category = 'General_Visitors'; + $this->categoryId = 'General_Visitors'; $this->name = Piwik::translate('VisitFrequency_ColumnReturningVisits'); $this->documentation = ''; // TODO $this->processedMetrics = array( @@ -35,5 +40,60 @@ class Get extends \Piwik\Plugin\Report 'max_actions_returning' ); $this->order = 40; + $this->subcategoryId = 'VisitorInterest_Engagement'; } + + public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory) + { + $widgetsList->addWidgetConfig( + $factory->createWidget() + ->setName('VisitFrequency_WidgetGraphReturning') + ->forceViewDataTable(Evolution::ID) + ->setAction('getEvolutionGraph') + ->setOrder(1) + ); + + $widgetsList->addWidgetConfig( + $factory->createWidget() + ->forceViewDataTable(Sparklines::ID) + ->setName('VisitFrequency_WidgetOverview') + ->setOrder(2) + ); + } + + public function configureView(ViewDataTable $view) + { + if ($view->isViewDataTableId(Sparklines::ID)) { + $view->requestConfig->apiMethodToRequestDataTable = 'VisitFrequency.get'; + $this->addSparklineColumns($view); + $view->config->addTranslations($this->getSparklineTranslations()); + } + } + + private function getSparklineTranslations() + { + $translations = array( + 'nb_visits_returning' => 'ReturnVisits', + 'nb_actions_returning' => 'ReturnActions', + 'nb_actions_per_visit_returning' => 'ReturnAvgActions', + 'avg_time_on_site_returning' => 'ReturnAverageVisitDuration', + 'bounce_rate_returning' => 'ReturnBounceRate', + ); + + foreach ($translations as $metric => $key) { + $translations[$metric] = Piwik::translate('VisitFrequency_' . $key); + } + + return $translations; + } + + private function addSparklineColumns(Sparklines $view) + { + $view->config->addSparklineMetric(array('nb_visits_returning')); + $view->config->addSparklineMetric(array('avg_time_on_site_returning')); + $view->config->addSparklineMetric(array('nb_actions_per_visit_returning')); + $view->config->addSparklineMetric(array('bounce_rate_returning')); + $view->config->addSparklineMetric(array('nb_actions_returning')); + } + } -- cgit v1.2.3