diff options
Diffstat (limited to 'plugins/Referrers')
23 files changed, 342 insertions, 256 deletions
diff --git a/plugins/Referrers/Categories/AllReferrersSubcategory.php b/plugins/Referrers/Categories/AllReferrersSubcategory.php new file mode 100644 index 0000000000..277fc762dd --- /dev/null +++ b/plugins/Referrers/Categories/AllReferrersSubcategory.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Subcategory; + +class AllReferrersSubcategory extends Subcategory +{ + protected $categoryId = 'Referrers_Referrers'; + protected $id = 'Referrers_WidgetGetAll'; + protected $order = 5; + +} diff --git a/plugins/Referrers/Categories/CampaignsSubcategory.php b/plugins/Referrers/Categories/CampaignsSubcategory.php new file mode 100644 index 0000000000..5878a0a9e2 --- /dev/null +++ b/plugins/Referrers/Categories/CampaignsSubcategory.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Subcategory; + +class CampaignsSubcategory extends Subcategory +{ + protected $categoryId = 'Referrers_Referrers'; + protected $id = 'Referrers_Campaigns'; + protected $order = 20; + +} diff --git a/plugins/Referrers/Categories/ReferrersCategory.php b/plugins/Referrers/Categories/ReferrersCategory.php new file mode 100644 index 0000000000..bde0c76699 --- /dev/null +++ b/plugins/Referrers/Categories/ReferrersCategory.php @@ -0,0 +1,18 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Category; + +class ReferrersCategory extends Category +{ + protected $id = 'Referrers_Referrers'; + protected $order = 15; + protected $icon = 'icon-reporting-referer'; +} diff --git a/plugins/Referrers/Categories/ReferrersOverviewSubcategory.php b/plugins/Referrers/Categories/ReferrersOverviewSubcategory.php new file mode 100644 index 0000000000..9cd6dafbdc --- /dev/null +++ b/plugins/Referrers/Categories/ReferrersOverviewSubcategory.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Subcategory; + +class ReferrersOverviewSubcategory extends Subcategory +{ + protected $categoryId = 'Referrers_Referrers'; + protected $id = 'General_Overview'; + protected $order = 2; + +} diff --git a/plugins/Referrers/Categories/SearchEnginesSubcategory.php b/plugins/Referrers/Categories/SearchEnginesSubcategory.php new file mode 100644 index 0000000000..c8bfc478e6 --- /dev/null +++ b/plugins/Referrers/Categories/SearchEnginesSubcategory.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Subcategory; + +class SearchEnginesSubcategory extends Subcategory +{ + protected $categoryId = 'Referrers_Referrers'; + protected $id = 'Referrers_SubmenuSearchEngines'; + protected $order = 10; + +} diff --git a/plugins/Referrers/Categories/WebsitesSubcategory.php b/plugins/Referrers/Categories/WebsitesSubcategory.php new file mode 100644 index 0000000000..8b045bd5d4 --- /dev/null +++ b/plugins/Referrers/Categories/WebsitesSubcategory.php @@ -0,0 +1,19 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Categories; + +use Piwik\Category\Subcategory; + +class WebsitesSubcategory extends Subcategory +{ + protected $categoryId = 'Referrers_Referrers'; + protected $id = 'Referrers_SubmenuWebsites'; + protected $order = 15; + +} diff --git a/plugins/Referrers/Controller.php b/plugins/Referrers/Controller.php index c628af7a83..1b258f4c6a 100644 --- a/plugins/Referrers/Controller.php +++ b/plugins/Referrers/Controller.php @@ -10,10 +10,14 @@ namespace Piwik\Plugins\Referrers; use Piwik\API\Request; use Piwik\Common; +use Piwik\DataTable\Filter\CalculateEvolutionFilter; use Piwik\DataTable\Map; use Piwik\Metrics; +use Piwik\NumberFormatter; use Piwik\Period\Range; use Piwik\Piwik; +use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines; +use Piwik\ViewDataTable; use Piwik\SettingsPiwik; use Piwik\Translation\Translator; use Piwik\View; @@ -35,34 +39,23 @@ class Controller extends \Piwik\Plugin\Controller parent::__construct(); } - public function index() + public function getSparklines() { - $view = new View('@Referrers/index'); - - $view->graphEvolutionReferrers = $this->getEvolutionGraph(Common::REFERRER_TYPE_DIRECT_ENTRY, array(), array('nb_visits')); - $view->nameGraphEvolutionReferrers = 'Referrers.getEvolutionGraph'; + $metrics = $this->getReferrersVisitorsByType(); + $distinctMetrics = $this->getDistinctReferrersMetrics(); - $nameValues = $this->getReferrersVisitorsByType(); + $numberFormatter = NumberFormatter::getInstance(); - $totalVisits = array_sum($nameValues); - foreach ($nameValues as $name => $value) { - $view->$name = $value; + $totalVisits = array_sum($metrics); + foreach ($metrics as $name => $value) { // calculate percent of total, if there were any visits - if ($value != 0 - && $totalVisits != 0 - ) { + if ($value != 0 && $totalVisits != 0) { $percentName = $name . 'Percent'; - $view->$percentName = round(($value / $totalVisits) * 100, 0); + $metrics[$percentName] = round(($value / $totalVisits) * 100, 0); } } - // set distinct metrics - $distinctMetrics = $this->getDistinctReferrersMetrics(); - foreach ($distinctMetrics as $name => $value) { - $view->$name = $value; - } - // calculate evolution for visit metrics & distinct metrics list($lastPeriodDate, $ignore) = Range::getLastDate(); if ($lastPeriodDate !== false) { @@ -74,71 +67,124 @@ class Controller extends \Piwik\Plugin\Controller // visit metrics $previousValues = $this->getReferrersVisitorsByType($lastPeriodDate); - $this->addEvolutionPropertiesToView($view, $prettyDate, $nameValues, $prettyLastPeriodDate, $previousValues); + $metrics = $this->addEvolutionPropertiesToView($prettyDate, $metrics, $prettyLastPeriodDate, $previousValues); // distinct metrics $previousValues = $this->getDistinctReferrersMetrics($lastPeriodDate); - $this->addEvolutionPropertiesToView($view, $prettyDate, $distinctMetrics, $prettyLastPeriodDate, $previousValues); + $distinctMetrics = $this->addEvolutionPropertiesToView($prettyDate, $distinctMetrics, $prettyLastPeriodDate, $previousValues); } - // sparkline for the historical data of the above values - $view->urlSparklineSearchEngines = $this->getReferrerUrlSparkline(Common::REFERRER_TYPE_SEARCH_ENGINE); - $view->urlSparklineDirectEntry = $this->getReferrerUrlSparkline(Common::REFERRER_TYPE_DIRECT_ENTRY); - $view->urlSparklineWebsites = $this->getReferrerUrlSparkline(Common::REFERRER_TYPE_WEBSITE); - $view->urlSparklineCampaigns = $this->getReferrerUrlSparkline(Common::REFERRER_TYPE_CAMPAIGN); - // sparklines for the evolution of the distinct keywords count/websites count/ etc - $view->urlSparklineDistinctSearchEngines = $this->getUrlSparkline('getLastDistinctSearchEnginesGraph'); - $view->urlSparklineDistinctKeywords = $this->getUrlSparkline('getLastDistinctKeywordsGraph'); - $view->urlSparklineDistinctWebsites = $this->getUrlSparkline('getLastDistinctWebsitesGraph'); - $view->urlSparklineDistinctCampaigns = $this->getUrlSparkline('getLastDistinctCampaignsGraph'); + /** @var Sparklines $view */ + $view = ViewDataTable\Factory::build(Sparklines::ID, $api = false, $controller = false, $force = true, $loadUserParams = false); - return $view->render(); - } + // DIRECT ENTRY + $metrics['visitorsFromDirectEntry'] = $numberFormatter->formatNumber($metrics['visitorsFromDirectEntry']); + $values = array($metrics['visitorsFromDirectEntry']); + $descriptions = array(Piwik::translate('Referrers_TypeDirectEntries')); - public function allReferrers() - { - $view = new View('@Referrers/allReferrers'); + if (!empty($metrics['visitorsFromDirectEntryPercent'])) { + $metrics['visitorsFromDirectEntryPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromDirectEntryPercent'], $precision = 1); + $values[] = $metrics['visitorsFromDirectEntryPercent']; + $descriptions[] = Piwik::translate('Referrers_XPercentOfVisits'); + } - // building the referrers summary report - $view->dataTableReferrerType = $this->renderReport('getReferrerType'); + $directEntryParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_DIRECT_ENTRY); - $nameValues = $this->getReferrersVisitorsByType(); + $view->config->addSparkline($directEntryParams, $values, $descriptions, @$metrics['visitorsFromDirectEntryEvolution']); - $totalVisits = array_sum($nameValues); - foreach ($nameValues as $name => $value) { - $view->$name = $value; - // calculate percent of total, if there were any visits - if ($value != 0 - && $totalVisits != 0 - ) { - $percentName = $name . 'Percent'; - $view->$percentName = round(($value / $totalVisits) * 100, 0); - } + // WEBSITES + $metrics['visitorsFromWebsites'] = $numberFormatter->formatNumber($metrics['visitorsFromWebsites']); + $values = array($metrics['visitorsFromWebsites']); + $descriptions = array(Piwik::translate('Referrers_TypeWebsites')); + + if (!empty($metrics['visitorsFromWebsitesPercent'])) { + $metrics['visitorsFromWebsitesPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromWebsitesPercent'], $precision = 1); + $values[] = $metrics['visitorsFromWebsitesPercent']; + $descriptions[] = Piwik::translate('Referrers_XPercentOfVisits'); } - $view->totalVisits = $totalVisits; - $view->referrersReportsByDimension = $this->renderReport('getAll'); + $searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_WEBSITE); - return $view->render(); - } + $view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromWebsitesEvolution']); + + + // SEARCH ENGINES + $metrics['visitorsFromSearchEngines'] = $numberFormatter->formatNumber($metrics['visitorsFromSearchEngines']); + $values = array($metrics['visitorsFromSearchEngines']); + $descriptions = array(Piwik::translate('Referrers_TypeSearchEngines')); + + if (!empty($metrics['visitorsFromSearchEnginesPercent'])) { + $metrics['visitorsFromSearchEnginesPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromSearchEnginesPercent'], $precision = 1); + $values[] = $metrics['visitorsFromSearchEnginesPercent']; + $descriptions[] = Piwik::translate('Referrers_XPercentOfVisits'); + } + $searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_SEARCH_ENGINE); + + $view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromSearchEnginesEvolution']); + + + // CAMPAIGNS + $metrics['visitorsFromCampaigns'] = $numberFormatter->formatNumber($metrics['visitorsFromCampaigns']); + $values = array($metrics['visitorsFromCampaigns']); + $descriptions = array(Piwik::translate('Referrers_TypeCampaigns')); + + if (!empty($metrics['visitorsFromCampaignsPercent'])) { + $metrics['visitorsFromCampaignsPercent'] = $numberFormatter->formatPercent($metrics['visitorsFromCampaignsPercent'], $precision = 1); + $values[] = $metrics['visitorsFromCampaignsPercent']; + $descriptions[] = Piwik::translate('Referrers_XPercentOfVisits'); + } + + $searchEngineParams = $this->getReferrerSparklineParams(Common::REFERRER_TYPE_CAMPAIGN); + + $view->config->addSparkline($searchEngineParams, $values, $descriptions, @$metrics['visitorsFromCampaignsEvolution']); + + + // DISTINCT SEARCH ENGINES + $sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctSearchEnginesGraph'); + $value = $distinctMetrics['numberDistinctSearchEngines']; + $value = $numberFormatter->formatNumber($value); + $description = Piwik::translate('Referrers_DistinctSearchEngines'); + + $view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctSearchEnginesEvolution']); + + + // DISTINCT WEBSITES + $sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctWebsitesGraph'); + + $distinctMetrics['numberDistinctWebsites'] = $numberFormatter->formatNumber($distinctMetrics['numberDistinctWebsites']); + $distinctMetrics['numberDistinctWebsitesUrls'] = $numberFormatter->formatNumber($distinctMetrics['numberDistinctWebsitesUrls']); + + $values = array($distinctMetrics['numberDistinctWebsites'], $distinctMetrics['numberDistinctWebsitesUrls']); + $descriptions = array(Piwik::translate('Referrers_DistinctWebsites'), Piwik::translate('Referrers_UsingNDistinctUrls')); + + $view->config->addSparkline($sparklineParams, $values, $descriptions, @$distinctMetrics['numberDistinctWebsitesEvolution']); + + + // DISTINCT KEYWORDS + $sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctKeywordsGraph'); + $value = $distinctMetrics['numberDistinctKeywords']; + $value = $numberFormatter->formatNumber($value); + $description = Piwik::translate('Referrers_DistinctKeywords'); + + $view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctKeywordsEvolution']); + + + // DISTINCT CAMPAIGNS + $sparklineParams = $this->getDistinctSparklineUrlParams('getLastDistinctCampaignsGraph'); + $value = $distinctMetrics['numberDistinctCampaigns']; + $value = $numberFormatter->formatNumber($value); + $description = Piwik::translate('Referrers_DistinctCampaigns'); + + $view->config->addSparkline($sparklineParams, $value, $description, @$distinctMetrics['numberDistinctCampaignsEvolution']); - public function getSearchEnginesAndKeywords() - { - $view = new View('@Referrers/getSearchEnginesAndKeywords'); - $view->searchEngines = $this->renderReport('getSearchEngines'); - $view->keywords = $this->renderReport('getKeywords'); return $view->render(); } - public function indexWebsites() + private function getDistinctSparklineUrlParams($action) { - $view = new View('@Referrers/indexWebsites'); - $view->websites = $this->renderReport('getWebsites'); - $view->socials = $this->renderReport('getSocials'); - - return $view->render(); + return array('module' => $this->pluginName, 'action' => $action); } protected function getReferrersVisitorsByType($date = false) @@ -221,7 +267,7 @@ class Controller extends \Piwik\Plugin\Controller } else { // use $typeReferrer as default if ($typeReferrer === false) { - $typeReferrer = Common::getRequestVar('typeReferrer', false); + $typeReferrer = Common::getRequestVar('typeReferrer', Common::REFERRER_TYPE_DIRECT_ENTRY); } $label = self::getTranslatedReferrerTypeLabel($typeReferrer); $total = $this->translator->translate('General_Total'); @@ -416,14 +462,16 @@ function DisplayTopKeywords($url = "") * @param int $referrerType The referrer type. Referrer types are defined in Common class. * @return string The URL that can be used to get a sparkline image. */ - private function getReferrerUrlSparkline($referrerType) + private function getReferrerSparklineParams($referrerType) { $totalRow = $this->translator->translate('General_Total'); - return $this->getUrlSparkline( - 'getEvolutionGraph', - array('columns' => array('nb_visits'), - 'rows' => array(self::getTranslatedReferrerTypeLabel($referrerType), $totalRow), - 'typeReferrer' => $referrerType) + + return array( + 'columns' => array('nb_visits'), + 'rows' => array(self::getTranslatedReferrerTypeLabel($referrerType), $totalRow), + 'typeReferrer' => $referrerType, + 'module' => $this->pluginName, + 'action' => 'getReferrerType' ); } @@ -456,20 +504,35 @@ function DisplayTopKeywords($url = "") * Utility method that calculates evolution values for a set of current & past values * and sets properties on a View w/ HTML that displays the evolution percents. * - * @param View $view The view to set properties on. * @param string $date The date of the current values. * @param array $currentValues Array mapping view property names w/ present values. * @param string $lastPeriodDate The date of the period in the past. * @param array $previousValues Array mapping view property names w/ past values. Keys * in this array should be the same as keys in $currentValues. + * @return array Added current values */ - private function addEvolutionPropertiesToView($view, $date, $currentValues, $lastPeriodDate, $previousValues) + private function addEvolutionPropertiesToView($date, $currentValues, $lastPeriodDate, $previousValues) { foreach ($previousValues as $name => $pastValue) { $currentValue = $currentValues[$name]; $evolutionName = $name . 'Evolution'; - $view->$evolutionName = $this->getEvolutionHtml($date, $currentValue, $lastPeriodDate, $pastValue); + $currentValueFormatted = NumberFormatter::getInstance()->format($currentValue); + $pastValueFormatted = NumberFormatter::getInstance()->format($pastValue); + + $currentValues[$evolutionName] = array( + 'currentValue' => $currentValue, + 'pastValue' => $pastValue, + 'tooltip' => Piwik::translate('General_EvolutionSummaryGeneric', array( + Piwik::translate('General_NVisits', $currentValueFormatted), + $date, + Piwik::translate('General_NVisits', $pastValueFormatted), + $lastPeriodDate, + CalculateEvolutionFilter::calculate($currentValue, $pastValue, $precision = 1) + )) + ); } + + return $currentValues; } } diff --git a/plugins/Referrers/Menu.php b/plugins/Referrers/Menu.php deleted file mode 100644 index 1088cb738e..0000000000 --- a/plugins/Referrers/Menu.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * Piwik - free/libre analytics platform - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - */ -namespace Piwik\Plugins\Referrers; - -use Piwik\Menu\MenuReporting; - -class Menu extends \Piwik\Plugin\Menu -{ - public function configureReportingMenu(MenuReporting $menu) - { - $menu->addReferrersItem('', array(), 20); - $menu->addReferrersItem('General_Overview', $this->urlForAction('index'), 1); - $menu->addReferrersItem('Referrers_WidgetGetAll', $this->urlForAction('allReferrers'), 2); - $menu->addReferrersItem('Referrers_SubmenuSearchEngines', $this->urlForAction('getSearchEnginesAndKeywords'), 3); - $menu->addReferrersItem('Referrers_SubmenuWebsites', $this->urlForAction('indexWebsites'), 4); - } -} diff --git a/plugins/Referrers/Reports/Base.php b/plugins/Referrers/Reports/Base.php index e4a6394c00..2bd240d191 100644 --- a/plugins/Referrers/Reports/Base.php +++ b/plugins/Referrers/Reports/Base.php @@ -12,7 +12,7 @@ abstract class Base extends \Piwik\Plugin\Report { protected function init() { - $this->category = 'Referrers_Referrers'; + $this->categoryId = 'Referrers_Referrers'; } } diff --git a/plugins/Referrers/Reports/GetAll.php b/plugins/Referrers/Reports/GetAll.php index 2079dd414d..cb5f17ee41 100644 --- a/plugins/Referrers/Reports/GetAll.php +++ b/plugins/Referrers/Reports/GetAll.php @@ -13,6 +13,8 @@ use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\Referrers\Columns\Referrer; use Piwik\Plugins\Referrers\Referrers; +use Piwik\Report\ReportWidgetFactory; +use Piwik\Widget\WidgetsList; class GetAll extends Base { @@ -23,7 +25,15 @@ class GetAll extends Base $this->name = Piwik::translate('Referrers_WidgetGetAll'); $this->documentation = Piwik::translate('Referrers_AllReferrersReportDocumentation', '<br />'); $this->order = 2; - $this->widgetTitle = 'Referrers_WidgetGetAll'; + + $this->subcategoryId = 'Referrers_WidgetGetAll'; + } + + public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory) + { + $widgetsList->addWidgetConfig( + $factory->createWidget()->setName('Referrers_Referrers') + ); } public function getDefaultTypeViewDataTable() diff --git a/plugins/Referrers/Reports/GetCampaigns.php b/plugins/Referrers/Reports/GetCampaigns.php index a09affa70c..1d375423d8 100644 --- a/plugins/Referrers/Reports/GetCampaigns.php +++ b/plugins/Referrers/Reports/GetCampaigns.php @@ -24,8 +24,8 @@ class GetCampaigns extends Base $this->actionToLoadSubTables = 'getKeywordsFromCampaignId'; $this->hasGoalMetrics = true; $this->order = 9; - $this->widgetTitle = 'Referrers_Campaigns'; - $this->menuTitle = 'Referrers_Campaigns'; + + $this->subcategoryId = 'Referrers_Campaigns'; } public function configureView(ViewDataTable $view) diff --git a/plugins/Referrers/Reports/GetKeywords.php b/plugins/Referrers/Reports/GetKeywords.php index be8e8d3f4c..3239fefde0 100644 --- a/plugins/Referrers/Reports/GetKeywords.php +++ b/plugins/Referrers/Reports/GetKeywords.php @@ -11,7 +11,9 @@ namespace Piwik\Plugins\Referrers\Reports; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; +use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution; use Piwik\Plugins\Referrers\Columns\Keyword; +use Piwik\Tracker\Visit; class GetKeywords extends Base { @@ -24,7 +26,7 @@ class GetKeywords extends Base $this->actionToLoadSubTables = 'getSearchEnginesFromKeywordId'; $this->hasGoalMetrics = true; $this->order = 3; - $this->widgetTitle = 'Referrers_Keywords'; + $this->subcategoryId = 'Referrers_SubmenuSearchEngines'; } public function configureView(ViewDataTable $view) diff --git a/plugins/Referrers/Reports/GetReferrerType.php b/plugins/Referrers/Reports/GetReferrerType.php index f5656bfa7f..c09f8c6d17 100644 --- a/plugins/Referrers/Reports/GetReferrerType.php +++ b/plugins/Referrers/Reports/GetReferrerType.php @@ -12,7 +12,11 @@ use Piwik\Common; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; +use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution; +use Piwik\Plugins\CoreVisualizations\Visualizations\Sparklines; use Piwik\Plugins\Referrers\Columns\ReferrerType; +use Piwik\Widget\WidgetsList; +use Piwik\Report\ReportWidgetFactory; class GetReferrerType extends Base { @@ -32,7 +36,7 @@ class GetReferrerType extends Base $this->constantRowsCount = true; $this->hasGoalMetrics = true; $this->order = 1; - $this->widgetTitle = 'General_Overview'; + $this->subcategoryId = 'Referrers_WidgetGetAll'; } public function getDefaultTypeViewDataTable() @@ -40,6 +44,36 @@ class GetReferrerType extends Base return HtmlTable\AllColumns::ID; } + public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory) + { + $widgetsList->addWidgetConfig( + $factory->createWidget() + ->setName('Referrers_ReferrerTypes') + ->setSubcategoryId('Referrers_WidgetGetAll') + ); + + $widgetsList->addWidgetConfig( + $factory->createWidget() + ->setName('General_EvolutionOverPeriod') + ->setSubcategoryId('General_Overview') + ->setAction('getEvolutionGraph') + ->setIsNotWidgetizable() + ->forceViewDataTable(Evolution::ID) + ->addParameters(array( + 'columns' => $defaultColumns = array('nb_visits'), + )) + ); + + $widgetsList->addWidgetConfig( + $factory->createCustomWidget('getSparklines') + ->forceViewDataTable(Sparklines::ID) + ->setIsNotWidgetizable() + ->setName('Referrers_Type') + ->setSubcategoryId('General_Overview') + ->setOrder(10) + ); + } + public function configureView(ViewDataTable $view) { $idSubtable = Common::getRequestVar('idSubtable', false); diff --git a/plugins/Referrers/Reports/GetSearchEngines.php b/plugins/Referrers/Reports/GetSearchEngines.php index 3b66cd0784..0a17cd132e 100644 --- a/plugins/Referrers/Reports/GetSearchEngines.php +++ b/plugins/Referrers/Reports/GetSearchEngines.php @@ -24,7 +24,8 @@ class GetSearchEngines extends Base $this->actionToLoadSubTables = 'getKeywordsFromSearchEngineId'; $this->hasGoalMetrics = true; $this->order = 7; - $this->widgetTitle = 'Referrers_SearchEngines'; + + $this->subcategoryId = 'Referrers_SubmenuSearchEngines'; } public function configureView(ViewDataTable $view) diff --git a/plugins/Referrers/Reports/GetSocials.php b/plugins/Referrers/Reports/GetSocials.php index b49fac623a..7429ddd48f 100644 --- a/plugins/Referrers/Reports/GetSocials.php +++ b/plugins/Referrers/Reports/GetSocials.php @@ -14,6 +14,8 @@ use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Pie; use Piwik\Plugins\Referrers\Columns\SocialNetwork; +use Piwik\Report\ReportWidgetFactory; +use Piwik\Widget\WidgetsList; class GetSocials extends Base { @@ -25,7 +27,14 @@ class GetSocials extends Base $this->documentation = Piwik::translate('Referrers_WebsitesReportDocumentation', '<br />'); $this->actionToLoadSubTables = 'getUrlsForSocial'; $this->order = 11; - $this->widgetTitle = 'Referrers_WidgetSocials'; + + $this->subcategoryId = 'Referrers_SubmenuWebsites'; + } + + public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory) + { + $widget = $factory->createWidget()->setName('Referrers_Socials'); + $widgetsList->addWidgetConfig($widget); } public function getDefaultTypeViewDataTable() diff --git a/plugins/Referrers/Reports/GetWebsites.php b/plugins/Referrers/Reports/GetWebsites.php index 18f9336a63..f5be3ca375 100644 --- a/plugins/Referrers/Reports/GetWebsites.php +++ b/plugins/Referrers/Reports/GetWebsites.php @@ -12,6 +12,8 @@ use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\Referrers\Columns\Website; +use Piwik\Report\ReportWidgetFactory; +use Piwik\Widget\WidgetsList; class GetWebsites extends Base { @@ -25,7 +27,8 @@ class GetWebsites extends Base $this->actionToLoadSubTables = 'getUrlsFromWebsiteId'; $this->hasGoalMetrics = true; $this->order = 5; - $this->widgetTitle = 'Referrers_WidgetExternalWebsites'; + + $this->subcategoryId = 'Referrers_SubmenuWebsites'; } public function configureView(ViewDataTable $view) diff --git a/plugins/Referrers/Widgets.php b/plugins/Referrers/Widgets.php deleted file mode 100644 index 4e23c9f746..0000000000 --- a/plugins/Referrers/Widgets.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/** - * Piwik - free/libre analytics platform - * - * @link http://piwik.org - * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later - * - */ -namespace Piwik\Plugins\Referrers; - -use Piwik\SettingsPiwik; - -class Widgets extends \Piwik\Plugin\Widgets -{ - protected $category = 'SEO'; - - public function init() - { - if (SettingsPiwik::isSegmentationEnabled()) { - $this->addWidget('Referrers_WidgetTopKeywordsForPages', 'getKeywordsForPage'); - } - } - -} diff --git a/plugins/Referrers/Widgets/GetKeywordsForPage.php b/plugins/Referrers/Widgets/GetKeywordsForPage.php new file mode 100644 index 0000000000..165bb18f68 --- /dev/null +++ b/plugins/Referrers/Widgets/GetKeywordsForPage.php @@ -0,0 +1,23 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Referrers\Widgets; + +use Piwik\Widget\WidgetConfig; +use Piwik\SettingsPiwik; + +class GetKeywordsForPage extends \Piwik\Widget\Widget +{ + public static function configure(WidgetConfig $config) + { + $config->setCategoryId('SEO'); + $config->setName('Referrers_WidgetTopKeywordsForPages'); + $config->setIsEnabled(SettingsPiwik::isSegmentationEnabled()); + } + +} diff --git a/plugins/Referrers/templates/allReferrers.twig b/plugins/Referrers/templates/allReferrers.twig deleted file mode 100644 index bf8c7c431c..0000000000 --- a/plugins/Referrers/templates/allReferrers.twig +++ /dev/null @@ -1,11 +0,0 @@ -<h2 piwik-enriched-headline>{{ 'Referrers_ReferrerTypes'|translate }}</h2> -{{ dataTableReferrerType|raw }} - -<div style="clear:both;"></div> - -{% if totalVisits > 0 %} - <h2 piwik-enriched-headline>{{ 'Referrers_Referrers'|translate }}</h2> - {{ referrersReportsByDimension|raw }} -{% endif %} - -{% include "_sparklineFooter.twig" %} diff --git a/plugins/Referrers/templates/getSearchEnginesAndKeywords.twig b/plugins/Referrers/templates/getSearchEnginesAndKeywords.twig deleted file mode 100644 index 29b2b3f0af..0000000000 --- a/plugins/Referrers/templates/getSearchEnginesAndKeywords.twig +++ /dev/null @@ -1,13 +0,0 @@ -<div class="row"> - - <div class="col-md-6"> - <h2 piwik-enriched-headline>{{ 'Referrers_Keywords'|translate }}</h2> - {{ keywords|raw }} - </div> - - <div class="col-md-6"> - <h2 piwik-enriched-headline>{{ 'Referrers_SearchEngines'|translate }}</h2> - {{ searchEngines|raw }} - </div> - -</div> diff --git a/plugins/Referrers/templates/index.twig b/plugins/Referrers/templates/index.twig deleted file mode 100644 index 74851c3b37..0000000000 --- a/plugins/Referrers/templates/index.twig +++ /dev/null @@ -1,89 +0,0 @@ -<h2 piwik-enriched-headline - data-graph-id="{{ nameGraphEvolutionReferrers }}">{{ 'General_EvolutionOverPeriod'|translate }}</h2> -{{ graphEvolutionReferrers|raw }} - -<h2 piwik-enriched-headline>{{ 'Referrers_Type'|translate }}</h2> - -<div class="row"> - <div class="col-md-6"> - <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDirectEntry) }} - {{ 'Referrers_TypeDirectEntries'|translate("<strong>"~visitorsFromDirectEntry|number~"</strong>")|raw }} - {% if visitorsFromDirectEntryPercent|default is not empty %}, - {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromDirectEntryPercent|percent~"</strong>")|raw }} - {% endif %} - {% if visitorsFromDirectEntryEvolution|default is not empty %} - {{ visitorsFromDirectEntryEvolution|raw }} - {% endif %} - </div> - <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineSearchEngines) }} - {{ 'Referrers_TypeSearchEngines'|translate("<strong>"~visitorsFromSearchEngines|number~"</strong>")|raw }} - {% if visitorsFromSearchEnginesPercent|default is not empty %}, - {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromSearchEnginesPercent|percent~"</strong>")|raw }} - {% endif %} - {% if visitorsFromSearchEnginesEvolution|default is not empty %} - {{ visitorsFromSearchEnginesEvolution|raw }} - {% endif %} - </div> - </div> - <div class="col-md-6"> - <div class="sparkline">{{ sparkline(urlSparklineWebsites) }} - {{ 'Referrers_TypeWebsites'|translate("<strong>"~visitorsFromWebsites|number~"</strong>")|raw }} - {% if visitorsFromWebsitesPercent|default is not empty %}, - {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromWebsitesPercent|percent~"</strong>")|raw }} - {% endif %} - {% if visitorsFromWebsitesEvolution|default is not empty %} - {{ visitorsFromWebsitesEvolution|raw }} - {% endif %} - </div> - <div class="sparkline">{{ sparkline(urlSparklineCampaigns) }} - {{ 'Referrers_TypeCampaigns'|translate("<strong>"~visitorsFromCampaigns|number~"</strong>")|raw }} - {% if visitorsFromCampaignsPercent|default is not empty %}, - {{ 'Referrers_XPercentOfVisits'|translate("<strong>"~visitorsFromCampaignsPercent|percent~"</strong>")|raw }} - {% endif %} - {% if visitorsFromCampaignsEvolution|default is not empty %} - {{ visitorsFromCampaignsEvolution|raw }} - {% endif %} - </div> - </div> -</div> - -<div id="distinctReferrersByType" class="row"> - <div class="col-md-6"> - <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDistinctSearchEngines) }} - <strong>{{ numberDistinctSearchEngines|number }}</strong> {{ 'Referrers_DistinctSearchEngines'|translate }} - {% if numberDistinctSearchEnginesEvolution|default is not empty %} - {{ numberDistinctSearchEnginesEvolution|raw }} - {% endif %} - </div> - <div class="sparkline" style="padding-left: 12px;">{{ sparkline(urlSparklineDistinctKeywords) }} - <strong>{{ numberDistinctKeywords|number }}</strong> {{ 'Referrers_DistinctKeywords'|translate }} - {% if numberDistinctKeywordsEvolution|default is not empty %} - {{ numberDistinctKeywordsEvolution|raw }} - {% endif %} - </div> - </div> - <div class="col-md-6"> - <div class="sparkline">{{ sparkline(urlSparklineDistinctWebsites) }} - <strong>{{ numberDistinctWebsites|number }}</strong> {{ 'Referrers_DistinctWebsites'|translate }} - {{ 'Referrers_UsingNDistinctUrls'|translate("<strong>"~numberDistinctWebsitesUrls|number~"</strong>")|raw }} - {% if numberDistinctWebsitesEvolution|default is not empty %} - {{ numberDistinctWebsitesEvolution|raw }} - {% endif %} - </div> - <div class="sparkline">{{ sparkline(urlSparklineDistinctCampaigns) }} - <strong>{{ numberDistinctCampaigns|number }}</strong> {{ 'Referrers_DistinctCampaigns'|translate }} - {% if numberDistinctCampaignsEvolution|default is not empty %} - {{ numberDistinctCampaignsEvolution|raw }} - {% endif %} - </div> - </div> - <br/> -</div> - -<div style="float:left;" class="relatedReferrerReports">{{ 'General_View'|translate }} - <a href="javascript:broadcast.propagateAjax('module=Referrers&action=getSearchEnginesAndKeywords')">{{ 'Referrers_SubmenuSearchEngines'|translate }}</a>, - <a href="javascript:broadcast.propagateAjax('module=Referrers&action=indexWebsites')">{{ 'Referrers_SubmenuWebsites'|translate }}</a>, - <a href="javascript:broadcast.propagateAjax('module=Referrers&action=indexCampaigns')">{{ 'Referrers_Campaigns'|translate }}</a>. -</div> - -{% include "_sparklineFooter.twig" %} diff --git a/plugins/Referrers/templates/indexWebsites.twig b/plugins/Referrers/templates/indexWebsites.twig deleted file mode 100644 index cdfa6efe01..0000000000 --- a/plugins/Referrers/templates/indexWebsites.twig +++ /dev/null @@ -1,13 +0,0 @@ -<div class="row"> - - <div class="col-md-6"> - <h2 piwik-enriched-headline>{{ 'Referrers_Websites'|translate }}</h2> - {{ websites|raw }} - </div> - - <div class="col-md-6"> - <h2 piwik-enriched-headline>{{ 'Referrers_Socials'|translate }}</h2> - {{ socials|raw }} - </div> - -</div> diff --git a/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml b/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml index fd12dfdcd0..58601dc41b 100644 --- a/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml +++ b/plugins/Referrers/tests/System/expected/test_Referrers_getReferrerType__API.getProcessedReport_day.xml @@ -4,6 +4,7 @@ <prettyDate>January 1 – March 10, 2010</prettyDate> <metadata> <category>Referrers</category> + <subcategory>All Referrers</subcategory> <name>Referrer Type</name> <module>Referrers</module> <action>getReferrerType</action> |