update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
9abe039dc8
commit
47263617c5
68 changed files with 418860 additions and 226988 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -11,6 +11,7 @@ namespace Piwik\Plugins\Overlay;
|
|||
use Exception;
|
||||
use Piwik\Access;
|
||||
use Piwik\Config;
|
||||
use Piwik\Container\StaticContainer;
|
||||
use Piwik\DataTable;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugins\SitesManager\API as APISitesManager;
|
||||
|
|
@ -105,26 +106,26 @@ class API extends \Piwik\Plugin\API
|
|||
{
|
||||
/**
|
||||
* Triggered immediately before the user is authenticated.
|
||||
*
|
||||
*
|
||||
* This event can be used by plugins that provide their own authentication mechanism
|
||||
* to make that mechanism available. Subscribers should set the `'auth'` object in
|
||||
* the {@link Piwik\Registry} to an object that implements the {@link Piwik\Auth} interface.
|
||||
*
|
||||
* to make that mechanism available. Subscribers should set the `'Piwik\Auth'` object in
|
||||
* the container to an object that implements the {@link Piwik\Auth} interface.
|
||||
*
|
||||
* **Example**
|
||||
*
|
||||
* use Piwik\Registry;
|
||||
*
|
||||
*
|
||||
* use Piwik\Container\StaticContainer;
|
||||
*
|
||||
* public function initAuthenticationObject($activateCookieAuth)
|
||||
* {
|
||||
* Registry::set('auth', new LDAPAuth($activateCookieAuth));
|
||||
* StaticContainer::getContainer()->set('Piwik\Auth', new LDAPAuth($activateCookieAuth));
|
||||
* }
|
||||
*
|
||||
*
|
||||
* @param bool $activateCookieAuth Whether authentication based on `$_COOKIE` values should
|
||||
* be allowed.
|
||||
*/
|
||||
Piwik::postEvent('Request.initAuthenticationObject', array($activateCookieAuth = true));
|
||||
|
||||
$auth = \Piwik\Registry::get('auth');
|
||||
$auth = StaticContainer::get('Piwik\Auth');
|
||||
$success = Access::getInstance()->reloadAccess($auth);
|
||||
|
||||
if (!$success) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -8,21 +8,34 @@
|
|||
*/
|
||||
namespace Piwik\Plugins\Overlay;
|
||||
|
||||
use Piwik\API\CORSHandler;
|
||||
use Piwik\API\Request;
|
||||
use Piwik\Common;
|
||||
use Piwik\Config;
|
||||
use Piwik\Metrics;
|
||||
use Piwik\MetricsFormatter;
|
||||
use Piwik\Piwik;
|
||||
use Piwik\Plugin\Report;
|
||||
use Piwik\Plugins\Actions\ArchivingHelper;
|
||||
use Piwik\Plugins\SegmentEditor\SegmentFormatter;
|
||||
use Piwik\Plugins\SitesManager\API as APISitesManager;
|
||||
use Piwik\ProxyHttp;
|
||||
use Piwik\Segment;
|
||||
use Piwik\Tracker\Action;
|
||||
use Piwik\Tracker\PageUrl;
|
||||
use Piwik\View;
|
||||
|
||||
class Controller extends \Piwik\Plugin\Controller
|
||||
{
|
||||
/**
|
||||
* @var SegmentFormatter
|
||||
*/
|
||||
private $segmentFormatter;
|
||||
|
||||
public function __construct(SegmentFormatter $segmentFormatter)
|
||||
{
|
||||
$this->segmentFormatter = $segmentFormatter;
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/** The index of the plugin */
|
||||
public function index()
|
||||
|
|
@ -37,13 +50,11 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$view = new View($template);
|
||||
|
||||
$this->setGeneralVariablesView($view);
|
||||
|
||||
$view->idSite = $this->idSite;
|
||||
$view->date = Common::getRequestVar('date', 'today');
|
||||
$view->period = Common::getRequestVar('period', 'day');
|
||||
$view->segment = Request::getRawSegmentFromRequest();
|
||||
|
||||
$view->ssl = ProxyHttp::isHttps();
|
||||
|
||||
$this->outputCORSHeaders();
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
|
|
@ -54,7 +65,9 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$period = Common::getRequestVar('period');
|
||||
$date = Common::getRequestVar('date');
|
||||
$currentUrl = Common::getRequestVar('currentUrl');
|
||||
$segment = Request::getRawSegmentFromRequest();
|
||||
$currentUrl = Common::unsanitizeInputValue($currentUrl);
|
||||
$segmentSidebar = '';
|
||||
|
||||
$normalizedCurrentUrl = PageUrl::excludeQueryParametersFromUrl($currentUrl, $idSite);
|
||||
$normalizedCurrentUrl = Common::unsanitizeInputValue($normalizedCurrentUrl);
|
||||
|
|
@ -64,33 +77,52 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$path = ArchivingHelper::getActionExplodedNames($normalizedCurrentUrl, Action::TYPE_PAGE_URL);
|
||||
$path = array_map('urlencode', $path);
|
||||
$label = implode('>', $path);
|
||||
$request = new Request(
|
||||
'method=Actions.getPageUrls'
|
||||
. '&idSite=' . urlencode($idSite)
|
||||
. '&date=' . urlencode($date)
|
||||
. '&period=' . urlencode($period)
|
||||
. '&label=' . urlencode($label)
|
||||
. '&format=original'
|
||||
|
||||
$params = array(
|
||||
'idSite' => $idSite,
|
||||
'date' => $date,
|
||||
'period' => $period,
|
||||
'label' => $label,
|
||||
'format' => 'original',
|
||||
'format_metrics' => 0,
|
||||
);
|
||||
$dataTable = $request->process();
|
||||
|
||||
if (!empty($segment)) {
|
||||
$params['segment'] = $segment;
|
||||
}
|
||||
|
||||
$dataTable = Request::processRequest('Actions.getPageUrls', $params);
|
||||
|
||||
$formatter = new Metrics\Formatter\Html();
|
||||
|
||||
$data = array();
|
||||
if ($dataTable->getRowsCount() > 0) {
|
||||
$row = $dataTable->getFirstRow();
|
||||
|
||||
$translations = Metrics::getDefaultMetricTranslations();
|
||||
$showMetrics = array('nb_hits', 'nb_visits', 'nb_uniq_visitors',
|
||||
$showMetrics = array('nb_hits', 'nb_visits', 'nb_users', 'nb_uniq_visitors',
|
||||
'bounce_rate', 'exit_rate', 'avg_time_on_page');
|
||||
|
||||
$segmentSidebar = $row->getMetadata('segment');
|
||||
if (!empty($segmentSidebar) && !empty($segment)) {
|
||||
$segmentSidebar = $segment . ';' . $segmentSidebar;
|
||||
}
|
||||
|
||||
foreach ($showMetrics as $metric) {
|
||||
$value = $row->getColumn($metric);
|
||||
if ($value === false) {
|
||||
// skip unique visitors for period != day
|
||||
continue;
|
||||
}
|
||||
if ($metric == 'avg_time_on_page') {
|
||||
$value = MetricsFormatter::getPrettyTimeFromSeconds($value);
|
||||
|
||||
if ($metric == 'bounce_rate'
|
||||
|| $metric == 'exit_rate'
|
||||
) {
|
||||
$value = $formatter->getPrettyPercentFromQuotient($value);
|
||||
} else if ($metric == 'avg_time_on_page') {
|
||||
$value = $formatter->getPrettyTimeFromSeconds($value, $displayAsSentence = true);
|
||||
}
|
||||
|
||||
$data[] = array(
|
||||
'name' => $translations[$metric],
|
||||
'value' => $value
|
||||
|
|
@ -117,6 +149,10 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$view->idSite = $idSite;
|
||||
$view->period = $period;
|
||||
$view->date = $date;
|
||||
$view->segment = $segmentSidebar;
|
||||
$view->segmentDescription = $this->segmentFormatter->getHumanReadable($segment, $idSite);
|
||||
|
||||
$this->outputCORSHeaders();
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
|
|
@ -129,63 +165,20 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$idSite = Common::getRequestVar('idSite', 0, 'int');
|
||||
Piwik::checkUserHasViewAccess($idSite);
|
||||
|
||||
$view = new View('@Overlay/startOverlaySession');
|
||||
|
||||
$sitesManager = APISitesManager::getInstance();
|
||||
$site = $sitesManager->getSiteFromId($idSite);
|
||||
$urls = $sitesManager->getSiteUrlsFromId($idSite);
|
||||
|
||||
@header('Content-Type: text/html; charset=UTF-8');
|
||||
return '
|
||||
<html><head><title></title></head><body>
|
||||
<script type="text/javascript">
|
||||
function handleProtocol(url) {
|
||||
if (' . (ProxyHttp::isHttps() ? 'true' : 'false') . ') {
|
||||
return url.replace(/http:\/\//i, "https://");
|
||||
} else {
|
||||
return url.replace(/https:\/\//i, "http://");
|
||||
}
|
||||
}
|
||||
$view->isHttps = ProxyHttp::isHttps();
|
||||
$view->knownUrls = json_encode($urls);
|
||||
$view->mainUrl = $site['main_url'];
|
||||
|
||||
function removeUrlPrefix(url) {
|
||||
return url.replace(/http(s)?:\/\/(www\.)?/i, "");
|
||||
}
|
||||
$this->outputCORSHeaders();
|
||||
Common::sendHeader('Content-Type: text/html; charset=UTF-8');
|
||||
|
||||
if (window.location.hash) {
|
||||
var match = false;
|
||||
|
||||
var urlToRedirect = window.location.hash.substr(1);
|
||||
var urlToRedirectWithoutPrefix = removeUrlPrefix(urlToRedirect);
|
||||
|
||||
var knownUrls = ' . Common::json_encode($urls) . ';
|
||||
for (var i = 0; i < knownUrls.length; i++) {
|
||||
var testUrl = removeUrlPrefix(knownUrls[i]);
|
||||
if (urlToRedirectWithoutPrefix.substr(0, testUrl.length) == testUrl) {
|
||||
match = true;
|
||||
if (navigator.appName == "Microsoft Internet Explorer") {
|
||||
// internet explorer loses the referrer if we use window.location.href=X
|
||||
var referLink = document.createElement("a");
|
||||
referLink.href = handleProtocol(urlToRedirect);
|
||||
document.body.appendChild(referLink);
|
||||
referLink.click();
|
||||
} else {
|
||||
window.location.href = handleProtocol(urlToRedirect);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!match) {
|
||||
var idSite = window.location.href.match(/idSite=([0-9]+)/i)[1];
|
||||
window.location.href = "index.php?module=Overlay&action=showErrorWrongDomain"
|
||||
+ "&idSite=" + idSite
|
||||
+ "&url=" + encodeURIComponent(urlToRedirect);
|
||||
}
|
||||
}
|
||||
else {
|
||||
window.location.href = handleProtocol("' . $site['main_url'] . '");
|
||||
};
|
||||
</script>
|
||||
</body></html>
|
||||
';
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -204,6 +197,7 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$message = nl2br(htmlentities($message));
|
||||
|
||||
$view = new View('@Overlay/showErrorWrongDomain');
|
||||
$this->addCustomLogoInfo($view);
|
||||
$view->message = $message;
|
||||
|
||||
if (Piwik::isUserHasAdminAccess($idSite)) {
|
||||
|
|
@ -217,6 +211,7 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
$view->troubleshoot = htmlentities(Piwik::translate('Overlay_RedirectUrlErrorUser'));
|
||||
}
|
||||
|
||||
$this->outputCORSHeaders();
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
|
|
@ -231,6 +226,13 @@ class Controller extends \Piwik\Plugin\Controller
|
|||
public function notifyParentIframe()
|
||||
{
|
||||
$view = new View('@Overlay/notifyParentIframe');
|
||||
$this->outputCORSHeaders();
|
||||
return $view->render();
|
||||
}
|
||||
|
||||
protected function outputCORSHeaders()
|
||||
{
|
||||
$corsHandler = new CORSHandler();
|
||||
$corsHandler->handle();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -9,21 +9,12 @@
|
|||
|
||||
namespace Piwik\Plugins\Overlay;
|
||||
|
||||
|
||||
class Overlay extends \Piwik\Plugin
|
||||
{
|
||||
public function getInformation()
|
||||
{
|
||||
$suffix = ' Note: Requires the Transitions plugin enabled.';
|
||||
$info = parent::getInformation();
|
||||
$info['description'] .= ' ' . $suffix;
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Piwik\Plugin::getListHooksRegistered
|
||||
* @see Piwik\Plugin::registerEvents
|
||||
*/
|
||||
function getListHooksRegistered()
|
||||
function registerEvents()
|
||||
{
|
||||
return array(
|
||||
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ var Piwik_Overlay_Client = (function () {
|
|||
var idSite;
|
||||
|
||||
/** The current period and date */
|
||||
var period, date;
|
||||
var period, date, segment;
|
||||
|
||||
/** Reference to the status bar DOM element */
|
||||
var statusBar;
|
||||
|
|
@ -35,7 +35,7 @@ var Piwik_Overlay_Client = (function () {
|
|||
callback();
|
||||
}
|
||||
else {
|
||||
Piwik_Overlay_Client.loadScript('libs/jquery/jquery.js', function () {
|
||||
Piwik_Overlay_Client.loadScript('libs/bower_components/jquery/dist/jquery.min.js', function () {
|
||||
$ = jQuery;
|
||||
jQuery.noConflict();
|
||||
callback();
|
||||
|
|
@ -131,11 +131,12 @@ var Piwik_Overlay_Client = (function () {
|
|||
return {
|
||||
|
||||
/** Initialize in-site analytics */
|
||||
initialize: function (pPiwikRoot, pIdSite, pPeriod, pDate) {
|
||||
initialize: function (pPiwikRoot, pIdSite, pPeriod, pDate, pSegment) {
|
||||
piwikRoot = pPiwikRoot;
|
||||
idSite = pIdSite;
|
||||
period = pPeriod;
|
||||
date = pDate;
|
||||
segment = pSegment;
|
||||
|
||||
var load = this.loadScript;
|
||||
var loading = this.loadingNotification;
|
||||
|
|
@ -193,6 +194,10 @@ var Piwik_Overlay_Client = (function () {
|
|||
var url = piwikRoot + 'index.php?module=API&method=Overlay.' + method
|
||||
+ '&idSite=' + idSite + '&period=' + period + '&date=' + date + '&format=JSON&filter_limit=-1';
|
||||
|
||||
if (segment) {
|
||||
url += '&segment=' + segment;
|
||||
}
|
||||
|
||||
if (additionalParams) {
|
||||
url += '&' + additionalParams;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -164,7 +164,12 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
linkTag[0].piwikTagElement = true;
|
||||
|
||||
var rate = data.clickRate;
|
||||
if (rate < 10) {
|
||||
|
||||
if( rate < 0.001 ) {
|
||||
rate = '<0.001';
|
||||
} else if (rate < 1) {
|
||||
rate = Math.round( rate * 1000 ) / 1000;
|
||||
} else if (rate < 10) {
|
||||
rate = Math.round(rate * 10) / 10;
|
||||
} else {
|
||||
rate = Math.round(rate);
|
||||
|
|
@ -387,11 +392,11 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
offset = linkTag.offset();
|
||||
height = linkTag.outerHeight();
|
||||
}
|
||||
|
||||
|
||||
var numLinks = linksOnPage[linkUrl].length;
|
||||
|
||||
putBoxAroundLink(offset, width, height, numLinks, data.referrals);
|
||||
|
||||
|
||||
// highlight tags
|
||||
for (var j = 0; j < numLinks; j++) {
|
||||
var tag = linksOnPage[linkUrl][j][0].piwikTagElement;
|
||||
|
|
@ -407,11 +412,11 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
linkTag[0].piwikHideNotification = Piwik_Overlay_Client.notification(
|
||||
Piwik_Overlay_Translations.get('link') + ': ' + linkUrl, 'LinkLocation');
|
||||
}
|
||||
|
||||
|
||||
function putBoxAroundLink(offset, width, height, numLinks, numReferrals) {
|
||||
var borderWidth = 2;
|
||||
var padding = 4; // the distance between the link and the border
|
||||
|
||||
|
||||
// top border
|
||||
highlightElements[0]
|
||||
.width(width + 2 * padding)
|
||||
|
|
@ -419,7 +424,7 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
top: offset.top - borderWidth - padding,
|
||||
left: offset.left - padding
|
||||
}).show();
|
||||
|
||||
|
||||
// right border
|
||||
highlightElements[1]
|
||||
.height(height + 2 * borderWidth + 2 * padding)
|
||||
|
|
@ -427,7 +432,7 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
top: offset.top - borderWidth - padding,
|
||||
left: offset.left + width + padding
|
||||
}).show();
|
||||
|
||||
|
||||
// left border
|
||||
highlightElements[2]
|
||||
.height(height + 2 * borderWidth + 2 * padding)
|
||||
|
|
@ -456,7 +461,7 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
top: offset.top + height + padding,
|
||||
left: offset.left - borderWidth - padding
|
||||
}).show();
|
||||
|
||||
|
||||
var minBoxWidth = width + 2 * borderWidth + 2 * padding;
|
||||
if (highlightElements[3].width() < minBoxWidth) {
|
||||
// we cannot use minWidth because of IE7
|
||||
|
|
@ -485,7 +490,6 @@ var Piwik_Overlay_FollowingPages = (function () {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
|
||||
/**
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
|
@ -189,6 +189,8 @@ var Piwik_Overlay_UrlNormalizer = (function () {
|
|||
url = url.replace(/\?&/, '?');
|
||||
url = url.replace(/\?#/, '#');
|
||||
url = url.replace(/\?$/, '');
|
||||
url = url.replace(/%5B/gi, '[');
|
||||
url = url.replace(/%5D/gi, ']');
|
||||
|
||||
return url;
|
||||
}
|
||||
|
|
|
|||
14
www/analytics/plugins/Overlay/config/ui-test.php
Normal file
14
www/analytics/plugins/Overlay/config/ui-test.php
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
// Overlay needs the full URLs in order to find the links in the embedded page (otherwise the %
|
||||
// tooltips don't show up)
|
||||
'tests.ui.url_normalizer_blacklist.api' => DI\add(array(
|
||||
'Overlay.getFollowingPages',
|
||||
)),
|
||||
'tests.ui.url_normalizer_blacklist.controller' => DI\add(array(
|
||||
'Overlay.renderSidebar',
|
||||
)),
|
||||
|
||||
);
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 778 B |
|
|
@ -1,5 +1,5 @@
|
|||
/*!
|
||||
* Piwik - Web Analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -20,11 +20,17 @@ var Overlay_Helper = {
|
|||
},
|
||||
|
||||
/** Get the url to launch overlay */
|
||||
getOverlayLink: function (idSite, period, date, link) {
|
||||
var url = 'index.php?module=Overlay&period=' + period + '&date=' + date + '&idSite=' + idSite;
|
||||
if (link) {
|
||||
url += '#l=' + Overlay_Helper.encodeFrameUrl(link);
|
||||
getOverlayLink: function (idSite, period, date, segment, link) {
|
||||
var url = 'index.php?module=Overlay&period=' + encodeURIComponent(period) + '&date=' + encodeURIComponent(date) + '&idSite=' + encodeURIComponent(idSite);
|
||||
|
||||
if (segment) {
|
||||
url += '&segment=' + encodeURIComponent(segment);
|
||||
}
|
||||
|
||||
if (link) {
|
||||
url += '#?l=' + Overlay_Helper.encodeFrameUrl(link);
|
||||
}
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*!
|
||||
* Piwik - Web Analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -8,9 +8,9 @@
|
|||
var Piwik_Overlay = (function () {
|
||||
|
||||
var $body, $iframe, $sidebar, $main, $location, $loading, $errorNotLoading;
|
||||
var $rowEvolutionLink, $transitionsLink, $fullScreenLink;
|
||||
var $rowEvolutionLink, $transitionsLink, $fullScreenLink, $visitorLogLink;
|
||||
|
||||
var idSite, period, date;
|
||||
var idSite, period, date, segment;
|
||||
|
||||
var iframeSrcBase;
|
||||
var iframeDomain = '';
|
||||
|
|
@ -19,7 +19,6 @@ var Piwik_Overlay = (function () {
|
|||
var iframeCurrentActionLabel = '';
|
||||
var updateComesFromInsideFrame = false;
|
||||
|
||||
|
||||
/** Load the sidebar for a url */
|
||||
function loadSidebar(currentUrl) {
|
||||
showLoading();
|
||||
|
|
@ -29,20 +28,26 @@ var Piwik_Overlay = (function () {
|
|||
iframeCurrentPage = currentUrl;
|
||||
iframeDomain = currentUrl.match(/http(s)?:\/\/(www\.)?([^\/]*)/i)[3];
|
||||
|
||||
globalAjaxQueue.abort();
|
||||
var ajaxRequest = new ajaxHelper();
|
||||
ajaxRequest.addParams({
|
||||
var params = {
|
||||
module: 'Overlay',
|
||||
action: 'renderSidebar',
|
||||
currentUrl: currentUrl
|
||||
}, 'get');
|
||||
};
|
||||
|
||||
if (segment) {
|
||||
params.segment = segment;
|
||||
}
|
||||
|
||||
globalAjaxQueue.abort();
|
||||
var ajaxRequest = new ajaxHelper();
|
||||
ajaxRequest.addParams(params, 'get');
|
||||
ajaxRequest.setCallback(
|
||||
function (response) {
|
||||
hideLoading();
|
||||
|
||||
var $response = $(response);
|
||||
|
||||
var $responseLocation = $response.find('.Overlay_Location');
|
||||
var $responseLocation = $response.find('.overlayLocation');
|
||||
var $url = $responseLocation.find('span');
|
||||
iframeCurrentPageNormalized = $url.data('normalizedUrl');
|
||||
iframeCurrentActionLabel = $url.data('label');
|
||||
|
|
@ -57,7 +62,7 @@ var Piwik_Overlay = (function () {
|
|||
$locationSpan.tooltip({
|
||||
track: true,
|
||||
items: '*',
|
||||
tooltipClass: 'Overlay_Tooltip',
|
||||
tooltipClass: 'overlayTooltip',
|
||||
content: '<strong>' + Piwik_Overlay_Translations.domain + ':</strong> ' +
|
||||
piwikHelper.addBreakpointsToUrl(iframeDomain),
|
||||
show: false,
|
||||
|
|
@ -67,10 +72,14 @@ var Piwik_Overlay = (function () {
|
|||
|
||||
$sidebar.empty().append($response).show();
|
||||
|
||||
if ($sidebar.find('.Overlay_NoData').size() == 0) {
|
||||
if ($sidebar.find('.overlayNoData').size() == 0) {
|
||||
$rowEvolutionLink.show();
|
||||
$transitionsLink.show()
|
||||
$transitionsLink.show();
|
||||
if ($('#segment').val()) {
|
||||
$visitorLogLink.show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
ajaxRequest.setErrorCallback(function () {
|
||||
|
|
@ -97,6 +106,7 @@ var Piwik_Overlay = (function () {
|
|||
$fullScreenLink.hide();
|
||||
$rowEvolutionLink.hide();
|
||||
$transitionsLink.hide();
|
||||
$visitorLogLink.hide();
|
||||
|
||||
$errorNotLoading.hide();
|
||||
}
|
||||
|
|
@ -107,9 +117,29 @@ var Piwik_Overlay = (function () {
|
|||
$fullScreenLink.show();
|
||||
}
|
||||
|
||||
function getOverlaySegment(url) {
|
||||
var location = broadcast.getParamValue('segment', url);
|
||||
|
||||
// angular will encode the value again since it is added as the fragment path, not the fragment query parameter,
|
||||
// so we have to decode it again after getParamValue
|
||||
location = decodeURIComponent(location);
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
function getOverlayLocationFromHash(urlHash) {
|
||||
var location = broadcast.getParamValue('l', urlHash);
|
||||
|
||||
// angular will encode the value again since it is added as the fragment path, not the fragment query parameter,
|
||||
// so we have to decode it again after getParamValue
|
||||
location = decodeURIComponent(location);
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
/** $.history callback for hash change */
|
||||
function hashChangeCallback(urlHash) {
|
||||
var location = broadcast.getParamValue('l', urlHash);
|
||||
var location = getOverlayLocationFromHash(urlHash);
|
||||
location = Overlay_Helper.decodeFrameUrl(location);
|
||||
|
||||
if (!updateComesFromInsideFrame) {
|
||||
|
|
@ -129,23 +159,25 @@ var Piwik_Overlay = (function () {
|
|||
return {
|
||||
|
||||
/** This method is called when Overlay loads */
|
||||
init: function (iframeSrc, pIdSite, pPeriod, pDate) {
|
||||
init: function (iframeSrc, pIdSite, pPeriod, pDate, pSegment) {
|
||||
iframeSrcBase = iframeSrc;
|
||||
idSite = pIdSite;
|
||||
period = pPeriod;
|
||||
date = pDate;
|
||||
segment = pSegment;
|
||||
|
||||
$body = $('body');
|
||||
$iframe = $('#Overlay_Iframe');
|
||||
$sidebar = $('#Overlay_Sidebar');
|
||||
$location = $('#Overlay_Location');
|
||||
$main = $('#Overlay_Main');
|
||||
$loading = $('#Overlay_Loading');
|
||||
$errorNotLoading = $('#Overlay_Error_NotLoading');
|
||||
$iframe = $('#overlayIframe');
|
||||
$sidebar = $('#overlaySidebar');
|
||||
$location = $('#overlayLocation');
|
||||
$main = $('#overlayMain');
|
||||
$loading = $('#overlayLoading');
|
||||
$errorNotLoading = $('#overlayErrorNotLoading');
|
||||
|
||||
$rowEvolutionLink = $('#Overlay_RowEvolution');
|
||||
$transitionsLink = $('#Overlay_Transitions');
|
||||
$fullScreenLink = $('#Overlay_FullScreen');
|
||||
$rowEvolutionLink = $('#overlayRowEvolution');
|
||||
$transitionsLink = $('#overlayTransitions');
|
||||
$fullScreenLink = $('#overlayFullScreen');
|
||||
$visitorLogLink = $('#overlaySegmentedVisitorLog');
|
||||
|
||||
adjustDimensions();
|
||||
|
||||
|
|
@ -171,6 +203,8 @@ var Piwik_Overlay = (function () {
|
|||
|
||||
// handle hash change
|
||||
broadcast.loadAjaxContent = hashChangeCallback;
|
||||
|
||||
broadcast._isInit = false;
|
||||
broadcast.init();
|
||||
|
||||
if (window.location.href.split('#').length == 1) {
|
||||
|
|
@ -179,12 +213,12 @@ var Piwik_Overlay = (function () {
|
|||
}
|
||||
|
||||
// handle date selection
|
||||
var $select = $('select#Overlay_DateRangeSelect').change(function () {
|
||||
var $select = $('select#overlayDateRangeSelect').change(function () {
|
||||
var parts = $(this).val().split(';');
|
||||
if (parts.length == 2) {
|
||||
period = parts[0];
|
||||
date = parts[1];
|
||||
window.location.href = Overlay_Helper.getOverlayLink(idSite, period, date, iframeCurrentPage);
|
||||
window.location.href = Overlay_Helper.getOverlayLink(idSite, period, date, segment, iframeCurrentPage);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -202,7 +236,11 @@ var Piwik_Overlay = (function () {
|
|||
|
||||
// handle transitions link
|
||||
$transitionsLink.click(function () {
|
||||
DataTable_RowActions_Transitions.launchForUrl(iframeCurrentPageNormalized);
|
||||
var unescapedSegment = null;
|
||||
if (segment) {
|
||||
unescapedSegment = unescape(segment);
|
||||
}
|
||||
DataTable_RowActions_Transitions.launchForUrl(iframeCurrentPageNormalized, unescapedSegment);
|
||||
return false;
|
||||
});
|
||||
|
||||
|
|
@ -212,6 +250,12 @@ var Piwik_Overlay = (function () {
|
|||
return false;
|
||||
});
|
||||
|
||||
// handle segmented visitor log link
|
||||
$visitorLogLink.click(function () {
|
||||
SegmentedVisitorLog.show('Actions.getPageUrls', $('#segment').val(), {});
|
||||
return false;
|
||||
});
|
||||
|
||||
// handle full screen link
|
||||
$fullScreenLink.click(function () {
|
||||
var href = iframeSrcBase;
|
||||
|
|
@ -230,7 +274,7 @@ var Piwik_Overlay = (function () {
|
|||
var locationParts = location.href.split('#');
|
||||
var currentLocation = '';
|
||||
if (locationParts.length > 1) {
|
||||
currentLocation = broadcast.getParamValue('l', locationParts[1]);
|
||||
currentLocation = getOverlayLocationFromHash(locationParts[1]);
|
||||
}
|
||||
|
||||
var newLocation = Overlay_Helper.encodeFrameUrl(currentUrl);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*!
|
||||
* Piwik - Web Analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -15,17 +15,47 @@ function DataTable_RowActions_Overlay(dataTable) {
|
|||
|
||||
DataTable_RowActions_Overlay.prototype = new DataTable_RowAction;
|
||||
|
||||
DataTable_RowActions_Overlay.registeredReports = [];
|
||||
DataTable_RowActions_Overlay.registerReport = function (handler) {
|
||||
DataTable_RowActions_Overlay.registeredReports.push(handler);
|
||||
}
|
||||
|
||||
|
||||
DataTable_RowActions_Overlay.prototype.onClick = function (actionA, tr, e) {
|
||||
if (!actionA.data('overlay-manipulated')) {
|
||||
actionA.data('overlay-manipulated', 1);
|
||||
|
||||
var link = tr.find('> td:first > a').attr('href');
|
||||
link = $('<textarea>').html(link).val(); // remove html entities
|
||||
var segment, link;
|
||||
|
||||
actionA.attr({
|
||||
target: '_blank',
|
||||
href: Overlay_Helper.getOverlayLink(this.dataTable.param.idSite, 'month', 'today', link)
|
||||
});
|
||||
var i = 0;
|
||||
for (i; i < DataTable_RowActions_Overlay.registeredReports.length; i++) {
|
||||
var report = DataTable_RowActions_Overlay.registeredReports[i];
|
||||
if (report
|
||||
&& report.onClick
|
||||
&& report.isAvailableOnReport
|
||||
&& report.isAvailableOnReport(this.dataTable.param)) {
|
||||
var result = report.onClick.apply(this, arguments);
|
||||
|
||||
if (!result || !result.link) {
|
||||
return;
|
||||
}
|
||||
|
||||
link = result.link;
|
||||
if (result.segment) {
|
||||
segment = result.segment;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (link) {
|
||||
var href = Overlay_Helper.getOverlayLink(this.dataTable.param.idSite, 'month', 'today', segment, link);
|
||||
|
||||
actionA.attr({
|
||||
target: '_blank',
|
||||
href: href
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
@ -54,7 +84,18 @@ DataTable_RowActions_Registry.register({
|
|||
if (!window.DataTable_RowActions_Transitions) {
|
||||
return false;
|
||||
}
|
||||
return DataTable_RowActions_Transitions.isPageUrlReport(dataTableParams.module, dataTableParams.action);
|
||||
|
||||
var i = 0;
|
||||
for (i; i < DataTable_RowActions_Overlay.registeredReports.length; i++) {
|
||||
var report = DataTable_RowActions_Overlay.registeredReports[i];
|
||||
if (report
|
||||
&& report.isAvailableOnReport
|
||||
&& report.isAvailableOnReport(dataTableParams)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
isAvailableOnRow: function (dataTableParams, tr) {
|
||||
|
|
|
|||
5
www/analytics/plugins/Overlay/lang/ar.json
Normal file
5
www/analytics/plugins/Overlay/lang/ar.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Location": "المكان"
|
||||
}
|
||||
}
|
||||
5
www/analytics/plugins/Overlay/lang/be.json
Normal file
5
www/analytics/plugins/Overlay/lang/be.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Location": "Лакаця"
|
||||
}
|
||||
}
|
||||
16
www/analytics/plugins/Overlay/lang/bg.json
Normal file
16
www/analytics/plugins/Overlay/lang/bg.json
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Clicks": "%s клика",
|
||||
"ClicksFromXLinks": "%1$s щраквания от една от %2$s връзките",
|
||||
"Domain": "Домейн",
|
||||
"ErrorNotLoadingDetails": "Възможно е заредената страница вдясно да няма последяващия Piwik код. В този случай опитайте да стартирате нова връзка за различна страница от доклада на страници.",
|
||||
"ErrorNotLoadingLink": "Щраквайки тук, ще получите повече съвети за отстраняване на проблеми",
|
||||
"Link": "Връзка",
|
||||
"Location": "Местоположение",
|
||||
"NoData": "Няма данни за тази страница по време на избрания период.",
|
||||
"OneClick": "1 клик",
|
||||
"OpenFullScreen": "Цял екран (без странична лента)",
|
||||
"RedirectUrlErrorAdmin": "Може да добавите домейнът като допълнителен адрес %1$sв настройките%2$s.",
|
||||
"RedirectUrlErrorUser": "Попитайте вашият администратор да добави домейна, като допълнителен URL."
|
||||
}
|
||||
}
|
||||
20
www/analytics/plugins/Overlay/lang/ca.json
Normal file
20
www/analytics/plugins/Overlay/lang/ca.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Clicks": "%s clicks",
|
||||
"ClicksFromXLinks": "%1$s clicks de un de %2$s enllaços",
|
||||
"Domain": "Domini",
|
||||
"ErrorNotLoading": "No es pot iniciar la sessió de pàgines Overlay",
|
||||
"ErrorNotLoadingDetails": "Potser la pàgina carregada a la dreta no te el codi de rastreig de Piwik. En aquest cas, proveu de llençar el Overlay d'un altra pàgina del informe de pàgines.",
|
||||
"ErrorNotLoadingDetailsSSL": "Com esteu fent servir Piwik a través de https, es possible que el vostre lloc web no suporti el SSL. Proveu utilitzant el Piwik sobre http.",
|
||||
"ErrorNotLoadingLink": "Feu click aquí per obtenir més informació sobre com solucionar el problema.",
|
||||
"Link": "Enllaç",
|
||||
"Location": "Ubicació",
|
||||
"NoData": "No hi ha informació per aquesta pàgina en el període seleccionat.",
|
||||
"OneClick": "1 click",
|
||||
"OpenFullScreen": "Mostra a pantalla complerta (sense barra lateral)",
|
||||
"Overlay": "Overlay de pàgina",
|
||||
"RedirectUrlError": "Esteu intentant obrir un pàgina Overlay per la URL \"%1$s\". %2$s Cap dels dominis configurats al Piwik concòrda amb l'enllaç.",
|
||||
"RedirectUrlErrorAdmin": "Podeu afegir una URL addicional per un domini a %1$s les preferències%2$s.",
|
||||
"RedirectUrlErrorUser": "Contacteu amb el vostre administrador per afegir el domini com una URL adicional."
|
||||
}
|
||||
}
|
||||
21
www/analytics/plugins/Overlay/lang/cs.json
Normal file
21
www/analytics/plugins/Overlay/lang/cs.json
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Clicks": "%s kliknutí",
|
||||
"ClicksFromXLinks": "%1$s kliknutí z některého z %2$s odkazů",
|
||||
"Domain": "Doména",
|
||||
"ErrorNotLoading": "Sezení překryvu stránky nemohlo být zatím spuštěno.",
|
||||
"ErrorNotLoadingDetails": "Možná nemá načtená stránka na pravé straně sledovací kód. V tomto případě zkuste spustit překryv pro jinou stránku z hlášení stránek.",
|
||||
"ErrorNotLoadingDetailsSSL": "Protože používáte Piwik přes HTTPS, nejpravděpodobnější je, že stránky nepodporují SSL. Zkuste přistoupit k Piwiku přes HTTP.",
|
||||
"ErrorNotLoadingLink": "Klikněte zde pro více tipů k řešení problémů",
|
||||
"Link": "Odkaz",
|
||||
"Location": "Umístění",
|
||||
"NoData": "V daném období nejsou pro vybranou stránku k dispozici žádná data.",
|
||||
"OneClick": "1 kliknutí",
|
||||
"OpenFullScreen": "Přejít na celou obrazovku (bez postranní lišty)",
|
||||
"Overlay": "Překryv stránky",
|
||||
"PluginDescription": "Podívejte se na vaše analytická data jako na překryv na vašich stránkách. Zjistěte, kolik uživatelů kliklo na kterýkoliv odkaz. Poznámka: vyžaduje povolený zásuvný modul přechodů.",
|
||||
"RedirectUrlError": "Pokoušíte se spustit překryv pro stránku s url \"%1$s\". %2$s Žádná doména z nastavení Piwiku ale neodpovídá odkazu.",
|
||||
"RedirectUrlErrorAdmin": "Doménu můžete jako další URL přidat v %1$snastavení%2$s.",
|
||||
"RedirectUrlErrorUser": "Požádejte svého administrátora o přidání stránky jako další URL:."
|
||||
}
|
||||
}
|
||||
20
www/analytics/plugins/Overlay/lang/da.json
Normal file
20
www/analytics/plugins/Overlay/lang/da.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Clicks": "%s klik",
|
||||
"ClicksFromXLinks": "%1$s klik fra et af %2$s link",
|
||||
"Domain": "Domæne",
|
||||
"ErrorNotLoading": "Sideoverlay session kunne ikke startes endnu.",
|
||||
"ErrorNotLoadingDetails": "Måske den indlæste side til højre ikke har Piwik sporingskode. I så tilfælde, kan du prøve at starte overlejring for en anden side fra siderapporter.",
|
||||
"ErrorNotLoadingDetailsSSL": "Da du bruger Piwik over HTTPS, er den mest sandsynlige årsag, at hjemmesiden ikke understøtter SSL. Prøv at bruge Piwik over HTTP.",
|
||||
"ErrorNotLoadingLink": "Klik her for at få flere tips til fejlfinding",
|
||||
"Link": "Link",
|
||||
"Location": "Lokation",
|
||||
"NoData": "Der er ingen data for denne side i den valgte periode.",
|
||||
"OneClick": "1 klik",
|
||||
"OpenFullScreen": "Vis fuldskærm (ingen sidebjælke)",
|
||||
"Overlay": "Side overlejring",
|
||||
"RedirectUrlError": "Du forsøger at åbne sideoverlejring for URL \"%1$s\". %2$s Ingen af domæner fra Piwiks indstillinger matcher linket.",
|
||||
"RedirectUrlErrorAdmin": "Du kan tilføje domænet som en yderligere URL %1$si indstillingerne%2$s.",
|
||||
"RedirectUrlErrorUser": "Spørg administratoren om at tilføje domænet som en yderligere URL."
|
||||
}
|
||||
}
|
||||
21
www/analytics/plugins/Overlay/lang/de.json
Normal file
21
www/analytics/plugins/Overlay/lang/de.json
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"Overlay": {
|
||||
"Clicks": "%s Klicks",
|
||||
"ClicksFromXLinks": "%1$s klicks von einem von %2$s Verweisen",
|
||||
"Domain": "Domain",
|
||||
"ErrorNotLoading": "Die Seiten Overlay Sitzung kann gerade nicht aufgerufen werden.",
|
||||
"ErrorNotLoadingDetails": "Möglicherweise hat die rechte Seite keinen Piwik Tracking Code. In diesem Fall bitte versuchen das Overlay für eine andere Seite aus dem Seitenbericht zu benutzen.",
|
||||
"ErrorNotLoadingDetailsSSL": "Da Sie Piwik über https nutzen, ist es wahrscheinlich dass Ihre Website kein SSL unterstützt. Bitte benutzen Sie Piwik über http.",
|
||||
"ErrorNotLoadingLink": "Klicken Sie hier für weitere Tipps zur Fehlerbehebung",
|
||||
"Link": "Link",
|
||||
"Location": "Seite",
|
||||
"NoData": "Für den gewählten Zeitraum gibt es keine Daten für diese Seite.",
|
||||
"OneClick": "1-click",
|
||||
"OpenFullScreen": "Vollbildmodus starten (keine Sidebar)",
|
||||
"Overlay": "Seiten Overlay",
|
||||
"PluginDescription": "Sehen Sie Ihre Analysedaten als ein Overlay auf Ihrer aktuellen Website an. Lassen Sie sich anzeigen wie oft Ihre Benutzer auf welchen Link geklickt haben. Hinweis: Benötigt das Transitions-Plugin.",
|
||||
"RedirectUrlError": "Sie versuchen, eine Seiten Overlay Sitzung für die URL \"%1$s\" zu starten. %2$s Keine der in den Piwik Einstellungen hinterlegten Domains passt zu diesem Link.",
|
||||
"RedirectUrlErrorAdmin": "Sie können diese Domain %1$sin den Einstellungen%2$s als zusätzliche URL hinzufügen.",
|
||||
"RedirectUrlErrorUser": "Bitten Sie Ihren Administrator diese Domain als zusätzliche URL hinzuzufügen."
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue