Merge pull request '[piwik] Short Endpoint option' (#1379) from EntropyEngineer/friendica-addons:piwik-Short-Endpoint-option into develop

Reviewed-on: https://git.friendi.ca/friendica/friendica-addons/pulls/1379
pull/1380/head
Hypolite Petovan 2023-04-30 13:43:35 +02:00
commit df2e9863ed
7 changed files with 37 additions and 17 deletions

View File

@ -31,7 +31,7 @@ Open the `config/node.config.php` file and add "piwik" to the list of activated
], ],
] ]
You can change 4 more configuration variables for the addon in the `config/piwik.config.php` file: You can change 5 more configuration variables for the addon in the `config/piwik.config.php` file:
return [ return [
'piwik' => [ 'piwik' => [
@ -39,6 +39,7 @@ You can change 4 more configuration variables for the addon in the `config/piwik
'sideid' => 1, 'sideid' => 1,
'optout' => true, 'optout' => true,
'async' => false, 'async' => false,
'shortendpoint' => false,
], ],
]; ];
@ -50,7 +51,7 @@ Configuration fields
* The *optout* parameter (true|false) defines whether or not a short notice about the utilization of Piwik will be displayed on every page of your Friendica site (at the bottom of the page with some spacing to the * The *optout* parameter (true|false) defines whether or not a short notice about the utilization of Piwik will be displayed on every page of your Friendica site (at the bottom of the page with some spacing to the
other content). Part of the note is a link that allows the visitor to set an _opt-out_ cookie which will prevent visits from that user be tracked by piwik. other content). Part of the note is a link that allows the visitor to set an _opt-out_ cookie which will prevent visits from that user be tracked by piwik.
* The *async* parameter (true|false) defines whether or not to use asynchronous tracking so pages load (or appear to load) faster. * The *async* parameter (true|false) defines whether or not to use asynchronous tracking so pages load (or appear to load) faster.
* The *shortendpoint* parameter (true|false) defines whether or not to use a short path to the tracking script: "/js/" instead of "/piwik.js".
Currently the optional notice states the following: Currently the optional notice states the following:
> This website is tracked using the Piwik analytics tool. If you do not want that your visits are logged this way you can set a cookie to prevent Piwik from tracking further visits of the site (opt-out). > This website is tracked using the Piwik analytics tool. If you do not want that your visits are logged this way you can set a cookie to prevent Piwik from tracking further visits of the site (opt-out).

View File

@ -25,5 +25,9 @@ return [
// async (Boolean) // async (Boolean)
// This defines whether or not to use asynchronous tracking so pages load (or appear to load) faster. // This defines whether or not to use asynchronous tracking so pages load (or appear to load) faster.
'async' => false, 'async' => false,
// shortendpoint (Boolean)
// This defines whether or not to use a short path to the tracking script: "/js/" instead of "/piwik.js".
'shortendpoint' => false,
], ],
]; ];

View File

@ -20,13 +20,13 @@ msgstr ""
"Language: en_GB\n" "Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: piwik.php:94 #: piwik.php:95
msgid "" msgid ""
"This website is tracked using the <a href='http://www.matomo.org'>Matomo</a>" "This website is tracked using the <a href='http://www.matomo.org'>Matomo</a>"
" analytics tool." " analytics tool."
msgstr "This website is tracking, using the <a href='http://www.matomo.org'>Matomo</a> analytics tool." msgstr "This website is tracking, using the <a href='http://www.matomo.org'>Matomo</a> analytics tool."
#: piwik.php:97 #: piwik.php:98
#, php-format #, php-format
msgid "" msgid ""
"If you do not want that your visits are logged in this way you <a " "If you do not want that your visits are logged in this way you <a "
@ -34,32 +34,36 @@ msgid ""
"visits of the site</a> (opt-out)." "visits of the site</a> (opt-out)."
msgstr "If you do not want that your visits logged in this way you <a href='%s'>can set a cookie to prevent Matomo / Piwik from tracking further visits of the site</a> (opt-out)." msgstr "If you do not want that your visits logged in this way you <a href='%s'>can set a cookie to prevent Matomo / Piwik from tracking further visits of the site</a> (opt-out)."
#: piwik.php:104 #: piwik.php:107
msgid "Save Settings" msgid "Save Settings"
msgstr "Save settings" msgstr "Save settings"
#: piwik.php:105 #: piwik.php:108
msgid "Matomo (Piwik) Base URL" msgid "Matomo (Piwik) Base URL"
msgstr "Matomo (Piwik) Base URL" msgstr "Matomo (Piwik) Base URL"
#: piwik.php:105 #: piwik.php:108
msgid "" msgid ""
"Absolute path to your Matomo (Piwik) installation. (without protocol " "Absolute path to your Matomo (Piwik) installation. (without protocol "
"(http/s), with trailing slash)" "(http/s), with trailing slash)"
msgstr "Absolute path to your Matomo (Piwik) installation. (without protocol (http/s), with trailing slash)" msgstr "Absolute path to your Matomo (Piwik) installation. (without protocol (http/s), with trailing slash)"
#: piwik.php:106 #: piwik.php:109
msgid "Site ID" msgid "Site ID"
msgstr "Site ID" msgstr "Site ID"
#: piwik.php:107 #: piwik.php:110
msgid "Show opt-out cookie link?" msgid "Show opt-out cookie link?"
msgstr "Show opt-out cookie link?" msgstr "Show opt-out cookie link?"
#: piwik.php:108 #: piwik.php:111
msgid "Asynchronous tracking" msgid "Asynchronous tracking"
msgstr "Asynchronous tracking" msgstr "Asynchronous tracking"
#: piwik.php:112
msgid "Shortcut path to the script ('/js/' instead of '/piwik.js')"
msgstr "Shortcut path to the script ('/js/' instead of '/piwik.js')"
#: piwik.php:120 #: piwik.php:120
msgid "Settings updated." msgid "Settings updated."
msgstr "Settings updated." msgstr "Settings updated."

View File

@ -14,3 +14,4 @@ $a->strings['Site ID'] = 'Site ID';
$a->strings['Show opt-out cookie link?'] = 'Show opt-out cookie link?'; $a->strings['Show opt-out cookie link?'] = 'Show opt-out cookie link?';
$a->strings['Asynchronous tracking'] = 'Asynchronous tracking'; $a->strings['Asynchronous tracking'] = 'Asynchronous tracking';
$a->strings['Settings updated.'] = 'Settings updated.'; $a->strings['Settings updated.'] = 'Settings updated.';
$a->strings["Shortcut path to the script ('/js/' instead of '/piwik.js')"] = "Shortcut path to the script ('/js/' instead of '/piwik.js')";

View File

@ -9,3 +9,4 @@ $a->strings["Site ID"] = "ID сайта";
$a->strings["Show opt-out cookie link?"] = "Показать ссылку opt-out cookie?"; $a->strings["Show opt-out cookie link?"] = "Показать ссылку opt-out cookie?";
$a->strings["Asynchronous tracking"] = "Асинхронное отслеживание"; $a->strings["Asynchronous tracking"] = "Асинхронное отслеживание";
$a->strings["Settings updated."] = "Настройки обновлены."; $a->strings["Settings updated."] = "Настройки обновлены.";
$a->strings["Shortcut path to the script ('/js/' instead of '/piwik.js')"] = "Сокращенный путь к скрипту ('/js/' вместо '/piwik.js')";

View File

@ -25,6 +25,7 @@
* 'sideid' => '', * 'sideid' => '',
* 'optout' => true, * 'optout' => true,
* 'async' => false, * 'async' => false,
* 'shortendpoint' => false,
* ], * ],
* ]; * ];
* *
@ -60,7 +61,7 @@ function piwik_analytics(string &$b)
* associated CSS file. We just have to tell Friendica to get it * associated CSS file. We just have to tell Friendica to get it
* into the page header. * into the page header.
*/ */
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl() . '/addon/piwik/piwik.css' . '" media="all" />'; DI::page()->registerStylesheet('addon/piwik/piwik.css', 'all');
/* /*
* Get the configuration values. * Get the configuration values.
@ -69,16 +70,21 @@ function piwik_analytics(string &$b)
$siteid = DI::config()->get('piwik', 'siteid'); $siteid = DI::config()->get('piwik', 'siteid');
$optout = DI::config()->get('piwik', 'optout'); $optout = DI::config()->get('piwik', 'optout');
$async = DI::config()->get('piwik', 'async'); $async = DI::config()->get('piwik', 'async');
$shortendpoint = DI::config()->get('piwik', 'shortendpoint');
/* /*
* Add the Piwik tracking code for the site. * Add the Piwik tracking code for the site.
* If async is set to true use asynchronous tracking * If async is set to true use asynchronous tracking
*/ */
$scriptAsyncValue = $async ? 'true' : 'false';
$scriptPhpEndpoint = $shortendpoint ? 'js/' : 'piwik.php';
$scriptJsEndpoint = $shortendpoint ? 'js/' : 'piwik.js';
$b .= "<!-- Piwik --> <script type=\"text/javascript\"> var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=((\"https:\" == document.location.protocol) ? \"https\" : \"http\") + \"://$baseurl\"; _paq.push(['setTrackerUrl', u+'$scriptPhpEndpoint']); _paq.push(['setSiteId', $siteid]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=$scriptAsyncValue; g.src=u+'$scriptJsEndpoint'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Piwik Code -->\r\n";
if ($async) { if ($async) {
$b .= "<!-- Piwik --> <script type=\"text/javascript\"> var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=((\"https:\" == document.location.protocol) ? \"https\" : \"http\") + \"://".$baseurl."\"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', ".$siteid."]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Piwik Code -->\r\n"; $b .= "<div id='piwik-code-block'> <!-- Piwik -->\r\n<noscript><p><img src=\"//$baseurl$scriptPhpEndpoint?idsite=$siteid\" style=\"border:0\" alt=\"\" /></p></noscript>\r\n <!-- End Piwik Tracking Tag --> </div>";
$b .= "<div id='piwik-code-block'> <!-- Piwik -->\r\n<noscript><p><img src=\"//".$baseurl."piwik.php?idsite=".$siteid."\" style=\"border:0\" alt=\"\" /></p></noscript>\r\n <!-- End Piwik Tracking Tag --> </div>";
} else {
$b .= "<!-- Piwik --> <script type=\"text/javascript\"> var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=((\"https:\" == document.location.protocol) ? \"https\" : \"http\") + \"://".$baseurl."\"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', ".$siteid."]); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=false; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Piwik Code -->\r\n";
} }
/* /*
@ -89,7 +95,7 @@ function piwik_analytics(string &$b)
$b .= "<div id='piwik-optout-link'>"; $b .= "<div id='piwik-optout-link'>";
$b .= DI::l10n()->t("This website is tracked using the <a href='http://www.matomo.org'>Matomo</a> analytics tool."); $b .= DI::l10n()->t("This website is tracked using the <a href='http://www.matomo.org'>Matomo</a> analytics tool.");
$b .= " "; $b .= " ";
$the_url = "http://".$baseurl ."index.php?module=CoreAdminHome&action=optOut"; $the_url = "http://{$baseurl}index.php?module=CoreAdminHome&action=optOut";
$b .= DI::l10n()->t("If you do not want that your visits are logged in this way you <a href='%s'>can set a cookie to prevent Matomo / Piwik from tracking further visits of the site</a> (opt-out).", $the_url); $b .= DI::l10n()->t("If you do not want that your visits are logged in this way you <a href='%s'>can set a cookie to prevent Matomo / Piwik from tracking further visits of the site</a> (opt-out).", $the_url);
$b .= "</div>"; $b .= "</div>";
} }
@ -104,6 +110,7 @@ function piwik_addon_admin (string &$o)
'$siteid' => ['siteid', DI::l10n()->t('Site ID'), DI::config()->get('piwik','siteid' ), ''], '$siteid' => ['siteid', DI::l10n()->t('Site ID'), DI::config()->get('piwik','siteid' ), ''],
'$optout' => ['optout', DI::l10n()->t('Show opt-out cookie link?'), DI::config()->get('piwik','optout' ), ''], '$optout' => ['optout', DI::l10n()->t('Show opt-out cookie link?'), DI::config()->get('piwik','optout' ), ''],
'$async' => ['async', DI::l10n()->t('Asynchronous tracking'), DI::config()->get('piwik','async' ), ''], '$async' => ['async', DI::l10n()->t('Asynchronous tracking'), DI::config()->get('piwik','async' ), ''],
'$shortendpoint' => ['shortendpoint', DI::l10n()->t("Shortcut path to the script ('/js/' instead of '/piwik.js')"), DI::config()->get('piwik','shortendpoint' ), ''],
]); ]);
} }
@ -113,4 +120,5 @@ function piwik_addon_admin_post()
DI::config()->set('piwik', 'siteid', trim($_POST['siteid'] ?? '')); DI::config()->set('piwik', 'siteid', trim($_POST['siteid'] ?? ''));
DI::config()->set('piwik', 'optout', trim($_POST['optout'] ?? '')); DI::config()->set('piwik', 'optout', trim($_POST['optout'] ?? ''));
DI::config()->set('piwik', 'async', trim($_POST['async'] ?? '')); DI::config()->set('piwik', 'async', trim($_POST['async'] ?? ''));
DI::config()->set('piwik', 'shortendpoint', trim($_POST['shortendpoint'] ?? ''));
} }

View File

@ -2,4 +2,5 @@
{{include file="field_input.tpl" field=$siteid}} {{include file="field_input.tpl" field=$siteid}}
{{include file="field_checkbox.tpl" field=$optout}} {{include file="field_checkbox.tpl" field=$optout}}
{{include file="field_checkbox.tpl" field=$async}} {{include file="field_checkbox.tpl" field=$async}}
{{include file="field_checkbox.tpl" field=$shortendpoint}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div> <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>