PDF rausgenommen
This commit is contained in:
@ -0,0 +1,37 @@
|
||||
<li class="{% if action.goalName is defined %}goal{% else %}action{% endif %}"
|
||||
title="{{ postEvent('Live.renderActionTooltip', action, visitInfo) }}">
|
||||
<div>
|
||||
{# Page view / Download / Outlink #}
|
||||
{% if action.pageTitle|default(false) is not empty %}
|
||||
<span class="truncated-text-line">{{ action.pageTitle|rawSafeDecoded }}</span>
|
||||
{% endif %}
|
||||
{% if action.siteSearchKeyword is defined %}
|
||||
{% if action.type == 'search' %}
|
||||
<img src='{{ action.iconSVG|default(action.icon) }}' title='{{ 'Actions_SubmenuSitesearch'|translate }}'
|
||||
class="action-list-action-icon search">
|
||||
{% endif %}
|
||||
<span class="truncated-text-line">{{ action.siteSearchKeyword|rawSafeDecoded }}</span>
|
||||
{% endif %}
|
||||
{% if action.url is not empty %}
|
||||
{% if action.iconSVG|default(action.icon) is not empty %}
|
||||
<img src='{{ action.iconSVG|default(action.icon) }}' class="action-list-action-icon {{ action.type }}">
|
||||
{% endif %}
|
||||
{% if action.type == 'action' and action.pageTitle|default(false) is not empty %}<p>{% endif %}
|
||||
{% 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|safelink|e('html_attr') }}" rel="noreferrer noopener" target="_blank"
|
||||
class="action-list-url truncated-text-line">
|
||||
{{ action.url|replace({'http://': '', 'https://': ''}) }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if action.type == 'action' and action.pageTitle|default(false) is not empty %}</p>{% endif %}
|
||||
{% elseif action.type != 'search' %}
|
||||
<p>
|
||||
<span>{{ 'General_NotDefined'|translate('Actions_ColumnPageURL'|translate) }}</span>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</li>
|
@ -0,0 +1,54 @@
|
||||
<li class="action"
|
||||
title="{{ postEvent('Live.renderActionTooltip', action, visitInfo) }}">
|
||||
<div>
|
||||
{# Ecommerce Abandoned Cart / Ecommerce Order #}
|
||||
<img src="{{ action.iconSVG|default(action.icon) }}" class="action-list-action-icon"/>
|
||||
{% if action.type == 'ecommerceOrder' %}
|
||||
<strong>{{ 'Goals_EcommerceOrder'|translate }}</strong>
|
||||
<span style='color:#666;'>({{ action.orderId }})</span>
|
||||
{% else %}
|
||||
<strong>{{ 'Goals_AbandonedCart'|translate }}</strong>
|
||||
|
||||
{# TODO: would be nice to have the icons Orders / Cart in the ecommerce log footer #}
|
||||
{% endif %}
|
||||
<p>
|
||||
<span {% if not isWidget %}style='margin-left:22px;'{% endif %}>
|
||||
{% if action.type == 'ecommerceOrder' %}
|
||||
{# spacing is important for tooltip to look nice #}
|
||||
{% set ecommerceOrderTooltip %}{{ 'General_ColumnRevenue'|translate }}: {{ action.revenue|money(visitInfo.idSite)|raw }}
|
||||
{% if action.revenueSubTotal is not empty %} - {{ 'General_Subtotal'|translate }}: {{ action.revenueSubTotal|money(visitInfo.idSite)|raw }}{% endif %}
|
||||
|
||||
{% if action.revenueTax is not empty %} - {{ 'General_Tax'|translate }}: {{ action.revenueTax|money(visitInfo.idSite)|raw }}{% endif %}
|
||||
|
||||
{% if action.revenueShipping is not empty %} - {{ 'General_Shipping'|translate }}: {{ action.revenueShipping|money(visitInfo.idSite)|raw }}{% endif %}
|
||||
|
||||
{% if action.revenueDiscount is not empty %} - {{ 'General_Discount'|translate }}: {{ action.revenueDiscount|money(visitInfo.idSite)|raw }}{% endif %}
|
||||
{% endset %}
|
||||
<abbr title="{{ ecommerceOrderTooltip }}">{{ 'General_ColumnRevenue'|translate }}:
|
||||
{% else %}
|
||||
{% set revenueLeft %}{{ 'General_ColumnRevenue'|translate }}{% endset %}
|
||||
{{ 'Goals_LeftInCart'|translate(revenueLeft) }}:
|
||||
{% endif %}
|
||||
<strong>{{ action.revenue|money(visitInfo.idSite)|raw }}</strong>
|
||||
{% if action.type == 'ecommerceOrder' %}
|
||||
</abbr>
|
||||
{% endif %}, {{ 'General_Quantity'|translate }}: {{ action.items }}
|
||||
|
||||
{# Ecommerce items in Cart/Order #}
|
||||
{% if action.itemDetails is not empty %}
|
||||
<ul style='list-style:square;margin-left:{% if isWidget %}15{% else %}50{% endif %}px;'>
|
||||
{% for product in action.itemDetails %}
|
||||
<li>
|
||||
{{ product.itemSKU }}{% if product.itemName is not empty %}: {{ product.itemName }}{% endif %}
|
||||
{% if product.itemCategory is not empty %} ({{ product.itemCategory }}){% endif %}
|
||||
,
|
||||
{{ 'General_Quantity'|translate }}: {{ product.quantity }},
|
||||
{{ 'General_Price'|translate }}: {{ product.price|money(visitInfo.idSite)|raw }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
11
msd2/tracking/piwik/plugins/Live/templates/_actionGoal.twig
Normal file
11
msd2/tracking/piwik/plugins/Live/templates/_actionGoal.twig
Normal file
@ -0,0 +1,11 @@
|
||||
<li class="action"
|
||||
title="{{ postEvent('Live.renderActionTooltip', action, visitInfo) }}">
|
||||
<div>
|
||||
{# Goal conversion #}
|
||||
<img src="{{ action.iconSVG|default(action.icon) }}" class="action-list-action-icon" />
|
||||
<strong>{{ action.goalName }}</strong>
|
||||
{% if action.revenue > 0 %}, {{ 'General_ColumnRevenue'|translate }}:
|
||||
<strong>{{ action.revenue|money(visitInfo.idSite)|raw }}</strong>
|
||||
{% endif %}
|
||||
</div>
|
||||
</li>
|
@ -0,0 +1,8 @@
|
||||
{{ action.serverTimePretty }}{% if action.url is defined and action.url|trim|length %}
|
||||
|
||||
{{ action.url }}{% endif %}{%- if action.generationTime is defined %}
|
||||
|
||||
{{ 'General_ColumnGenerationTime'|translate }}: {{ action.generationTime|raw }}{% endif %}
|
||||
{%- if action.timeSpentPretty is defined %}
|
||||
|
||||
{{ 'General_TimeOnPage'|translate }}: {{ action.timeSpentPretty|raw }}{% endif -%}
|
14
msd2/tracking/piwik/plugins/Live/templates/_actionsList.twig
Normal file
14
msd2/tracking/piwik/plugins/Live/templates/_actionsList.twig
Normal file
@ -0,0 +1,14 @@
|
||||
{% set previousAction = false %}
|
||||
{% for action in actionDetails %}
|
||||
|
||||
{{ postEvent('Live.renderAction', action, previousAction, visitInfo) }}
|
||||
|
||||
{% set previousAction = action %}
|
||||
{% endfor %}
|
||||
|
||||
{% if visitInfo.truncatedActionsCount is defined %}
|
||||
<li class="more">
|
||||
<span class="icon-info"></span>
|
||||
{{ 'Live_MorePagesNotDisplayed'|translate }}
|
||||
</li>
|
||||
{% endif %}
|
@ -0,0 +1,54 @@
|
||||
{% set displayVisitorsInOwnColumn = (isWidget ? false : true) %}
|
||||
|
||||
{% set cycleIndex=0 %}
|
||||
{% for visitor in dataTable.getRows() %}
|
||||
{% set visitorRow %}
|
||||
<div class="card row hoverable">
|
||||
|
||||
{% if visitor.getColumn('visitorId') is not empty and not clientSideParameters.hideProfileLink %}
|
||||
<a class="visitor-log-visitor-profile-link visitorLogTooltip" data-visitor-id="{{ visitor.getColumn("visitorId") }}">
|
||||
<img src="plugins/Live/images/visitorProfileLaunch.png"/> <span>{{ 'Live_ViewVisitorProfile'|translate }}
|
||||
{%- if visitor.getColumn('userId') is not empty %}: {{ visitor.getColumn('userId')|rawSafeDecoded }}{% endif %}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% set cycleIndex=cycleIndex+1 %}
|
||||
<div class="col s12 m{% if displayVisitorsInOwnColumn %}3{% else %}4{% endif %}">
|
||||
{{ postEvent('Live.renderVisitorDetails', visitor) }}
|
||||
</div>
|
||||
|
||||
{% if displayVisitorsInOwnColumn %}
|
||||
<div class="col s12 m2 own-visitor-column">
|
||||
{{ postEvent('Live.renderVisitorIcons', visitor) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="col s12 m{% if displayVisitorsInOwnColumn %}7{% else %}8{% endif %} column {% if visitor.getColumn('visitConverted') and not isWidget %}highlightField{% endif %}">
|
||||
{{ postEvent('Live.visitorLogViewBeforeActionsInfo', visitor) }}
|
||||
|
||||
<strong>
|
||||
{% set actionCount = visitor.getColumn('actionDetails')|length %}
|
||||
{% if visitor.truncatedActionsCount is defined %}
|
||||
{% set actionCount = actionCount + visitor.truncatedActionsCount %}
|
||||
{% endif %}
|
||||
{{ actionCount }}
|
||||
{% if actionCount <= 1 %}
|
||||
{{ 'General_Action'|translate }}
|
||||
{% else %}
|
||||
{{ 'General_Actions'|translate }}
|
||||
{% endif %}
|
||||
{% if visitor.getColumn('visitDuration') > 0 %}- {{ visitor.getColumn('visitDurationPretty')|raw }}{% endif %}
|
||||
</strong>
|
||||
|
||||
<div class="visitor-log-page-list">
|
||||
<ol class='visitorLog'>
|
||||
{% include "@Live/_actionsList.twig" with {'actionDetails': visitor.getColumn('actionDetails'), 'visitInfo': visitor} %}
|
||||
</ol>
|
||||
</div>
|
||||
{{ postEvent('Live.visitorLogViewAfterActionsInfo', visitor) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endset %}
|
||||
|
||||
{{ visitorRow }}
|
||||
{% endfor %}
|
@ -0,0 +1,48 @@
|
||||
{% set pageviewDetails %}
|
||||
{{ visitorData.totalUniquePageViews }} {{ 'General_ColumnUniquePageviews'|translate }}, {{ visitorData.totalRevisitedPages }} {{ 'Actions_RevisitedPages'|translate }}
|
||||
{% endset %}
|
||||
|
||||
<div class="visitor-profile-summary visitor-profile-resume">
|
||||
<h1>{{ 'General_Summary'|translate }}</h1>
|
||||
<div>
|
||||
{% if visitorData.hasMoreVisits %}
|
||||
<p>{{ 'Live_LimitedSummary'|translate('<strong>' ~ visitorData.totalVisits ~ '</strong>')|raw }}</p>
|
||||
{% endif %}
|
||||
{% if visitorData.totalPageViews != visitorData.totalActions %}
|
||||
{% set actionDetails = [] %}
|
||||
{% if visitorData.totalPageViews > 0 %}{% set actionDetails = actionDetails|merge(['<span title="' ~ pageviewDetails ~ '">' ~ visitorData.totalPageViews ~ ' ' ~ 'General_ColumnPageviews'|translate ~ '</span>']) %}{% endif %}
|
||||
{% if visitorData.totalEvents is defined and visitorData.totalEvents > 0 %}{% set actionDetails = actionDetails|merge([visitorData.totalEvents ~ ' ' ~ 'Events_Events'|translate]) %}{% endif %}
|
||||
{% if visitorData.totalDownloads > 0 %}{% set actionDetails = actionDetails|merge([visitorData.totalDownloads ~ ' ' ~ 'General_Downloads'|translate]) %}{% endif %}
|
||||
{% if visitorData.totalOutlinks > 0 %}{% set actionDetails = actionDetails|merge([visitorData.totalOutlinks ~ ' ' ~ 'General_Outlinks'|translate]) %}{% endif %}
|
||||
{% if visitorData.totalSearches > 0 %}{% set actionDetails = actionDetails|merge([visitorData.totalSearches ~ ' ' ~ 'Actions_ColumnSearches'|translate]) %}{% endif %}
|
||||
<p>{{ 'Live_VisitSummaryWithActionDetails'|translate('<strong>' ~ visitorData.totalVisitDurationPretty ~ '</strong>', '', '', '<strong>' ~ visitorData.totalActions, '</strong>', actionDetails|join(', ') , '<strong>' ~ visitorData.totalVisits, '</strong>')|raw }}</p>
|
||||
{% else %}
|
||||
<p>{{ 'Live_VisitSummary'|translate('<strong>' ~ visitorData.totalVisitDurationPretty ~ '</strong>', '', '', '<strong title="' ~ pageviewDetails ~ '">' ~ visitorData.totalActions, '</strong>', '<strong>' ~ visitorData.totalVisits, '</strong>')|raw }}</p>
|
||||
{% endif %}
|
||||
{% if visitorData.totalGoalConversions is defined %}
|
||||
<p>{% if visitorData.totalGoalConversions %}<strong>{% endif %}{{ 'Live_ConvertedNGoals'|translate(visitorData.totalGoalConversions) }}{% if visitorData.totalGoalConversions %}</strong>{% endif %}
|
||||
{%- if visitorData.totalGoalConversions %}
|
||||
{% set goalList %}
|
||||
{%- for idGoal, totalConversions in visitorData.totalConversionsByGoal -%}
|
||||
{%- set idGoal = idGoal[7:] -%}
|
||||
{% if goals[idGoal] is defined %}
|
||||
{%- if not loop.first %}, {% endif -%}{{- totalConversions }} {{ goals[idGoal]['name'] -}}
|
||||
{% endif %}
|
||||
{%- endfor -%}
|
||||
{% endset %}
|
||||
{% if goalList %}({{ goalList }}){% endif %}
|
||||
{%- endif %}.</p>
|
||||
{% endif %}
|
||||
{% if visitorData.totalSearches|default(0) %}
|
||||
<p>
|
||||
{{ 'Actions_WidgetSearchKeywords'|translate }}:
|
||||
{%- for entry in visitorData.searches %} <strong title="{% if entry.searches == 1 %}{{ 'Actions_OneSearch'|translate }}{% else %}{{ 'UserCountryMap_Searches'|translate(entry.searches) }}{% endif %}">{{ entry.keyword }}</strong>{% if not loop.last %},{% endif %}{% endfor %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% if visitorData.averagePageGenerationTime is defined %}
|
||||
<p title="{{ 'Live_CalculatedOverNPageViews'|translate(visitorData.totalPageViewsWithTiming) }}">
|
||||
{{ 'Live_AveragePageGenerationTime'|translate('<strong>' ~ visitorData.averagePageGenerationTime ~ 's</strong>')|raw }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,39 @@
|
||||
<div class="visitor-profile-summary visitor-profile-important-visits">
|
||||
{%- set keywordNotDefined = 'General_NotDefined'|translate('General_ColumnKeyword'|translate) -%}
|
||||
<div>
|
||||
<h1>{% if visitorData.visitsAggregated == 100 %}{{ 'General_Visit'|translate }}# 100{% else %}{{ 'Live_FirstVisit'|translate }}{% endif %}</h1>
|
||||
<div>
|
||||
<p><strong>{{ visitorData.firstVisit.prettyDate }}</strong> - {{ 'UserCountryMap_DaysAgo'|translate(visitorData.firstVisit.daysAgo) }}</p>
|
||||
<p>
|
||||
{{ 'General_FromReferrer'|translate }} <strong {% if visitorData.firstVisit.referrerType == 'search' and '(' not in visitorData.firstVisit.referralSummary %}title="{{ keywordNotDefined }}"{% endif %}>
|
||||
{%- if visitorData.firstVisit.referrerType == 'website' %}
|
||||
<a href="{{ visitorData.firstVisit.referrerUrl|safelink|e('html_attr') }}" target="_blank">
|
||||
{{ visitorData.firstVisit.referralSummary }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ visitorData.firstVisit.referralSummary }}
|
||||
{% endif %}
|
||||
</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% if visitorData.lastVisits.getRowsCount() != 1 %}
|
||||
<div>
|
||||
<h1>{{ 'Live_LastVisit'|translate }}</h1>
|
||||
<div>
|
||||
<p><strong>{{ visitorData.lastVisit.prettyDate }}</strong> - {{ 'UserCountryMap_DaysAgo'|translate(visitorData.lastVisit.daysAgo) }}</p>
|
||||
<p>
|
||||
{{ 'General_FromReferrer'|translate }} <strong {% if visitorData.lastVisit.referrerType == 'search' and '(' not in visitorData.lastVisit.referralSummary %}title="{{ keywordNotDefined }}"{% endif %}>
|
||||
{%- if visitorData.lastVisit.referrerType == 'website' %}
|
||||
<a href="{{ visitorData.lastVisit.referrerUrl|safelink|e('html_attr') }}" target="_blank">
|
||||
{{ visitorData.lastVisit.referralSummary }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ visitorData.lastVisit.referralSummary }}
|
||||
{% endif %}
|
||||
</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
@ -0,0 +1,29 @@
|
||||
<div id="visitsTotal">
|
||||
<table class="dataTable" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th id="label" class="sortable label first" style="cursor: auto;">
|
||||
<div id="thDIV">{{ 'General_Date'|translate }}</div>
|
||||
</th>
|
||||
<th id="label" class="sortable label" style="cursor: auto;">
|
||||
<div id="thDIV">{{ 'General_ColumnNbVisits'|translate }}</div>
|
||||
</th>
|
||||
<th id="label" class="sortable label" style="cursor: auto;">
|
||||
<div id="thDIV">{{ 'General_Actions'|translate }}</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="">
|
||||
<td class="label column">{{ 'Live_LastHours'|translate(24) }}</td>
|
||||
<td class="column">{{ visitorsCountToday|number }}</td>
|
||||
<td class="column">{{ pisToday|number }}</td>
|
||||
</tr>
|
||||
<tr class="">
|
||||
<td class="label column">{{ 'Live_LastMinutes'|translate(30) }}</td>
|
||||
<td class="column">{{ visitorsCountHalfHour|number }}</td>
|
||||
<td class="column">{{ pisHalfhour|number }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
@ -0,0 +1,23 @@
|
||||
<strong class="visitor-log-datetime visitorLogTooltip" title="{% if visitInfo.getColumn('visitorType')=='new' %}{{ 'General_NewVisitor'|translate }}{% else %}{{ 'Live_VisitorsLastVisit'|translate(visitInfo.getColumn('daysSinceLastVisit')) }}{% endif %}">
|
||||
{{ visitInfo.getColumn('serverDatePrettyFirstAction') }}
|
||||
{% if isWidget %}<br/>{% else %}-{% endif %} {{ visitInfo.getColumn('serverTimePrettyFirstAction') }}</strong>
|
||||
{% if visitInfo.getColumn('visitIp') is not empty %}
|
||||
<span class="visitor-log-ip-location visitorLogTooltip" title="{% if visitInfo.getColumn('userId') is not empty %}{{ 'General_UserId'|translate }}: {{ visitInfo.getColumn('userId')|rawSafeDecoded }}
|
||||
{% endif %}{% if visitInfo.getColumn('visitorId') is not empty %}{{ 'General_VisitorID'|translate }}: {{ visitInfo.getColumn('visitorId') }}
|
||||
{% endif %}{% if visitInfo.getColumn('idVisit') is not empty %}
|
||||
{{ 'General_Visit'|translate }} ID: {{ visitInfo.getColumn('idVisit') }}
|
||||
{% endif %}{% if visitInfo.getColumn('latitude') or visitInfo.getColumn('longitude') %}{{ visitInfo.getColumn('location') }}
|
||||
GPS (lat/long): {{ visitInfo.getColumn('latitude') }},{{ visitInfo.getColumn('longitude') }}
|
||||
{% endif %}{% if visitInfo.getColumn('providerName') %}
|
||||
{{ 'Provider_ColumnProvider'|translate }}: {{ visitInfo.getColumn('providerName') }}{% endif %}">
|
||||
IP: {{ visitInfo.getColumn('visitIp') }}
|
||||
<br />
|
||||
{% if visitInfo.getColumn('location') != 'General_Unknown'|translate %}<span><img width="16" class="flag" src="{{ visitInfo.getColumn('countryFlag') }}"/>
|
||||
{% if visitInfo.getColumn('city') is not empty %}{{ visitInfo.getColumn('city') }}{% else %}{{ visitInfo.getColumn('country') }}{% endif %}</span>{% endif %}
|
||||
|
||||
{% if visitInfo.getColumn('userId') is not empty %}<br/><br/>{{ visitInfo.getColumn('userId')|rawSafeDecoded }}{% endif %}
|
||||
</span>{% endif %}
|
||||
{% if isWidget %}
|
||||
<br />
|
||||
{{ postEvent('Live.renderVisitorIcons', visitInfo) }}
|
||||
{% endif %}
|
@ -0,0 +1,84 @@
|
||||
{% set visitHasEcommerceActivity = visitor.getColumn('visitEcommerceStatusIcon') %}
|
||||
{% set breakBeforeVisitorRank = (visitHasEcommerceActivity and visitor.getColumn('visitorTypeIcon')) ? true : false %}
|
||||
|
||||
<span class="visitorLogIcons">
|
||||
|
||||
<span class="visitorDetails">
|
||||
{% if visitor.getColumn('visitorTypeIcon') %}
|
||||
<span class="visitorLogIconWithDetails visitorTypeIcon">
|
||||
<img src="{{ visitor.getColumn('visitorTypeIcon') }}"/>
|
||||
<ul class="details">
|
||||
<li>{{ 'General_ReturningVisitor'|translate }} - {{ 'General_NVisits'|translate(visitor.getColumn('visitCount')) }}</li>
|
||||
</ul>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if visitor.getColumn('countryFlag') %}
|
||||
<span class="visitorLogIconWithDetails flag" profile-header-text="{% if visitor.getColumn('city') %}{{ visitor.getColumn('city')|e('html_attr') }}{% else %}{{ visitor.getColumn('country') }}{% endif %}">
|
||||
|
||||
<img src="{{ visitor.getColumn('countryFlag') }}"/>
|
||||
<ul class="details">
|
||||
<li>{{ 'UserCountry_Country'|translate }}: {{ visitor.getColumn('country') }}</li>
|
||||
{% if visitor.getColumn('region') %}<li>{{ 'UserCountry_Region'|translate }}: {{ visitor.getColumn('region') }}</li>{% endif %}
|
||||
{% if visitor.getColumn('city') %}<li>{{ 'UserCountry_City'|translate }}: {{ visitor.getColumn('city') }}</li>{% endif %}
|
||||
{% if visitor.getColumn('language') %}<li>{{ 'UserLanguage_BrowserLanguage'|translate }}: {{ visitor.getColumn('language') }}</li>{% endif %}
|
||||
{% if visitor.getColumn('providerName') %}<li>{{ 'Provider_ColumnProvider'|translate }}: {{ visitor.getColumn('providerName') }}</li>{% endif %}
|
||||
<li>{{ 'General_IP'|translate }}: {{ visitor.getColumn('visitIp') }}</li>
|
||||
{% if visitor.getColumn('visitorId') is not empty %}<li>{{ 'General_VisitorID'|translate }}: {{ visitor.getColumn('visitorId') }}</li>{% endif %}
|
||||
|
||||
</ul>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if visitor.getColumn('browserIcon') %}
|
||||
<span class="visitorLogIconWithDetails" profile-header-text="{{ visitor.getColumn('browser')|e('html_attr') }}">
|
||||
<img src="{{ visitor.getColumn('browserIcon') }}"/>
|
||||
<ul class="details">
|
||||
<li>{{ 'DevicesDetection_ColumnBrowser'|translate }}: {{ visitor.getColumn('browser') }}</li>
|
||||
<li>{{ 'DevicesDetection_BrowserEngine'|translate }}: {{ visitor.getColumn('browserFamily') }}</li>
|
||||
{% if visitor.getColumn('pluginsIcons')|length > 0 %}
|
||||
<li>
|
||||
{{ 'General_Plugins'|translate }}:
|
||||
{% for pluginIcon in visitor.getColumn('pluginsIcons') %}
|
||||
<img width="16px" height="16px" src="{{ pluginIcon.pluginIcon }}" alt="{{ pluginIcon.pluginName|capitalize(true) }}"/>
|
||||
{% endfor %}
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if visitor.getColumn('operatingSystemIcon') %}
|
||||
<span class="visitorLogIconWithDetails" profile-header-text="{{ visitor.getColumn('operatingSystem')|e('html_attr') }}">
|
||||
<img src="{{ visitor.getColumn('operatingSystemIcon') }}"/>
|
||||
<ul class="details">
|
||||
<li>{{ 'DevicesDetection_ColumnOperatingSystem'|translate }}: {{ visitor.getColumn('operatingSystem') }}</li>
|
||||
</ul>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if visitor.getColumn('deviceTypeIcon') %}
|
||||
<span class="visitorLogIconWithDetails" profile-header-text="{% if visitor.getColumn('resolution') %}{{ visitor.getColumn('resolution')|e('html_attr') }}{% else %}{{ visitor.getColumn('deviceType') }}{% endif %}">
|
||||
<img src="{{ visitor.getColumn('deviceTypeIcon') }}"/>
|
||||
<ul class="details">
|
||||
<li>{{ 'DevicesDetection_DeviceType'|translate }}: {{ visitor.getColumn('deviceType') }}</li>
|
||||
{% if visitor.getColumn('deviceBrand') %}<li>{{ 'DevicesDetection_DeviceBrand'|translate }}: {{ visitor.getColumn('deviceBrand') }}</li>{% endif %}
|
||||
{% if visitor.getColumn('deviceModel') %}<li>{{ 'DevicesDetection_DeviceModel'|translate }}: {{ visitor.getColumn('deviceModel') }}</li>{% endif %}
|
||||
{% if visitor.getColumn('resolution') %}<li>{{ 'Resolution_ColumnResolution'|translate }}: {{ visitor.getColumn('resolution') }}</li>{% endif %}
|
||||
</ul>
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
{% if visitor.getColumn('goalConversions') or visitHasEcommerceActivity %}
|
||||
<span class="visitorType">
|
||||
{# Goals, and/or Ecommerce activity #}
|
||||
{% if visitor.getColumn('goalConversions') %}
|
||||
<span title="{{ 'General_VisitConvertedNGoals'|translate(visitor.getColumn('goalConversions')) }}" class="visitorLogTooltip">
|
||||
<img src="{{ visitor.getColumn('visitConvertedIcon') }}"/>
|
||||
<span class="conversionCount">{% if visitor.getColumn('goalConversions') > 99 %}99+{% else %}{{ visitor.getColumn('goalConversions') }}{% endif %}</span>
|
||||
</span>
|
||||
{% endif %}
|
||||
{# Ecommerce activity #}
|
||||
{% if visitHasEcommerceActivity %}
|
||||
<img class="visitorLogTooltip" src="{{ visitor.getColumn('visitEcommerceStatusIcon') }}" title="{{ visitor.getColumn('visitEcommerceStatus') }}"/>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
@ -0,0 +1 @@
|
||||
{% include "@Live/_totalVisitors.twig" %}
|
@ -0,0 +1,130 @@
|
||||
{# some users view thousands of pages which can crash the browser viewing Live! #}
|
||||
{% set maxPagesDisplayedByVisitor=100 %}
|
||||
|
||||
<ul id="visitsLive">
|
||||
{% for visitor in visitors.getRows() %}
|
||||
<li id="{{ visitor.getColumn('idVisit') }}" class="visit">
|
||||
<div style="display:none;" class="idvisit">{{ visitor.idVisit }}</div>
|
||||
<div title="{{ visitor.getColumn('actionDetails')|length }} {{ 'General_Actions'|translate }}" class="datetime">
|
||||
<span style="display:none;" class="serverTimestamp">{{ visitor.getColumn('serverTimestamp')|raw }}</span>
|
||||
{{ postEvent('Live.visitorLogWidgetViewBeforeVisitInfo', visitor) }}
|
||||
{% set year = visitor.getColumn('serverTimestamp')|date('Y') %}
|
||||
<span class="realTimeWidget_datetime">{{ visitor.getColumn('serverDatePretty')|replace({(year): ' '}) }} - {{ visitor.getColumn('serverTimePretty') }} {% if visitor.getColumn('visitDuration') > 0 %}({{ visitor.getColumn('visitDurationPretty')|raw }}){% endif %}</span>
|
||||
{% if visitor.getColumn('userId')|default(false) is not empty %}
|
||||
<a class="visits-live-launch-visitor-profile rightLink" title="{{ 'Live_ViewVisitorProfile'|translate }} {% if visitor.getColumn('userId') is not empty %}{{ visitor.getColumn('userId') }}{% endif %}" data-visitor-id="{{ visitor.getColumn('visitorId') }}">
|
||||
<span>{{ visitor.getColumn('userId')|rawSafeDecoded}}</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{{ postEvent('Live.renderVisitorIcons', visitor) }}
|
||||
{% if not userIsAnonymous %}
|
||||
<a class="visits-live-launch-visitor-profile rightLink" title="{{ 'Live_ViewVisitorProfile'|translate }} {% if visitor.getColumn('userId') is not empty %}{{ visitor.getColumn('userId') }}{% endif %}" data-visitor-id="{{ visitor.getColumn('visitorId') }}">
|
||||
<span class="icon-visitor-profile"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
<span class="referrer">
|
||||
{% include "@Referrers/_visitorDetails.twig" with {'visitInfo': visitor} %}
|
||||
</span>
|
||||
</div>
|
||||
<div id="{{ visitor.getColumn('idVisit')|e('html_attr') }}_actions" class="settings">
|
||||
<span class="pagesTitle"
|
||||
title="{{ visitor.getColumn('actionDetails')|length }} {{ 'General_Actions'|translate }}"
|
||||
>{{ 'General_Actions'|translate }}:</span>
|
||||
{% set col = 0 %}
|
||||
{% for action in visitor.getColumn('actionDetails') %}
|
||||
{% if loop.index <= maxPagesDisplayedByVisitor %}
|
||||
|
||||
{% if action.type == 'ecommerceOrder' or action.type == 'ecommerceAbandonedCart' %}
|
||||
{% set title %}
|
||||
{%- if action.type == 'ecommerceOrder' %}
|
||||
{{- 'Goals_EcommerceOrder'|translate -}}
|
||||
{% else %}
|
||||
{{- 'Goals_AbandonedCart'|translate -}}
|
||||
{% endif %}
|
||||
{{- "\n - " -}}
|
||||
{%- if action.type == 'ecommerceOrder' -%}
|
||||
{{- 'General_ColumnRevenue'|translate -}}:
|
||||
{%- else -%}
|
||||
{%- set revenueLeft -%}
|
||||
{{- 'General_ColumnRevenue'|translate -}}
|
||||
{%- endset -%}
|
||||
{{- 'Goals_LeftInCart'|translate(revenueLeft) -}}:
|
||||
{%- endif %} {{ action.revenue|money(idSite)|raw -}}
|
||||
|
||||
{{- "\n - " -}}{{- action.serverTimePretty -}}
|
||||
{{- "\n" -}}
|
||||
{% if action.itemDetails is not empty -%}
|
||||
{% for product in action.itemDetails -%}
|
||||
{{- "\n# " -}}{{ product.itemSKU }}{% if product.itemName is not empty %}: {{ product.itemName }}{% endif %}{% if product.itemCategory is not empty %} ({{ product.itemCategory }}){% endif %}, {{ 'General_Quantity'|translate }}: {{ product.quantity }}, {{ 'General_Price'|translate }}: {{ product.price|money(idSite)|raw }}
|
||||
{%- endfor %}
|
||||
{%- endif %}
|
||||
{% endset %}
|
||||
<span title="{{- title -}}">
|
||||
<img class='iconPadding' src="{{ action.iconSVG|default(action.icon) }}"/>
|
||||
{% if action.type == 'ecommerceOrder' %}
|
||||
{{ 'General_ColumnRevenue'|translate }}: {{ action.revenue|money(idSite)|raw }}
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
{% else %}
|
||||
|
||||
{% if action.url is defined and action.url is not empty %}
|
||||
<a href="{{ action.url|safelink|e('html_attr') }}" target="_blank">
|
||||
{% endif %}
|
||||
{% if action.type == 'action' %}
|
||||
{# white spacing matters as Chrome tooltip display whitespaces #}
|
||||
{% set title %}
|
||||
{% if action.url|trim is not empty %}<span class='tooltip-action-url'>{{ action.url }}</span>{% endif %}
|
||||
|
||||
{% if action.pageTitle is not empty %}<span class='tooltip-action-page-title'>{{ action.pageTitle }}</span>{% endif %}
|
||||
|
||||
<span class="tooltip-action-server-time">{{ action.serverTimePretty }}</span>
|
||||
{% if action.timeSpentPretty is defined %}<span class='tooltip-time-on-page'>{{ 'General_TimeOnPage'|translate }}: {{ action.timeSpentPretty|raw }}</span>{% endif %}
|
||||
{%- endset %}
|
||||
<img class='iconPadding' src="{{ action.iconSVG|default(action.icon) }}" title="{{- title|e('html_attr') -}}"/>
|
||||
{% elseif action.type == 'outlink' or action.type == 'download' %}
|
||||
<img class='iconPadding' src="{{ action.iconSVG|default(action.icon) }}"
|
||||
title="{% if action.url is defined %}{{ action.url }} - {% endif %}{{ action.serverTimePretty }}"/>
|
||||
{% elseif action.type == 'search' %}
|
||||
<img class='iconPadding' src="{{ action.iconSVG|default(action.icon) }}"
|
||||
title="{{ 'Actions_SubmenuSitesearch'|translate }}: {{ action.siteSearchKeyword }} - {{ action.serverTimePretty }}"/>
|
||||
{% elseif action.eventCategory|default(false) is not empty %}
|
||||
<img class="iconPadding" src='{{ action.iconSVG|default(action.icon) }}'
|
||||
title="{{ 'Events_Event'|translate }} {{ action.eventCategory }} - {{ action.eventAction }} {% if action.eventName is defined %}- {{ action.eventName }}{% endif %} {% if action.eventValue is defined %}- {{ action.eventValue }}{% endif %}"/>
|
||||
{% elseif action.type == 'goal' or action.type == constant('Piwik\\Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_ORDER') or
|
||||
action.type == constant('Piwik\\Piwik::LABEL_ID_GOAL_IS_ECOMMERCE_CART') %}
|
||||
<img class='iconPadding' src="{{ action.iconSVG|default(action.icon) }}"
|
||||
title="{{ action.goalName }} - {% if action.revenue > 0 %}{{ 'General_ColumnRevenue'|translate }}: {{ action.revenue|money(idSite)|raw }} - {% endif %} {{ action.serverTimePretty }}"/>
|
||||
{% endif %}
|
||||
{% if action.url is defined and action.url is not empty %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if visitor.getColumn('actionDetails')|length > maxPagesDisplayedByVisitor %}
|
||||
({{ 'Live_MorePagesNotDisplayed'|translate }})
|
||||
{% endif %}
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('#visitsLive').on('click', '.visits-live-launch-visitor-profile', function (e) {
|
||||
e.preventDefault();
|
||||
broadcast.propagateNewPopoverParameter('visitorProfile', $(this).attr('data-visitor-id'));
|
||||
return false;
|
||||
}).tooltip({
|
||||
track: true,
|
||||
content: function() {
|
||||
var title = $(this).attr('title');
|
||||
return piwikHelper.escape(title.replace(/\n/g, '<br />'));
|
||||
},
|
||||
show: {delay: 100, duration: 0},
|
||||
hide: false
|
||||
});
|
||||
});
|
||||
</script>
|
@ -0,0 +1,21 @@
|
||||
<div class='simple-realtime-visitor-widget' data-refreshAfterXSecs="{{ refreshAfterXSecs }}" data-last-minutes="{{ lastMinutes }}" data-translations="{{ translations|json_encode }}">
|
||||
<div class='simple-realtime-visitor-counter' title="{% if visitors == 1 %}{{ 'Live_NbVisitor'|translate }}{% else %}{{ 'Live_NbVisitors'|translate(visitors) }}{% endif %}">
|
||||
<div>{{ visitors }}</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div class='simple-realtime-elaboration'>
|
||||
{% set visitsMessage %}
|
||||
<span class="simple-realtime-metric" data-metric="visits">{% if visits == 1 %}{{ 'General_OneVisit'|translate }}{% else %}{{ 'General_NVisits'|translate(visits) }}{% endif %}</span>
|
||||
{% endset %}
|
||||
{% set actionsMessage %}
|
||||
<span class="simple-realtime-metric" data-metric="actions">{% if actions == 1 %}{{ 'General_OneAction'|translate }}{% else %}{{ 'VisitsSummary_NbActionsDescription'|translate(actions) }}{% endif %}</span>
|
||||
{% endset %}
|
||||
{% set minutesMessage %}
|
||||
<span class="simple-realtime-metric" data-metric="minutes">{% if lastMinutes == 1 %}{{ 'Intl_OneMinute'|translate }}{% else %}{{ 'Intl_NMinutes'|translate(lastMinutes) }}{% endif %}</span>
|
||||
{% endset %}
|
||||
|
||||
{{ 'Live_SimpleRealTimeWidget_Message'|translate(visitsMessage,actionsMessage,minutesMessage) | raw }}
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">$(document).ready(function () {require('piwik/Live').initSimpleRealtimeVisitorWidget();});</script>
|
35
msd2/tracking/piwik/plugins/Live/templates/getVisitList.twig
Normal file
35
msd2/tracking/piwik/plugins/Live/templates/getVisitList.twig
Normal file
@ -0,0 +1,35 @@
|
||||
{% for visitInfo in visits.getRows() %}
|
||||
<li data-number="{{ startCounter }}">
|
||||
<div>
|
||||
<div class="visitor-profile-visit-title" data-idvisit="{{ visitInfo.getColumn('idVisit') }}" title="{{ 'Live_ClickToViewMoreAboutVisit'|translate }}">
|
||||
{{ 'General_Visit'|translate }} #{{ startCounter }}
|
||||
|
||||
<span class="visitor-profile-date" title="{{ visitInfo.getColumn('serverDatePrettyFirstAction') }} {{ visitInfo.getColumn('serverTimePrettyFirstAction') }}">
|
||||
{{ visitInfo.getColumn('serverDatePrettyFirstAction') }} {{ visitInfo.getColumn('serverTimePrettyFirstAction') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="visitor-profile-visit-details-extended">
|
||||
{{ postEvent('Live.renderVisitorDetails', visitInfo) }}
|
||||
</div>
|
||||
<div class="visitor-profile-visit-details">
|
||||
{{ postEvent('Live.renderVisitorIcons', visitInfo) }}
|
||||
<a href="#" class="visitor-profile-show-actions">
|
||||
{% set actionCount = visitInfo.getColumn('actionDetails')|length %}
|
||||
{% if visitInfo.truncatedActionsCount is defined %}
|
||||
{% set actionCount = actionCount + visitInfo.truncatedActionsCount %}
|
||||
{% endif %}
|
||||
{% if visitInfo.getColumn('visitDuration') != 0 %}
|
||||
{{ 'Live_ActionsAndDuration'|translate(actionCount, visitInfo.getColumn('visitDurationPretty')) }}
|
||||
{% else %}
|
||||
{{ actionCount }} {{ 'General_Actions'|translate }}
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
<ol class="visitorLog visitor-profile-actions">
|
||||
{% include "@Live/_actionsList.twig" with {'actionDetails': visitInfo.getColumn('actionDetails'),
|
||||
'visitInfo': visitInfo} %}
|
||||
</ol>
|
||||
</div>
|
||||
</li>
|
||||
{% set startCounter = startCounter - 1 %}
|
||||
{% endfor %}
|
@ -0,0 +1,94 @@
|
||||
{% if not visitorData %}
|
||||
<div class="pk-emptyDataTable">{{ 'CoreHome_ThereIsNoDataForThisReport'|translate }}</div>
|
||||
{% else %}
|
||||
<div class="visitor-profile"
|
||||
data-visitor-id="{{ visitorData.lastVisits.getFirstRow().getColumn('visitorId') }}"
|
||||
data-next-visitor="{{ visitorData.nextVisitorId }}"
|
||||
data-prev-visitor="{{ visitorData.previousVisitorId }}"
|
||||
tabindex="0">
|
||||
<div class="visitor-profile-options">
|
||||
<a href class="visitor-profile-close" title="{{ 'General_Close'|translate }} "></a>
|
||||
<a href="https://matomo.org/docs/user-profile/" class="visitor-profile-help" rel="noreferrer"
|
||||
target="_blank"
|
||||
title="{{ 'General_ViewDocumentationFor'|translate("Live_VisitorProfile"|translate|ucwords) }}">
|
||||
</a>
|
||||
<a href class="visitor-profile-toggle-actions" title="{{ 'Live_ToggleActions'|translate }} "></a>
|
||||
</div>
|
||||
<div class="visitor-profile-info">
|
||||
<div class="visitor-profile-overview">
|
||||
<div class="visitor-profile-header">
|
||||
<div class="visitor-profile-avatar">
|
||||
<img src="{{ visitorData.visitorAvatar|default("plugins/Live/images/unknown_avatar.png") }}"
|
||||
alt="{{ visitorData.visitorDescription|default('') }}"
|
||||
title="{{ visitorData.visitorDescription|default('') }}"/>
|
||||
</div>
|
||||
<div class="visitor-profile-header-details">
|
||||
<div class="visitor-profile-headline">
|
||||
{% if visitorData.previousVisitorId is not empty %}<a class="visitor-profile-prev-visitor"
|
||||
href="#"
|
||||
title="{{ 'Live_PreviousVisitor'|translate }}">
|
||||
←</a>{% endif %}
|
||||
<h1>
|
||||
{%- if visitorData.userId is empty %}
|
||||
{{ 'Live_VisitorProfile'|translate }}
|
||||
{%- else %}
|
||||
<span title="{{ 'General_UserId'|translate }}: {{ visitorData.userId|rawSafeDecoded }}">{{ visitorData.userId|rawSafeDecoded }}</span>
|
||||
{% endif -%}
|
||||
</h1>
|
||||
{% if visitorData.nextVisitorId is not empty %}<a class="visitor-profile-next-visitor"
|
||||
href="#"
|
||||
title="{{ 'Live_NextVisitor'|translate }}">
|
||||
→</a>{% endif %}
|
||||
</div>
|
||||
<div class="visitor-profile-latest-visit">
|
||||
<div class="visitor-profile-id">
|
||||
<span>{{ 'General_Id'|translate|upper }}</span>
|
||||
{% if widgetizedLink is defined %}<a class="visitor-profile-widget-link"
|
||||
href="{{ widgetizedLink }}" target="_blank"
|
||||
title="{{ 'Widgetize_OpenInNewWindow'|translate }} - {{ 'Live_VisitorProfile'|translate }} {{ 'General_Id'|translate|upper }} {{ visitorData.visitorId }}">{% endif %}
|
||||
<span>{{ visitorData.visitorId }}</span>
|
||||
{%- if widgetizedLink is defined %}</a>{% endif %}
|
||||
<a class="visitor-profile-export" href="{{ exportLink }}" target="_blank"
|
||||
title="{{ 'General_ExportThisReport'|translate }}">
|
||||
<span class="icon-export"></span>
|
||||
</a>
|
||||
</div>
|
||||
{{ postEvent('Live.renderVisitorIcons', visitorData.lastVisits|first) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ profileSummary|raw }}
|
||||
|
||||
{{ postEvent('Template.afterVisitorProfileOverview') }}
|
||||
</div>
|
||||
<div class="visitor-profile-visits-info">
|
||||
<div class="visitor-profile-visits-container">
|
||||
<ol class="visitor-profile-visits">
|
||||
{% include "@Live/getVisitList.twig" with {'visits': visitorData.lastVisits, 'startCounter': visitorData.totalVisits} %}
|
||||
</ol>
|
||||
</div>
|
||||
<div class="visitor-profile-more-info">
|
||||
{% if visitorData.lastVisits.getRowsCount() >= constant("Piwik\\Plugins\\Live\\VisitorProfile::VISITOR_PROFILE_MAX_VISITS_TO_SHOW") %}
|
||||
<a href="#">{{ 'Live_LoadMoreVisits'|translate }}</a> <img class="loadingPiwik"
|
||||
style="display:none;"
|
||||
src="plugins/Morpheus/images/loading-blue.gif"/>
|
||||
{% else %}
|
||||
<span class="visitor-profile-no-visits">
|
||||
{% if visitorData.hasMoreVisits %}
|
||||
{{ 'Live_LimitedVisitsShown'|translate('<strong>' ~ visitorData.totalVisits ~ '</strong>')|raw }}
|
||||
{% else %}
|
||||
{{ 'Live_NoMoreVisits'|translate }}
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
require('piwik/UI').VisitorProfileControl.initElements();
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
56
msd2/tracking/piwik/plugins/Live/templates/index.twig
Normal file
56
msd2/tracking/piwik/plugins/Live/templates/index.twig
Normal file
@ -0,0 +1,56 @@
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
$(document).ready(function () {
|
||||
var segment = broadcast.getValueFromHash('segment');
|
||||
if (!segment) {
|
||||
segment = broadcast.getValueFromUrl('segment');
|
||||
}
|
||||
|
||||
$('#visitsLive').liveWidget({
|
||||
interval: {{ liveRefreshAfterMs }},
|
||||
onUpdate: function () {
|
||||
//updates the numbers of total visits in startbox
|
||||
var ajaxRequest = new ajaxHelper();
|
||||
ajaxRequest.setFormat('html');
|
||||
ajaxRequest.addParams({
|
||||
module: 'Live',
|
||||
action: 'ajaxTotalVisitors',
|
||||
segment: segment
|
||||
}, 'GET');
|
||||
ajaxRequest.setCallback(function (r) {
|
||||
$("#visitsTotal").html(r);
|
||||
});
|
||||
ajaxRequest.send();
|
||||
},
|
||||
maxRows: 10,
|
||||
fadeInSpeed: 600,
|
||||
dataUrlParams: {
|
||||
module: 'Live',
|
||||
action: 'getLastVisitsStart',
|
||||
segment: segment
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% if not isWidgetized %}<div piwik-content-block content-title="{{ 'Live_VisitorsInRealTime'|translate|e('html_attr') }}">{% endif %}
|
||||
|
||||
{% include "@Live/_totalVisitors.twig" %}
|
||||
|
||||
{{ visitors|raw }}
|
||||
|
||||
{% spaceless %}
|
||||
<div class="visitsLiveFooter">
|
||||
<a title="{{ 'Live_OnClickPause'|translate('Live_VisitorsInRealTime'|translate) }}" href="javascript:void(0);" onclick="onClickPause();">
|
||||
<img id="pauseImage" border="0" src="plugins/Live/images/pause.png" />
|
||||
</a>
|
||||
<a title="{{ 'Live_OnClickStart'|translate('Live_VisitorsInRealTime'|translate) }}" href="javascript:void(0);" onclick="onClickPlay();">
|
||||
<img id="playImage" style="display: none;" border="0" src="plugins/Live/images/play.png" />
|
||||
</a>
|
||||
{% if not disableLink %}
|
||||
|
||||
<a class="rightLink" href="#" onclick="this.href=broadcast.buildReportingUrl('category=General_Visitors&subcategory=Live_VisitorLog')">{{ 'Live_LinkVisitorLog'|translate }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endspaceless %}
|
||||
|
||||
{% if not isWidgetized %}</div>{% endif %}
|
@ -0,0 +1,5 @@
|
||||
<div piwik-content-intro>
|
||||
<h2 piwik-enriched-headline>{{ 'Live_VisitorLog'|translate }}</h2>
|
||||
</div>
|
||||
|
||||
{{ visitorLog|raw }}
|
Reference in New Issue
Block a user