diff options
author | Thomas Steur <tsteur@users.noreply.github.com> | 2014-06-10 06:39:02 +0400 |
---|---|---|
committer | Thomas Steur <tsteur@users.noreply.github.com> | 2014-06-10 06:39:02 +0400 |
commit | b8aa95f7fe7b251abe81bd6664c2a15cf5129197 (patch) | |
tree | 073d50b6a46c09e491181df01150115f091bc28e | |
parent | 3a28d26de32257045850ea5a602b970a9b5be3f7 (diff) | |
parent | 0dc6a6cb8d12d95f172b754405929e5db439d551 (diff) |
Merge pull request #308 from piwik/plugin_widget_refactoring
refs #5326 Provide simpler Widgets API
44 files changed, 673 insertions, 252 deletions
diff --git a/core/Menu/MenuAdmin.php b/core/Menu/MenuAdmin.php index 5c997e1566..8b11500c12 100644 --- a/core/Menu/MenuAdmin.php +++ b/core/Menu/MenuAdmin.php @@ -59,6 +59,7 @@ class MenuAdmin extends MenuAbstract /** * @ignore + * @deprecated */ Piwik::postEvent('Menu.Admin.addItems', array()); diff --git a/core/Menu/MenuReporting.php b/core/Menu/MenuReporting.php index 737674d3eb..146c6d08f1 100644 --- a/core/Menu/MenuReporting.php +++ b/core/Menu/MenuReporting.php @@ -63,6 +63,7 @@ class MenuReporting extends MenuAbstract /** * @ignore + * @deprecated */ Piwik::postEvent('Menu.Reporting.addItems', array()); diff --git a/core/Menu/MenuTop.php b/core/Menu/MenuTop.php index c8f8723fea..1b3b543179 100644 --- a/core/Menu/MenuTop.php +++ b/core/Menu/MenuTop.php @@ -96,6 +96,7 @@ class MenuTop extends MenuAbstract /** * @ignore + * @deprecated */ Piwik::postEvent('Menu.Top.addItems', array()); diff --git a/core/Plugin/Widgets.php b/core/Plugin/Widgets.php new file mode 100644 index 0000000000..c2ea16f7cf --- /dev/null +++ b/core/Plugin/Widgets.php @@ -0,0 +1,29 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugin; + +use Piwik\WidgetsList; + +/** + * Base class of all plugin widget providers. Plugins that define their own widgets can extend this class to easily + * add new widgets, to remove or to rename existing items. + * + * For an example, see the {@link https://github.com/piwik/piwik/blob/master/plugins/ExampleRssWidget/Widget.php} plugin. + * + * @api + */ +class Widgets +{ + /** + * Configures the widgets. Here you can for instance add or remove widgets. + */ + public function configure(WidgetsList $widgetsList) + { + } +} diff --git a/core/TaskScheduler.php b/core/TaskScheduler.php index 9e3b9ca0f8..8a2487a02c 100644 --- a/core/TaskScheduler.php +++ b/core/TaskScheduler.php @@ -90,6 +90,7 @@ class TaskScheduler extends Singleton /** * @ignore + * @deprecated */ Piwik::postEvent(self::GET_TASKS_EVENT, array(&$tasks)); diff --git a/core/WidgetsList.php b/core/WidgetsList.php index 3cc10f24b9..b79b94d922 100644 --- a/core/WidgetsList.php +++ b/core/WidgetsList.php @@ -8,6 +8,8 @@ */ namespace Piwik; +use Piwik\Plugin\Manager as PluginManager; + /** * Manages the global list of reports that can be displayed as dashboard widgets. * @@ -15,15 +17,16 @@ namespace Piwik; * event. Observers for this event should call the {@link add()} method to add reports. * * @api + * @method static \Piwik\WidgetsList getInstance() */ -class WidgetsList +class WidgetsList extends Singleton { /** * List of widgets * * @var array */ - static protected $widgets = null; + static protected $widgets = array(); /** * Indicates whether the hook was posted or not @@ -71,20 +74,18 @@ class WidgetsList self::$hookCalled = true; /** - * Used to collect all available dashboard widgets. - * - * Subscribe to this event to make your plugin's reports or other controller actions available - * as dashboard widgets. Event handlers should call the {@link WidgetsList::add()} method for each - * new dashboard widget. - * - * **Example** - * - * public function addWidgets() - * { - * WidgetsList::add('General_Actions', 'General_Pages', 'Actions', 'getPageUrls'); - * } + * @ignore + * @deprecated */ Piwik::postEvent('WidgetsList.addWidgets'); + + /** @var \Piwik\Plugin\Widgets[] $widgets */ + $widgets = PluginManager::getInstance()->findComponents('Widgets', 'Piwik\\Plugin\\Widgets'); + $widgetsList = self::getInstance(); + + foreach ($widgets as $widget) { + $widget->configure($widgetsList); + } } } @@ -145,6 +146,11 @@ class WidgetsList } $widgetUniqueId .= $name . $value; } + + if (!array_key_exists($widgetCategory, self::$widgets)) { + self::$widgets[$widgetCategory] = array(); + } + self::$widgets[$widgetCategory][] = array( 'name' => $widgetName, 'uniqueId' => $widgetUniqueId, @@ -209,7 +215,7 @@ class WidgetsList */ public static function _reset() { - self::$widgets = null; + self::$widgets = array(); self::$hookCalled = false; } } diff --git a/plugins/Actions/Actions.php b/plugins/Actions/Actions.php index ccfe8532f5..f39e150fd7 100644 --- a/plugins/Actions/Actions.php +++ b/plugins/Actions/Actions.php @@ -12,14 +12,11 @@ use Piwik\API\Request; use Piwik\ArchiveProcessor; use Piwik\Common; use Piwik\Db; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\MetricsFormatter; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Site; -use Piwik\WidgetsList; /** * Actions plugin @@ -37,7 +34,6 @@ class Actions extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -462,29 +458,6 @@ class Actions extends \Piwik\Plugin } } - function addWidgets() - { - WidgetsList::add('General_Actions', 'General_Pages', 'Actions', 'getPageUrls'); - WidgetsList::add('General_Actions', 'Actions_WidgetPageTitles', 'Actions', 'getPageTitles'); - WidgetsList::add('General_Actions', 'General_Outlinks', 'Actions', 'getOutlinks'); - WidgetsList::add('General_Actions', 'General_Downloads', 'Actions', 'getDownloads'); - WidgetsList::add('General_Actions', 'Actions_WidgetPagesEntry', 'Actions', 'getEntryPageUrls'); - WidgetsList::add('General_Actions', 'Actions_WidgetPagesExit', 'Actions', 'getExitPageUrls'); - WidgetsList::add('General_Actions', 'Actions_WidgetEntryPageTitles', 'Actions', 'getEntryPageTitles'); - WidgetsList::add('General_Actions', 'Actions_WidgetExitPageTitles', 'Actions', 'getExitPageTitles'); - - if ($this->isSiteSearchEnabled()) { - WidgetsList::add('Actions_SubmenuSitesearch', 'Actions_WidgetSearchKeywords', 'Actions', 'getSiteSearchKeywords'); - - if (self::isCustomVariablesPluginsEnabled()) { - WidgetsList::add('Actions_SubmenuSitesearch', 'Actions_WidgetSearchCategories', 'Actions', 'getSiteSearchCategories'); - } - WidgetsList::add('Actions_SubmenuSitesearch', 'Actions_WidgetSearchNoResultKeywords', 'Actions', 'getSiteSearchNoResultKeywords'); - WidgetsList::add('Actions_SubmenuSitesearch', 'Actions_WidgetPageUrlsFollowingSearch', 'Actions', 'getPageUrlsFollowingSiteSearch'); - WidgetsList::add('Actions_SubmenuSitesearch', 'Actions_WidgetPageTitlesFollowingSearch', 'Actions', 'getPageTitlesFollowingSiteSearch'); - } - } - public function isSiteSearchEnabled() { $idSite = Common::getRequestVar('idSite', 0, 'int'); @@ -515,12 +488,11 @@ class Actions extends \Piwik\Plugin } } - static protected function isCustomVariablesPluginsEnabled() + static public function isCustomVariablesPluginsEnabled() { return \Piwik\Plugin\Manager::getInstance()->isPluginActivated('CustomVariables'); } - public function configureViewDataTable(ViewDataTable $view) { switch ($view->requestConfig->apiMethodToRequestDataTable) { diff --git a/plugins/Actions/Widgets.php b/plugins/Actions/Widgets.php new file mode 100644 index 0000000000..eff55ceb1b --- /dev/null +++ b/plugins/Actions/Widgets.php @@ -0,0 +1,51 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Actions; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + + public function configure(WidgetsList $widgetsList) + { + $category = 'General_Actions'; + $controller = 'Actions'; + + $widgetsList->add($category, 'General_Pages', $controller, 'getPageUrls'); + $widgetsList->add($category, 'Actions_WidgetPageTitles', $controller, 'getPageTitles'); + $widgetsList->add($category, 'General_Outlinks', $controller, 'getOutlinks'); + $widgetsList->add($category, 'General_Downloads', $controller, 'getDownloads'); + $widgetsList->add($category, 'Actions_WidgetPagesEntry', $controller, 'getEntryPageUrls'); + $widgetsList->add($category, 'Actions_WidgetPagesExit', $controller, 'getExitPageUrls'); + $widgetsList->add($category, 'Actions_WidgetEntryPageTitles', $controller, 'getEntryPageTitles'); + $widgetsList->add($category, 'Actions_WidgetExitPageTitles', $controller, 'getExitPageTitles'); + + $actions = new Actions(); + if ($actions->isSiteSearchEnabled()) { + $this->addSearchWidgets($widgetsList, $controller); + } + } + + private function addSearchWidgets(WidgetsList $widgetsList, $controller) + { + $category = 'Actions_SubmenuSitesearch'; + + $widgetsList->add($category, 'Actions_WidgetSearchKeywords', $controller, 'getSiteSearchKeywords'); + + if (Actions::isCustomVariablesPluginsEnabled()) { + $widgetsList->add($category, 'Actions_WidgetSearchCategories', $controller, 'getSiteSearchCategories'); + } + + $widgetsList->add($category, 'Actions_WidgetSearchNoResultKeywords', $controller, 'getSiteSearchNoResultKeywords'); + $widgetsList->add($category, 'Actions_WidgetPageUrlsFollowingSearch', $controller, 'getPageUrlsFollowingSiteSearch'); + $widgetsList->add($category, 'Actions_WidgetPageTitlesFollowingSearch', $controller, 'getPageTitlesFollowingSiteSearch'); + } + +} diff --git a/plugins/CoreConsole/Commands/GenerateWidget.php b/plugins/CoreConsole/Commands/GenerateWidget.php new file mode 100644 index 0000000000..836ea3970a --- /dev/null +++ b/plugins/CoreConsole/Commands/GenerateWidget.php @@ -0,0 +1,58 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ + +namespace Piwik\Plugins\CoreConsole\Commands; + +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + */ +class GenerateWidget extends GeneratePluginBase +{ + protected function configure() + { + $this->setName('generate:widget') + ->setDescription('Adds a plugin widget class to an existing plugin') + ->addOption('pluginname', null, InputOption::VALUE_REQUIRED, 'The name of an existing plugin which does not have any widgets defined yet'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $pluginName = $this->getPluginName($input, $output); + + $exampleFolder = PIWIK_INCLUDE_PATH . '/plugins/ExamplePlugin'; + $replace = array('ExampleRssWidget' => $pluginName); + $whitelistFiles = array('/Widgets.php'); + + $this->copyTemplateToPlugin($exampleFolder, $pluginName, $replace, $whitelistFiles); + + $this->writeSuccessMessage($output, array( + sprintf('Widgets.php for %s generated.', $pluginName), + 'You can now start defining your plugin widgets', + 'Enjoy!' + )); + } + + /** + * @param InputInterface $input + * @param OutputInterface $output + * @return array + * @throws \RunTimeException + */ + protected function getPluginName(InputInterface $input, OutputInterface $output) + { + $pluginNames = $this->getPluginNamesHavingNotSpecificFile('Widgets.php'); + $invalidName = 'You have to enter the name of an existing plugin which does not already have any widgets defined'; + + return $this->askPluginNameAndValidate($input, $output, $pluginNames, $invalidName); + } + +} diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index 83e0572327..cd4741f83e 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\CoreHome; -use Piwik\WidgetsList; - /** * */ @@ -23,20 +21,10 @@ class CoreHome extends \Piwik\Plugin return array( 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', - 'WidgetsList.addWidgets' => 'addWidgets', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys' ); } - /** - * Adds the donate form widget. - */ - public function addWidgets() - { - WidgetsList::add('Example Widgets', 'CoreHome_SupportPiwik', 'CoreHome', 'getDonateForm'); - WidgetsList::add('Example Widgets', 'Installation_Welcome', 'CoreHome', 'getPromoVideo'); - } - public function getStylesheetFiles(&$stylesheets) { $stylesheets[] = "libs/jquery/themes/base/jquery-ui.css"; diff --git a/plugins/CoreHome/Widgets.php b/plugins/CoreHome/Widgets.php new file mode 100644 index 0000000000..5aba86a2cd --- /dev/null +++ b/plugins/CoreHome/Widgets.php @@ -0,0 +1,24 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\CoreHome; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'Example Widgets'; + $controller = 'CoreHome'; + + $widgetsList->add($category, 'CoreHome_SupportPiwik', $controller, 'getDonateForm'); + $widgetsList->add($category, 'Installation_Welcome', $controller, 'getPromoVideo'); + } + +} diff --git a/plugins/CustomVariables/CustomVariables.php b/plugins/CustomVariables/CustomVariables.php index 49b35516d4..5f1c790f1c 100644 --- a/plugins/CustomVariables/CustomVariables.php +++ b/plugins/CustomVariables/CustomVariables.php @@ -9,13 +9,10 @@ namespace Piwik\Plugins\CustomVariables; use Piwik\ArchiveProcessor; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Tracker\Cache; use Piwik\Tracker; -use Piwik\WidgetsList; /** */ @@ -34,7 +31,6 @@ class CustomVariables extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -43,11 +39,6 @@ class CustomVariables extends \Piwik\Plugin return $hooks; } - public function addWidgets() - { - WidgetsList::add('General_Visitors', 'CustomVariables_CustomVariables', 'CustomVariables', 'getCustomVariables'); - } - public function install() { Model::install(); diff --git a/plugins/CustomVariables/Widgets.php b/plugins/CustomVariables/Widgets.php new file mode 100644 index 0000000000..183219b2d6 --- /dev/null +++ b/plugins/CustomVariables/Widgets.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\CustomVariables; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + WidgetsList::add('General_Visitors', 'CustomVariables_CustomVariables', 'CustomVariables', 'getCustomVariables'); + } + +} diff --git a/plugins/DevicesDetection/DevicesDetection.php b/plugins/DevicesDetection/DevicesDetection.php index 83a2d90d16..9cd6f6d877 100644 --- a/plugins/DevicesDetection/DevicesDetection.php +++ b/plugins/DevicesDetection/DevicesDetection.php @@ -17,7 +17,6 @@ use Piwik\Common; use Piwik\Db; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; -use Piwik\WidgetsList; require_once PIWIK_INCLUDE_PATH . '/plugins/DevicesDetection/functions.php'; @@ -88,7 +87,6 @@ class DevicesDetection extends \Piwik\Plugin { return array( 'Tracker.newVisitorInformation' => 'parseMobileVisitData', - 'WidgetsList.addWidgets' => 'addWidgets', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -101,7 +99,7 @@ class DevicesDetection extends \Piwik\Plugin * * @return array Category, Report Name, API Module, API action, Translated column name, & optional segment info */ - protected function getRawMetadataReports() + public function getRawMetadataReports() { $report = array( @@ -160,16 +158,6 @@ class DevicesDetection extends \Piwik\Plugin return $report; } - public function addWidgets() - { - foreach ($this->getRawMetadataReports() as $report) { - list($category, $name, $controllerName, $controllerAction) = $report; - if ($category == false) - continue; - WidgetsList::add($category, $name, $controllerName, $controllerAction); - } - } - /** * Get segments meta data */ diff --git a/plugins/DevicesDetection/Widgets.php b/plugins/DevicesDetection/Widgets.php new file mode 100644 index 0000000000..0df651064d --- /dev/null +++ b/plugins/DevicesDetection/Widgets.php @@ -0,0 +1,27 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\DevicesDetection; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $detection = new DevicesDetection(); + + foreach ($detection->getRawMetadataReports() as $report) { + list($category, $name, $controllerName, $controllerAction) = $report; + if ($category == false) + continue; + $widgetsList->add($category, $name, $controllerName, $controllerAction); + } + } + +} diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php index f39ddaf055..bdc7522e54 100644 --- a/plugins/Events/Events.php +++ b/plugins/Events/Events.php @@ -9,11 +9,8 @@ namespace Piwik\Plugins\Events; use Piwik\Common; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; -use Piwik\WidgetsList; /** */ @@ -28,20 +25,10 @@ class Events extends \Piwik\Plugin 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations', 'API.getReportMetadata' => 'getReportMetadata', - 'WidgetsList.addWidgets' => 'addWidgets', 'ViewDataTable.configure' => 'configureViewDataTable', ); } - public function addWidgets() - { - foreach(self::getLabelTranslations() as $apiMethod => $labels) { - $params = array( - 'secondaryDimension' => API::getInstance()->getDefaultSecondaryDimension($apiMethod) - ); - WidgetsList::add('Events_Events', $labels[0], 'Events', $apiMethod, $params); - } - } public function addMetricTranslations(&$translations) { @@ -98,7 +85,6 @@ class Events extends \Piwik\Plugin ); } - public function getSegmentsMetadata(&$segments) { $sqlFilter = '\\Piwik\\Tracker\\TableLogAction::getIdActionFromSegment'; diff --git a/plugins/Events/Widgets.php b/plugins/Events/Widgets.php new file mode 100644 index 0000000000..d08c285d66 --- /dev/null +++ b/plugins/Events/Widgets.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Events; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + foreach(Events::getLabelTranslations() as $apiMethod => $labels) { + $params = array( + 'secondaryDimension' => API::getInstance()->getDefaultSecondaryDimension($apiMethod) + ); + $widgetsList->add('Events_Events', $labels[0], 'Events', $apiMethod, $params); + } + } + +} diff --git a/plugins/ExamplePlugin/Widgets.php b/plugins/ExamplePlugin/Widgets.php new file mode 100644 index 0000000000..6ce0c590dc --- /dev/null +++ b/plugins/ExamplePlugin/Widgets.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\ExamplePlugin; + +use Piwik\WidgetsList; + +/** + * This class allows you to add or remove widgets. + * To configure a widget simply call the corresponding methods as described in the API-Reference: + * http://developer.piwik.org/api-reference/Piwik/WidgetsList + */ +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + // $widgetsList->add('Example Category', 'Example Widget Name', $controller = 'ExamplePlugin', $action = 'index'); + } + +} diff --git a/plugins/ExampleRssWidget/ExampleRssWidget.php b/plugins/ExampleRssWidget/ExampleRssWidget.php index 3a95b08dbb..ec035f36d1 100644 --- a/plugins/ExampleRssWidget/ExampleRssWidget.php +++ b/plugins/ExampleRssWidget/ExampleRssWidget.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\ExampleRssWidget; -use Piwik\WidgetsList; - /** * */ @@ -21,8 +19,7 @@ class ExampleRssWidget extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', - 'WidgetsList.addWidgets' => 'addWidgets' + 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles' ); } @@ -30,10 +27,4 @@ class ExampleRssWidget extends \Piwik\Plugin { $stylesheets[] = "plugins/ExampleRssWidget/stylesheets/rss.less"; } - - public function addWidgets() - { - WidgetsList::add('Example Widgets', 'Piwik.org Blog', 'ExampleRssWidget', 'rssPiwik'); - WidgetsList::add('Example Widgets', 'Piwik Changelog', 'ExampleRssWidget', 'rssChangelog'); - } } diff --git a/plugins/ExampleRssWidget/Widgets.php b/plugins/ExampleRssWidget/Widgets.php new file mode 100644 index 0000000000..56444cd9c5 --- /dev/null +++ b/plugins/ExampleRssWidget/Widgets.php @@ -0,0 +1,24 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\ExampleRssWidget; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'Example Widgets'; + $controller = 'ExampleRssWidget'; + + $widgetsList->add($category, 'Piwik.org Blog', $controller, 'rssPiwik'); + $widgetsList->add($category, 'Piwik Changelog', $controller, 'rssChangelog'); + } + +} diff --git a/plugins/Goals/Goals.php b/plugins/Goals/Goals.php index 8859f3c67a..fea8fb0b18 100644 --- a/plugins/Goals/Goals.php +++ b/plugins/Goals/Goals.php @@ -16,7 +16,6 @@ use Piwik\Plugin\ViewDataTable; use Piwik\Site; use Piwik\Tracker\GoalManager; use Piwik\Translate; -use Piwik\WidgetsList; /** * @@ -53,6 +52,11 @@ class Goals extends \Piwik\Plugin return $dimensionsByGroup; } + public function getEcommerceReports() + { + return $this->ecommerceReports; + } + public static function sortGoalDimensionsByModule($a, $b) { $order = array( @@ -103,7 +107,6 @@ class Goals extends \Piwik\Plugin 'Tracker.Cache.getSiteAttributes' => 'fetchGoalsFromDb', 'API.getReportMetadata.end' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', - 'WidgetsList.addWidgets' => 'addWidgets', 'SitesManager.deleteSite.end' => 'deleteSiteGoals', 'Goals.getReportsWithGoalMetrics' => 'getActualReportsWithGoalMetrics', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -468,30 +471,6 @@ class Goals extends \Piwik\Plugin $array['goals'] = API::getInstance()->getGoals($idSite); } - public function addWidgets() - { - $idSite = Common::getRequestVar('idSite', null, 'int'); - - // Ecommerce widgets - $site = new Site($idSite); - if ($site->isEcommerceEnabled()) { - WidgetsList::add('Goals_Ecommerce', 'Goals_EcommerceOverview', 'Goals', 'widgetGoalReport', array('idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER)); - WidgetsList::add('Goals_Ecommerce', 'Goals_EcommerceLog', 'Goals', 'getEcommerceLog'); - foreach ($this->ecommerceReports as $widget) { - WidgetsList::add('Goals_Ecommerce', $widget[0], $widget[1], $widget[2]); - } - } - - // Goals widgets - WidgetsList::add('Goals_Goals', 'Goals_GoalsOverview', 'Goals', 'widgetGoalsOverview'); - $goals = API::getInstance()->getGoals($idSite); - if (count($goals) > 0) { - foreach ($goals as $goal) { - WidgetsList::add('Goals_Goals', Common::sanitizeInputValue($goal['name']), 'Goals', 'widgetGoalReport', array('idGoal' => $goal['idgoal'])); - } - } - } - public function configureViewDataTable(ViewDataTable $view) { switch ($view->requestConfig->apiMethodToRequestDataTable) { diff --git a/plugins/Goals/Widgets.php b/plugins/Goals/Widgets.php new file mode 100644 index 0000000000..d7a90c9645 --- /dev/null +++ b/plugins/Goals/Widgets.php @@ -0,0 +1,53 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Goals; + +use Piwik\WidgetsList; +use Piwik\Common; +use Piwik\Site; +use Piwik\Piwik; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $idSite = Common::getRequestVar('idSite', null, 'int'); + + $site = new Site($idSite); + if ($site->isEcommerceEnabled()) { + $this->addEcommerceWidgets($widgetsList); + } + + $this->addGoalsWidgets($widgetsList, $idSite); + } + + private function addEcommerceWidgets(WidgetsList $widgetsList) + { + $goals = new Goals(); + + $widgetsList->add('Goals_Ecommerce', 'Goals_EcommerceOverview', 'Goals', 'widgetGoalReport', array('idGoal' => Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER)); + $widgetsList->add('Goals_Ecommerce', 'Goals_EcommerceLog', 'Goals', 'getEcommerceLog'); + foreach ($goals->getEcommerceReports() as $widget) { + $widgetsList->add('Goals_Ecommerce', $widget[0], $widget[1], $widget[2]); + } + } + + private function addGoalsWidgets(WidgetsList $widgetsList, $idSite) + { + $widgetsList->add('Goals_Goals', 'Goals_GoalsOverview', 'Goals', 'widgetGoalsOverview'); + + $goals = API::getInstance()->getGoals($idSite); + if (count($goals) > 0) { + foreach ($goals as $goal) { + $widgetsList->add('Goals_Goals', Common::sanitizeInputValue($goal['name']), 'Goals', 'widgetGoalReport', array('idGoal' => $goal['idgoal'])); + } + } + } + +} diff --git a/plugins/Insights/Insights.php b/plugins/Insights/Insights.php index 3a2abc53ef..0d9d5fe1be 100644 --- a/plugins/Insights/Insights.php +++ b/plugins/Insights/Insights.php @@ -8,8 +8,6 @@ */ namespace Piwik\Plugins\Insights; -use Piwik\WidgetsList; - /** */ class Insights extends \Piwik\Plugin @@ -20,7 +18,6 @@ class Insights extends \Piwik\Plugin public function getListHooksRegistered() { return array( - 'WidgetsList.addWidgets' => 'addWidgets', 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', 'ViewDataTable.addViewDataTable' => 'getAvailableVisualizations' @@ -32,12 +29,6 @@ class Insights extends \Piwik\Plugin $visualizations[] = __NAMESPACE__ . '\\Visualizations\\Insight'; } - public function addWidgets() - { - WidgetsList::add('Insights_WidgetCategory', 'Insights_OverviewWidgetTitle', 'Insights', 'getInsightsOverview'); - WidgetsList::add('Insights_WidgetCategory', 'Insights_MoversAndShakersWidgetTitle', 'Insights', 'getOverallMoversAndShakers'); - } - public function getStylesheetFiles(&$stylesheets) { $stylesheets[] = "plugins/Insights/stylesheets/insightVisualization.less"; diff --git a/plugins/Insights/Widgets.php b/plugins/Insights/Widgets.php new file mode 100644 index 0000000000..3c2f75f0b7 --- /dev/null +++ b/plugins/Insights/Widgets.php @@ -0,0 +1,24 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Insights; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'Insights_WidgetCategory'; + $controller = 'Insights'; + + $widgetsList->add($category, 'Insights_OverviewWidgetTitle', $controller, 'getInsightsOverview'); + $widgetsList->add($category, 'Insights_MoversAndShakersWidgetTitle', $controller, 'getOverallMoversAndShakers'); + } + +} diff --git a/plugins/Live/Live.php b/plugins/Live/Live.php index a2a62994ff..31efb4cf7a 100644 --- a/plugins/Live/Live.php +++ b/plugins/Live/Live.php @@ -8,10 +8,7 @@ */ namespace Piwik\Plugins\Live; -use Piwik\Menu\MenuAbstract; -use Piwik\Menu\MenuMain; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; -use Piwik\WidgetsList; require_once PIWIK_INCLUDE_PATH . '/plugins/Live/VisitorLog.php'; @@ -29,7 +26,6 @@ class Live extends \Piwik\Plugin return array( 'AssetManager.getJavaScriptFiles' => 'getJsFiles', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', - 'WidgetsList.addWidgets' => 'addWidget', 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' ); @@ -48,14 +44,6 @@ class Live extends \Piwik\Plugin $jsFiles[] = "plugins/Live/javascripts/visitorLog.js"; } - public function addWidget() - { - WidgetsList::add('Live!', 'Live_VisitorsInRealTime', 'Live', 'widget'); - WidgetsList::add('Live!', 'Live_VisitorLog', 'Live', 'getVisitorLog', array('small' => 1)); - WidgetsList::add('Live!', 'Live_RealTimeVisitorCount', 'Live', 'getSimpleLastVisitCount'); - WidgetsList::add('Live!', 'Live_VisitorProfile', 'Live', 'getVisitorProfilePopup'); - } - public function getClientSideTranslationKeys(&$translationKeys) { $translationKeys[] = "Live_VisitorProfile"; diff --git a/plugins/Live/Widgets.php b/plugins/Live/Widgets.php new file mode 100644 index 0000000000..bb07f55397 --- /dev/null +++ b/plugins/Live/Widgets.php @@ -0,0 +1,26 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Live; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'Live!'; + $controller = 'Live'; + + $widgetsList->add($category, 'Live_VisitorsInRealTime', $controller, 'widget'); + $widgetsList->add($category, 'Live_VisitorLog', $controller, 'getVisitorLog', array('small' => 1)); + $widgetsList->add($category, 'Live_RealTimeVisitorCount', $controller, 'getSimpleLastVisitCount'); + $widgetsList->add($category, 'Live_VisitorProfile', $controller, 'getVisitorProfilePopup'); + } + +} diff --git a/plugins/Provider/Provider.php b/plugins/Provider/Provider.php index 2c587e1f95..710e2a4930 100644 --- a/plugins/Provider/Provider.php +++ b/plugins/Provider/Provider.php @@ -17,7 +17,6 @@ use Piwik\IP; use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\PrivacyManager\Config as PrivacyManagerConfig; -use Piwik\WidgetsList; /** * @@ -31,7 +30,6 @@ class Provider extends \Piwik\Plugin { $hooks = array( 'Tracker.newVisitorInformation' => 'enrichVisitWithProviderInfo', - 'WidgetsList.addWidgets' => 'addWidget', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -86,11 +84,6 @@ class Provider extends \Piwik\Plugin Db::exec($query); } - public function addWidget() - { - WidgetsList::add('General_Visitors', 'Provider_WidgetProviders', 'Provider', 'getProvider'); - } - public function postLoad() { Piwik::addAction('Template.footerUserCountry', array('Piwik\Plugins\Provider\Provider', 'footerUserCountry')); diff --git a/plugins/Provider/Widgets.php b/plugins/Provider/Widgets.php new file mode 100644 index 0000000000..911ab10411 --- /dev/null +++ b/plugins/Provider/Widgets.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\Provider; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $widgetsList->add('General_Visitors', 'Provider_WidgetProviders', 'Provider', 'getProvider'); + } + +} diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php index b35d029b56..eee977c147 100644 --- a/plugins/Referrers/Referrers.php +++ b/plugins/Referrers/Referrers.php @@ -16,7 +16,6 @@ use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable\AllColumns; use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Pie; use Piwik\SettingsPiwik; -use Piwik\WidgetsList; /** * @see plugins/Referrers/functions.php @@ -33,7 +32,6 @@ class Referrers extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', diff --git a/plugins/Referrers/Widgets.php b/plugins/Referrers/Widgets.php new file mode 100644 index 0000000000..9fa85772cb --- /dev/null +++ b/plugins/Referrers/Widgets.php @@ -0,0 +1,34 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @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; +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'Referrers_Referrers'; + $controller = 'Referrers'; + + $widgetsList->add($category, 'Referrers_WidgetKeywords', $controller, 'getKeywords'); + $widgetsList->add($category, 'Referrers_WidgetExternalWebsites', $controller, 'getWebsites'); + $widgetsList->add($category, 'Referrers_WidgetSocials', $controller, 'getSocials'); + $widgetsList->add($category, 'Referrers_SearchEngines', $controller, 'getSearchEngines'); + $widgetsList->add($category, 'Referrers_Campaigns', $controller, 'getCampaigns'); + $widgetsList->add($category, 'General_Overview', $controller, 'getReferrerType'); + $widgetsList->add($category, 'Referrers_WidgetGetAll', $controller, 'getAll'); + + if (SettingsPiwik::isSegmentationEnabled()) { + $widgetsList->add('SEO', 'Referrers_WidgetTopKeywordsForPages', $controller, 'getKeywordsForPage'); + } + } + +} diff --git a/plugins/SEO/SEO.php b/plugins/SEO/SEO.php index 1c1c8e24c4..f295b1a28e 100644 --- a/plugins/SEO/SEO.php +++ b/plugins/SEO/SEO.php @@ -9,7 +9,6 @@ namespace Piwik\Plugins\SEO; use Piwik\Version; -use Piwik\WidgetsList; /** */ @@ -28,18 +27,4 @@ class SEO extends \Piwik\Plugin 'license_homepage' => 'http://www.gnu.org/licenses/gpl.html' ); } - - /** - * @see Piwik\Plugin::getListHooksRegistered - */ - public function getListHooksRegistered() - { - $hooks = array('WidgetsList.addWidgets' => 'addWidgets'); - return $hooks; - } - - function addWidgets() - { - WidgetsList::add('SEO', 'SEO_SeoRankings', 'SEO', 'getRank'); - } } diff --git a/plugins/SEO/Widgets.php b/plugins/SEO/Widgets.php new file mode 100644 index 0000000000..9e65a0185c --- /dev/null +++ b/plugins/SEO/Widgets.php @@ -0,0 +1,20 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\SEO; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $widgetsList->add('SEO', 'SEO_SeoRankings', 'SEO', 'getRank'); + } + +} diff --git a/plugins/UserCountry/UserCountry.php b/plugins/UserCountry/UserCountry.php index 56a680d23a..95e6f389ac 100644 --- a/plugins/UserCountry/UserCountry.php +++ b/plugins/UserCountry/UserCountry.php @@ -20,7 +20,6 @@ use Piwik\Plugins\UserCountry\LocationProvider\GeoIp; use Piwik\Plugins\UserCountry\LocationProvider; use Piwik\Plugins\UserCountry\LocationProvider\DefaultProvider; use Piwik\Url; -use Piwik\WidgetsList; /** * @see plugins/UserCountry/GeoIPAutoUpdater.php @@ -38,7 +37,6 @@ class UserCountry extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -164,23 +162,6 @@ class UserCountry extends \Piwik\Plugin } } - public function addWidgets() - { - $widgetContinentLabel = Piwik::translate('UserCountry_WidgetLocation') - . ' (' . Piwik::translate('UserCountry_Continent') . ')'; - $widgetCountryLabel = Piwik::translate('UserCountry_WidgetLocation') - . ' (' . Piwik::translate('UserCountry_Country') . ')'; - $widgetRegionLabel = Piwik::translate('UserCountry_WidgetLocation') - . ' (' . Piwik::translate('UserCountry_Region') . ')'; - $widgetCityLabel = Piwik::translate('UserCountry_WidgetLocation') - . ' (' . Piwik::translate('UserCountry_City') . ')'; - - WidgetsList::add('General_Visitors', $widgetContinentLabel, 'UserCountry', 'getContinent'); - WidgetsList::add('General_Visitors', $widgetCountryLabel, 'UserCountry', 'getCountry'); - WidgetsList::add('General_Visitors', $widgetRegionLabel, 'UserCountry', 'getRegion'); - WidgetsList::add('General_Visitors', $widgetCityLabel, 'UserCountry', 'getCity'); - } - public function getSegmentsMetadata(&$segments) { $segments[] = array( diff --git a/plugins/UserCountry/Widgets.php b/plugins/UserCountry/Widgets.php new file mode 100644 index 0000000000..6044e04e8c --- /dev/null +++ b/plugins/UserCountry/Widgets.php @@ -0,0 +1,36 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UserCountry; + +use Piwik\WidgetsList; +use Piwik\Piwik; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $widgetContinentLabel = Piwik::translate('UserCountry_WidgetLocation') + . ' (' . Piwik::translate('UserCountry_Continent') . ')'; + $widgetCountryLabel = Piwik::translate('UserCountry_WidgetLocation') + . ' (' . Piwik::translate('UserCountry_Country') . ')'; + $widgetRegionLabel = Piwik::translate('UserCountry_WidgetLocation') + . ' (' . Piwik::translate('UserCountry_Region') . ')'; + $widgetCityLabel = Piwik::translate('UserCountry_WidgetLocation') + . ' (' . Piwik::translate('UserCountry_City') . ')'; + + $category = 'General_Visitors'; + $controller = 'UserCountry'; + + WidgetsList::add($category, $widgetContinentLabel, $controller, 'getContinent'); + WidgetsList::add($category, $widgetCountryLabel, $controller, 'getCountry'); + WidgetsList::add($category, $widgetRegionLabel, $controller, 'getRegion'); + WidgetsList::add($category, $widgetCityLabel, $controller, 'getCity'); + } + +} diff --git a/plugins/UserSettings/UserSettings.php b/plugins/UserSettings/UserSettings.php index 4b5b81a29b..5da8af6c69 100644 --- a/plugins/UserSettings/UserSettings.php +++ b/plugins/UserSettings/UserSettings.php @@ -13,7 +13,6 @@ use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\Graph; use Piwik\Plugins\CoreVisualizations\Visualizations\HtmlTable; use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Pie; -use Piwik\WidgetsList; /** * @@ -51,7 +50,7 @@ class UserSettings extends \Piwik\Plugin 'resolution', 'log_visit.config_resolution', '1280x1024, 800x600, etc.', - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetBrowsers', @@ -61,7 +60,7 @@ class UserSettings extends \Piwik\Plugin 'browserCode', 'log_visit.config_browser_name', 'FF, IE, CH, SF, OP, etc.', - null,), + null), // browser version array('UserSettings_VisitorSettings', @@ -72,7 +71,7 @@ class UserSettings extends \Piwik\Plugin 'browserVersion', 'log_visit.config_browser_version', '1.0, 8.0, etc.', - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetBrowserFamilies', @@ -82,7 +81,7 @@ class UserSettings extends \Piwik\Plugin null, null, null, - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetPlugins', @@ -92,7 +91,7 @@ class UserSettings extends \Piwik\Plugin null, null, null, - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetWidescreen', @@ -102,7 +101,7 @@ class UserSettings extends \Piwik\Plugin null, null, null, - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetOperatingSystems', @@ -112,7 +111,7 @@ class UserSettings extends \Piwik\Plugin 'operatingSystemCode', 'log_visit.config_os', 'WXP, WI7, MAC, LIN, AND, IPD, etc.', - null,), + null), array('UserSettings_VisitorSettings', 'UserSettings_WidgetGlobalVisitors', @@ -164,7 +163,6 @@ class UserSettings extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', @@ -378,6 +376,11 @@ class UserSettings extends \Piwik\Plugin } } + public function getRawReportMetadata() + { + return $this->reportMetadata; + } + /** * Registers reports metadata * @@ -386,7 +389,7 @@ class UserSettings extends \Piwik\Plugin public function getReportMetadata(&$reports) { $i = 0; - foreach ($this->reportMetadata as $report) { + foreach ($this->getRawReportMetadata() as $report) { list($category, $name, $apiModule, $apiAction, $columnName) = $report; if ($category == false) continue; @@ -443,17 +446,4 @@ class UserSettings extends \Piwik\Plugin } } - /** - * Adds the various User Settings widgets - */ - function addWidgets() - { - // in this case, Widgets have same names as API reports - foreach ($this->reportMetadata as $report) { - list($category, $name, $controllerName, $controllerAction) = $report; - if ($category == false) continue; - WidgetsList::add($category, $name, $controllerName, $controllerAction); - } - } - } diff --git a/plugins/UserSettings/Widgets.php b/plugins/UserSettings/Widgets.php new file mode 100644 index 0000000000..36099b5149 --- /dev/null +++ b/plugins/UserSettings/Widgets.php @@ -0,0 +1,30 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\UserSettings; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $userSettings = new UserSettings(); + + foreach ($userSettings->getRawReportMetadata() as $report) { + list($category, $name, $controllerName, $controllerAction) = $report; + + if ($category == false) { + continue; + } + + $widgetsList->add($category, $name, $controllerName, $controllerAction); + } + } + +} diff --git a/plugins/VisitFrequency/VisitFrequency.php b/plugins/VisitFrequency/VisitFrequency.php index d6f710b7c1..f3dcf598b6 100644 --- a/plugins/VisitFrequency/VisitFrequency.php +++ b/plugins/VisitFrequency/VisitFrequency.php @@ -9,7 +9,6 @@ namespace Piwik\Plugins\VisitFrequency; use Piwik\Piwik; -use Piwik\WidgetsList; /** * @@ -22,7 +21,6 @@ class VisitFrequency extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'API.getReportMetadata' => 'getReportMetadata', ); return $hooks; @@ -52,11 +50,4 @@ class VisitFrequency extends \Piwik\Plugin 'order' => 40 ); } - - function addWidgets() - { - WidgetsList::add('General_Visitors', 'VisitFrequency_WidgetOverview', 'VisitFrequency', 'getSparklines'); - WidgetsList::add('General_Visitors', 'VisitFrequency_WidgetGraphReturning', 'VisitFrequency', 'getEvolutionGraph', - array('columns' => array('nb_visits_returning'))); - } } diff --git a/plugins/VisitFrequency/Widgets.php b/plugins/VisitFrequency/Widgets.php new file mode 100644 index 0000000000..cea4a4348d --- /dev/null +++ b/plugins/VisitFrequency/Widgets.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitFrequency; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'General_Visitors'; + $controller = 'VisitFrequency'; + + $widgetsList->add($category, 'VisitFrequency_WidgetOverview', $controller, 'getSparklines'); + $widgetsList->add($category, 'VisitFrequency_WidgetGraphReturning', $controller, 'getEvolutionGraph', + array('columns' => array('nb_visits_returning'))); + } + +} diff --git a/plugins/VisitTime/VisitTime.php b/plugins/VisitTime/VisitTime.php index 1932095fb3..fbf115748c 100644 --- a/plugins/VisitTime/VisitTime.php +++ b/plugins/VisitTime/VisitTime.php @@ -17,7 +17,6 @@ use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\Graph; use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Bar; use Piwik\Site; -use Piwik\WidgetsList; /** * @@ -30,7 +29,6 @@ class VisitTime extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'Goals.getReportsWithGoalMetrics' => 'getReportsWithGoalMetrics', 'API.getReportMetadata' => 'getReportMetadata', 'API.getSegmentDimensionMetadata' => 'getSegmentsMetadata', @@ -76,13 +74,6 @@ class VisitTime extends \Piwik\Plugin ); } - function addWidgets() - { - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_WidgetLocalTime', 'VisitTime', 'getVisitInformationPerLocalTime'); - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_WidgetServerTime', 'VisitTime', 'getVisitInformationPerServerTime'); - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitTime_VisitsByDayOfWeek', 'VisitTime', 'getByDayOfWeek'); - } - public function getReportsWithGoalMetrics(&$dimensions) { $dimensions[] = array('category' => Piwik::translate('VisitTime_ColumnServerTime'), diff --git a/plugins/VisitTime/Widgets.php b/plugins/VisitTime/Widgets.php new file mode 100644 index 0000000000..32541ea4f4 --- /dev/null +++ b/plugins/VisitTime/Widgets.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitTime; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'VisitsSummary_VisitsSummary'; + $controller = 'VisitTime'; + + $widgetsList->add($category, 'VisitTime_WidgetLocalTime', $controller, 'getVisitInformationPerLocalTime'); + $widgetsList->add($category, 'VisitTime_WidgetServerTime', $controller, 'getVisitInformationPerServerTime'); + $widgetsList->add($category, 'VisitTime_VisitsByDayOfWeek', $controller, 'getByDayOfWeek'); + } + +} diff --git a/plugins/VisitorInterest/VisitorInterest.php b/plugins/VisitorInterest/VisitorInterest.php index 1d83b6e60b..0401883781 100644 --- a/plugins/VisitorInterest/VisitorInterest.php +++ b/plugins/VisitorInterest/VisitorInterest.php @@ -15,7 +15,6 @@ use Piwik\Piwik; use Piwik\Plugin\ViewDataTable; use Piwik\Plugins\CoreVisualizations\Visualizations\Cloud; use Piwik\Plugins\CoreVisualizations\Visualizations\Graph; -use Piwik\WidgetsList; /** * @@ -28,7 +27,6 @@ class VisitorInterest extends \Piwik\Plugin public function getListHooksRegistered() { $hooks = array( - 'WidgetsList.addWidgets' => 'addWidgets', 'API.getReportMetadata' => 'getReportMetadata', 'ViewDataTable.configure' => 'configureViewDataTable', 'ViewDataTable.getDefaultType' => 'getDefaultTypeViewDataTable' @@ -97,14 +95,6 @@ class VisitorInterest extends \Piwik\Plugin ); } - public function addWidgets() - { - WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetLengths', 'VisitorInterest', 'getNumberOfVisitsPerVisitDuration'); - WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetPages', 'VisitorInterest', 'getNumberOfVisitsPerPage'); - WidgetsList::add('General_Visitors', 'VisitorInterest_visitsByVisitCount', 'VisitorInterest', 'getNumberOfVisitsByVisitCount'); - WidgetsList::add('General_Visitors', 'VisitorInterest_WidgetVisitsByDaysSinceLast', 'VisitorInterest', 'getNumberOfVisitsByDaysSinceLast'); - } - function postLoad() { Piwik::addAction('Template.headerVisitsFrequency', array('Piwik\Plugins\VisitorInterest\VisitorInterest', 'headerVisitsFrequency')); diff --git a/plugins/VisitorInterest/Widgets.php b/plugins/VisitorInterest/Widgets.php new file mode 100644 index 0000000000..8aa6f12627 --- /dev/null +++ b/plugins/VisitorInterest/Widgets.php @@ -0,0 +1,26 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitorInterest; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'General_Visitors'; + $controller = 'VisitorInterest'; + + $widgetsList->add($category, 'VisitorInterest_WidgetLengths', $controller, 'getNumberOfVisitsPerVisitDuration'); + $widgetsList->add($category, 'VisitorInterest_WidgetPages', $controller, 'getNumberOfVisitsPerPage'); + $widgetsList->add($category, 'VisitorInterest_visitsByVisitCount', $controller, 'getNumberOfVisitsByVisitCount'); + $widgetsList->add($category, 'VisitorInterest_WidgetVisitsByDaysSinceLast', $controller, 'getNumberOfVisitsByDaysSinceLast'); + } + +} diff --git a/plugins/VisitsSummary/VisitsSummary.php b/plugins/VisitsSummary/VisitsSummary.php index e6d77b6447..3c3bcceda8 100644 --- a/plugins/VisitsSummary/VisitsSummary.php +++ b/plugins/VisitsSummary/VisitsSummary.php @@ -9,7 +9,6 @@ namespace Piwik\Plugins\VisitsSummary; use Piwik\Piwik; -use Piwik\WidgetsList; /** * Note: This plugin does not hook on Daily and Period Archiving like other Plugins because it reports the @@ -27,7 +26,6 @@ class VisitsSummary extends \Piwik\Plugin { return array( 'API.getReportMetadata' => 'getReportMetadata', - 'WidgetsList.addWidgets' => 'addWidgets', 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', ); } @@ -61,13 +59,6 @@ class VisitsSummary extends \Piwik\Plugin $stylesheets[] = "plugins/VisitsSummary/stylesheets/datatable.less"; } - function addWidgets() - { - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetLastVisits', 'VisitsSummary', 'getEvolutionGraph', array('columns' => array('nb_visits'))); - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetVisits', 'VisitsSummary', 'getSparklines'); - WidgetsList::add('VisitsSummary_VisitsSummary', 'VisitsSummary_WidgetOverviewGraph', 'VisitsSummary', 'index'); - } - } diff --git a/plugins/VisitsSummary/Widgets.php b/plugins/VisitsSummary/Widgets.php new file mode 100644 index 0000000000..b51d855106 --- /dev/null +++ b/plugins/VisitsSummary/Widgets.php @@ -0,0 +1,25 @@ +<?php +/** + * Piwik - Open source web analytics + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\VisitsSummary; + +use Piwik\WidgetsList; + +class Widgets extends \Piwik\Plugin\Widgets +{ + public function configure(WidgetsList $widgetsList) + { + $category = 'VisitsSummary_VisitsSummary'; + $controller = 'VisitsSummary'; + + $widgetsList->add($category, 'VisitsSummary_WidgetLastVisits', $controller, 'getEvolutionGraph', array('columns' => array('nb_visits'))); + $widgetsList->add($category, 'VisitsSummary_WidgetVisits', $controller, 'getSparklines'); + $widgetsList->add($category, 'VisitsSummary_WidgetOverviewGraph', $controller, 'index'); + } + +} |