Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Giehl <stefan@piwik.org>2017-09-04 07:49:32 +0300
committerMatthieu Aubry <mattab@users.noreply.github.com>2017-09-04 07:49:32 +0300
commit660df51720386077f0a1433d86bcb96ef002de35 (patch)
treeb953fcb22811d3e76f752713eee1c619b6d82098 /plugins/Events
parentb40a997defdea7ba6984b268bb7c791d089cfd3f (diff)
Customizeable / Extendable Visitor Profile & Visitor Log (#11579)
* move setting visitor details into own classes instead of using an event * move manipulating actions to VisitorDetails classes * move some more parts to plugins * update test files as order of columns changed * implement new VisitorDetails method to provide actions * move rendering actions to visitordetail classes * render visitor properties in new classes * makes it possible to attach icons to visitor log * moves rendering of action tooltip into new visitordetails method * adds event for extending custom action dimension fields * small improvements * fetch log_link_visit_action.idpageview for actions * improve variable name * started to improve/change visitor profile * show devices summary in visitor profile * also remove empty xml tags for api tests * hide actions in visitor profile by default * move all icons to the middle of visitor log * small change * move rendering referrer information to referrers plugin * move provider logic to provider plugin * show content interactions in visitor log * improve look of content interactions/impressions in visitor log / profile * hide idpageview from tests * update changelog * move rendering events to Events plugin * do not hide duplicate page views in visitor log, but show them with a refresh icon instead * show top visited pages in visitor profile * always show visitor profile link in visitor log Still hidden in a widget by default, as it might overlay some other content * Show info about not shown actions truncated due to config setting * use bulk queries to fetch actions instead of fetching them for each visit * small adjustments * improve some loops to improve memory usage * move gathering visitor profile informations to VisitorDetails classes * update screenshots * update test files * move rendering of visitor profile summary to visitor details classes * improve templates * Makes VisitorDetailsAbstract class api and improves comments * show visit details in visitor profile * improve css * reverse enumeration of visits in visitor profile * improve css * Show visit id in IP tooltip * Small CSS improvements * further adjustments * sort devices by count * adds UI tests for visitor log and profile * Show bandwidth in visitor profile test * show actions by default and add button to toggle all together * CSS cleanup * remove border around refresh icon * add tooltip for refresh icon in profile * move first/last visit before top visited pages * Improve text shown for unique pageviews * link urls in top visited pages * improve sorting of device list * improve tests * Improve device overview in visitor profile * only render top pages if at least one page was visited more than once * make visitor id non bold * hide visitor type icon in profile, and show latest visits icons in overview * fix search engine icon in visitor details * small improvements * only render view if required * show visit icons only on hover in profile * remove from again * test improves * show text besides icon in profile header * improve tests * Removes unused CSS and JS * Reformats CSS * Removes invisible paper clip * Removes unused profile images from Live plugin * raise test timeouts * Improve UI tests splitting for travis * show device type in profile header if no resolution is available * prevent text overlapping * no retries * fix test * change summary order * fix position of export icon * fixes tooltip text * improve pages overview * visitor details order * action tooltip order * show only ecommerce icon if no goals where converted * show custom variables summary in profile * show user id in same size as headline * link referer urls for first/last visit in profile * make profile xml compatible * try to improve ui test * increase bottom marign * increase version number * small adjustments * CSS Rewrite for visitor profile * center action icons in visitor log and profile * improve widgetized visitor profile * small layout fix * always populate raw referrer url for visitor details * update expected test files * Refactor profile summaries into additional classes * update screenshots * submodule update * update piwik-icons submodule (#11904) * update piwik-icons submodule * fix some system tests * update screenshots * make device list xml compatible * improve translation * improve icon position * improves spacings * update test files * small css improvement * update screenshots
Diffstat (limited to 'plugins/Events')
-rw-r--r--plugins/Events/Events.php17
-rw-r--r--plugins/Events/VisitorDetails.php56
-rw-r--r--plugins/Events/templates/_actionEvent.twig25
3 files changed, 92 insertions, 6 deletions
diff --git a/plugins/Events/Events.php b/plugins/Events/Events.php
index 8ae0f5cb2e..eee4ce7f52 100644
--- a/plugins/Events/Events.php
+++ b/plugins/Events/Events.php
@@ -27,16 +27,11 @@ class Events extends \Piwik\Plugin
'Metrics.getDefaultMetricDocumentationTranslations' => 'addMetricDocumentationTranslations',
'Metrics.getDefaultMetricTranslations' => 'addMetricTranslations',
'ViewDataTable.configure' => 'configureViewDataTable',
- 'Live.getAllVisitorDetails' => 'extendVisitorDetails',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
+ 'Actions.getCustomActionDimensionFieldsAndJoins' => 'provideActionDimensionFields'
);
}
- public function extendVisitorDetails(&$visitor, $details)
- {
- $visitor['events'] = $details['visit_total_events'];
- }
-
public function addMetricTranslations(&$translations)
{
$translations = array_merge($translations, $this->getMetricTranslations());
@@ -265,4 +260,14 @@ class Events extends \Piwik\Plugin
{
$stylesheets[] = "plugins/Events/stylesheets/datatable.less";
}
+
+ public function provideActionDimensionFields(&$fields, &$joins)
+ {
+ $fields[] = 'log_action_event_category.name AS eventCategory';
+ $fields[] = 'log_action_event_action.name as eventAction';
+ $joins[] = 'LEFT JOIN ' . Common::prefixTable('log_action') . ' AS log_action_event_action
+ ON log_link_visit_action.idaction_event_action = log_action_event_action.idaction';
+ $joins[] = 'LEFT JOIN ' . Common::prefixTable('log_action') . ' AS log_action_event_category
+ ON log_link_visit_action.idaction_event_category = log_action_event_category.idaction';
+ }
}
diff --git a/plugins/Events/VisitorDetails.php b/plugins/Events/VisitorDetails.php
new file mode 100644
index 0000000000..76dfd37806
--- /dev/null
+++ b/plugins/Events/VisitorDetails.php
@@ -0,0 +1,56 @@
+<?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\Events;
+
+use Piwik\Plugins\Live\VisitorDetailsAbstract;
+use Piwik\Tracker\Action;
+use Piwik\View;
+
+class VisitorDetails extends VisitorDetailsAbstract
+{
+ public function extendActionDetails(&$action, $nextAction, $visitorDetails)
+ {
+ if ($action['type'] == Action::TYPE_EVENT) {
+ $action['type'] = 'event';
+ $action['icon'] = 'plugins/Morpheus/images/event.png';
+ }
+ }
+
+ public function extendVisitorDetails(&$visitor)
+ {
+ $visitor['events'] = $this->details['visit_total_events'];
+ }
+
+ public function renderAction($action, $previousAction, $visitorDetails)
+ {
+ if ($action['type'] != 'event') {
+ return;
+ }
+
+ $view = new View('@Events/_actionEvent.twig');
+ $view->action = $action;
+ $view->previousAction = $previousAction;
+ $view->visitInfo = $visitorDetails;
+ return $view->render();
+ }
+
+
+ public function initProfile($visits, &$profile)
+ {
+ $profile['totalEvents'] = 0;
+ }
+
+ public function handleProfileAction($action, &$profile)
+ {
+ if ($action['type'] != 'event') {
+ return;
+ }
+ $profile['totalEvents']++;
+ }
+} \ No newline at end of file
diff --git a/plugins/Events/templates/_actionEvent.twig b/plugins/Events/templates/_actionEvent.twig
new file mode 100644
index 0000000000..6fa44108b1
--- /dev/null
+++ b/plugins/Events/templates/_actionEvent.twig
@@ -0,0 +1,25 @@
+<li class="action" title="{{ postEvent('Live.renderActionTooltip', action, visitInfo) }}">
+ <div>
+ {% if action.pageTitle|default(false) is not empty %}
+ <span class="truncated-text-line">{{ action.pageTitle|rawSafeDecoded }}</span>
+ {% endif %}
+ <img src='plugins/Morpheus/images/event.png' title='{{ 'Events_Event'|translate }}' class="action-list-action-icon event">
+ <span class="truncated-text-line event">{{ action.eventCategory|rawSafeDecoded }}
+ - {{ action.eventAction|rawSafeDecoded }} {% if action.eventName is defined %}- {{ action.eventName|rawSafeDecoded }}{% endif %} {% if action.eventValue is defined %}[{{ action.eventValue }}]{% endif %}</span>
+ {% if action.url is not empty %}
+ {% if previousAction.url|default(false) == action.url %}
+ {# For events, do not show (url) if the Event URL is the same as the URL last displayed #}
+ {% else %}
+ {% if action.url|trim|lower starts with 'javascript:' or
+ action.url|trim|lower starts with 'vbscript:' or
+ action.url|trim|lower starts with 'data:' %}
+ {{ action.url }}
+ {% else %}
+ <a href="{{ action.url }}" rel="noreferrer" target="_blank" class="truncated-text-line">
+ {{ action.url|replace({'http://': '', 'https://': ''}) }}
+ </a>
+ {% endif %}
+ {% endif %}
+ {% endif %}
+ </div>
+</li>