update Piwik to version 2.16 (fixes #91)

This commit is contained in:
oliver 2016-04-10 18:55:57 +02:00
commit 47263617c5
60 changed files with 418860 additions and 226988 deletions

View file

@ -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
@ -44,13 +44,20 @@ class API extends \Piwik\Plugin\API
}
$body = sprintf("Feature: %s\nLike: %s\n", $featureName, $likeText, $message);
if (!empty($message)) {
$body .= sprintf("Feedback:\n%s\n", $message);
} else {
$body .= "No feedback\n";
}
$this->sendMail($featureName, $body);
$feedbackMessage = "";
if (!empty($message) && $message != 'undefined') {
$feedbackMessage = sprintf("Feedback:\n%s\n", trim($message));
}
$body .= $feedbackMessage ? $feedbackMessage : " \n";
$subject = sprintf("%s for %s %s",
empty($like) ? "-1" : "+1",
$featureName,
empty($feedbackMessage) ? "" : "(w/ feedback)"
);
$this->sendMail($subject, $body);
}
private function sendMail($subject, $body)
@ -71,38 +78,14 @@ class API extends \Piwik\Plugin\API
@$mail->send();
}
private function findTranslationKeyForFeatureName($featureName)
{
if (empty($GLOBALS['Piwik_translations'])) {
return;
}
foreach ($GLOBALS['Piwik_translations'] as $key => $translations) {
$possibleKey = array_search($featureName, $translations);
if (!empty($possibleKey)) {
return $key . '_' . $possibleKey;
}
}
}
private function getEnglishTranslationForFeatureName($featureName)
{
$loadedLanguage = Translate::getLanguageLoaded();
if ($loadedLanguage == 'en') {
if (Translate::getLanguageLoaded() == 'en') {
return $featureName;
}
$translationKeyForFeature = $this->findTranslationKeyForFeatureName($featureName);
$translationKeyForFeature = Translate::findTranslationKeyForTranslation($featureName);
if (!empty($translationKeyForFeature)) {
Translate::reloadLanguage('en');
$featureName = Piwik::translate($translationKeyForFeature);
Translate::reloadLanguage($loadedLanguage);
return $featureName;
}
return $featureName;
return Piwik::translate($translationKeyForFeature, array(), 'en');
}
}

View file

@ -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,14 +8,6 @@
*/
namespace Piwik\Plugins\Feedback;
use Exception;
use Piwik\Common;
use Piwik\Config;
use Piwik\IP;
use Piwik\Mail;
use Piwik\Nonce;
use Piwik\Piwik;
use Piwik\Url;
use Piwik\Version;
use Piwik\View;

View file

@ -1,15 +1,12 @@
<?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
*
*/
namespace Piwik\Plugins\Feedback;
use Piwik\Menu\MenuTop;
use Piwik\Piwik;
/**
*
@ -18,42 +15,28 @@ class Feedback extends \Piwik\Plugin
{
/**
* @see Piwik\Plugin::getListHooksRegistered
* @see Piwik\Plugin::registerEvents
*/
public function getListHooksRegistered()
public function registerEvents()
{
return array(
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Menu.Top.addItems' => 'addTopMenu',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys'
);
}
public function addTopMenu()
{
MenuTop::addEntry(
'General_Help',
array('module' => 'Feedback', 'action' => 'index', 'segment' => false),
true,
$order = 20,
$isHTML = false,
$tooltip = Piwik::translate('Feedback_TopLinkTooltip')
);
}
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/Feedback/stylesheets/feedback.less";
$stylesheets[] = "plugins/Feedback/angularjs/ratefeature/ratefeature.less";
$stylesheets[] = "plugins/Feedback/angularjs/ratefeature/ratefeature.directive.less";
}
public function getJsFiles(&$jsFiles)
{
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature-model.js";
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature-controller.js";
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature-directive.js";
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature-model.service.js";
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature.controller.js";
$jsFiles[] = "plugins/Feedback/angularjs/ratefeature/ratefeature.directive.js";
}
public function getClientSideTranslationKeys(&$translationKeys)
@ -66,5 +49,6 @@ class Feedback extends \Piwik\Plugin
$translationKeys[] = 'Feedback_SendFeedback';
$translationKeys[] = 'Feedback_RateFeatureSendFeedbackInformation';
$translationKeys[] = 'General_Ok';
$translationKeys[] = 'General_Cancel';
}
}

View file

@ -0,0 +1,25 @@
<?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\Feedback;
use Piwik\Menu\MenuUser;
use Piwik\Piwik;
class Menu extends \Piwik\Plugin\Menu
{
public function configureUserMenu(MenuUser $menu)
{
$menu->addPlatformItem(
'General_Help',
$this->urlForAction('index', array('segment' => false)),
$order = 99,
$tooltip = Piwik::translate('Feedback_TopLinkTooltip')
);
}
}

View file

@ -1,23 +0,0 @@
/*!
* Piwik - Web Analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
angular.module('piwikApp').controller('RateFeatureController', function($scope, rateFeatureModel, $filter){
$scope.dislikeFeature = function () {
$scope.like = false;
};
$scope.likeFeature = function () {
$scope.like = true;
};
$scope.sendFeedback = function (message) {
rateFeatureModel.sendFeedbackForFeature($scope.title, $scope.like, message);
$scope.ratingDone = true;
// alert($filter('translate')('Feedback_ThankYou'));
};
});

View file

@ -1,22 +0,0 @@
/*!
* Piwik - Web Analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div piwik-rate-feature title="My Feature Name">
*/
angular.module('piwikApp').directive('piwikRateFeature', function($document, piwik, $filter){
return {
restrict: 'A',
scope: {
title: '@'
},
templateUrl: 'plugins/Feedback/angularjs/ratefeature/ratefeature.html?cb=' + piwik.cacheBuster,
controller: 'RateFeatureController'
};
});

View file

@ -1,22 +0,0 @@
/*!
* Piwik - Web Analytics
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
angular.module('piwikApp').factory('rateFeatureModel', function (piwikApi) {
var model = {};
model.sendFeedbackForFeature = function (featureName, like, message) {
return piwikApi.fetch({
method: 'Feedback.sendFeedbackForFeature',
featureName: featureName,
like: like ? '1' : '0',
message: message + ''
});
};
return model;
});

View file

@ -0,0 +1,29 @@
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
(function () {
angular.module('piwikApp').factory('rateFeatureModel', rateFeatureModel);
rateFeatureModel.$inject = ['piwikApi'];
function rateFeatureModel(piwikApi) {
return {
sendFeedbackForFeature: sendFeedbackForFeature
};
function sendFeedbackForFeature (featureName, like, message) {
return piwikApi.fetch({
method: 'Feedback.sendFeedbackForFeature',
featureName: featureName,
like: like ? '1' : '0',
message: message + ''
});
}
}
})();

View file

@ -0,0 +1,33 @@
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
(function () {
angular.module('piwikApp').controller('RateFeatureController', RateFeatureController);
RateFeatureController.$inject = ['$scope', 'rateFeatureModel'];
function RateFeatureController($scope, model){
var vm = this;
vm.title = $scope.title;
vm.dislikeFeature = dislikeFeature;
vm.likeFeature = likeFeature;
vm.sendFeedback = sendFeedback;
function dislikeFeature () {
vm.like = false;
}
function likeFeature () {
vm.like = true;
}
function sendFeedback (message) {
model.sendFeedbackForFeature(vm.title, vm.like, message);
vm.ratingDone = true;
}
}
})();

View file

@ -0,0 +1,38 @@
<div title="{{ 'Feedback_RateFeatureTitle'|translate:rateFeature.title }}" class="ratefeature">
<div class="iconContainer"
ng-mouseenter="view.expanded=true;"
ng-mouseleave="view.expanded=false">
<img ng-click="rateFeature.likeFeature();view.showFeedbackForm=true;"
class="like-icon"
src="plugins/Feedback/angularjs/ratefeature/thumbs-up.png"/>
<img ng-click="rateFeature.dislikeFeature();view.showFeedbackForm=true;"
class="dislike-icon"
ng-show="view.expanded"
src="plugins/Feedback/angularjs/ratefeature/thumbs-down.png"/>
</div>
<div class="ui-confirm ratefeatureDialog" piwik-dialog="view.showFeedbackForm" yes="rateFeature.sendFeedback(view.feedbackMessage)">
<h2>{{ 'Feedback_RateFeatureThankYouTitle'|translate:title }}</h2>
<p ng-if="rateFeature.like">{{ 'Feedback_RateFeatureLeaveMessageLike'|translate }}</p>
<p ng-if="!rateFeature.like">{{ 'Feedback_RateFeatureLeaveMessageDislike'|translate }}</p>
<br />
<div class="messageContainer">
<textarea ng-model="view.feedbackMessage"></textarea>
</div>
<input type="button"
title="{{ 'Feedback_RateFeatureSendFeedbackInformation'|translate }}"
value="{{ 'Feedback_SendFeedback'|translate }}" role="yes"/>
</div>
<div class="ui-confirm ratefeatureDialog" piwik-dialog="rateFeature.ratingDone" yes="">
<h2>{{ 'Feedback_ThankYou'|translate:rateFeature.title }}</h2>
<input type="button" value="{{ 'General_Ok'|translate }}" role="yes"/>
</div>
</div>

View file

@ -0,0 +1,29 @@
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div piwik-rate-feature title="My Feature Name">
*/
(function () {
angular.module('piwikApp').directive('piwikRateFeature', piwikRateFeature);
piwikRateFeature.$inject = ['piwik'];
function piwikRateFeature(piwik){
return {
restrict: 'A',
scope: {
title: '@'
},
templateUrl: 'plugins/Feedback/angularjs/ratefeature/ratefeature.directive.html?cb=' + piwik.cacheBuster,
controller: 'RateFeatureController',
controllerAs: 'rateFeature',
};
}
})();

View file

@ -0,0 +1,30 @@
.ratefeatureDialog {
text-align: center;
textarea {
margin-top: 5px;
width: 100%;
height: 80px;
}
}
.ratefeature {
font-size: 1px;
.iconContainer {
display: inline-block;
}
.dislike-icon,
.like-icon {
opacity: 0.2;
width: 22px;
height: 22px;
cursor: pointer;
&:hover {
opacity: 0.9;
}
}
}

View file

@ -0,0 +1,11 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "هل لديك خطأ أو ميزة تود إضافتها وتريد إخبارنا عنها؟",
"IWantTo": "أرغب في:",
"LearnWaysToParticipate": "تعرف على كافة الطرق التي يمكنك %s المساهمة %s بها.",
"ManuallySendEmailTo": "الرجاء إرسال رسالتك يدوياً إلى",
"SendFeedback": "أرسل التغذية الراجعة",
"ThankYou": "شكراً لمساعدتك في جعل Piwik أفضل!",
"VisitTheForums": "قم بزيارة %sالمنتديات%s"
}
}

View file

@ -0,0 +1,11 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Ці ёсць у вас памылка аб якой неабходна певедаміць?",
"IWantTo": "Я хачу, каб:",
"LearnWaysToParticipate": "Даведайцеся пра ўсе спосабы %s ўдзельнічыства %s",
"ManuallySendEmailTo": "Калі ласка, уручную адпраўце паведамленне да",
"SendFeedback": "Адправіць водгук",
"ThankYou": "Дзякуй за дапамогу нам зрабіць Piwik лепш!",
"VisitTheForums": "Наведайце %s форумы %s"
}
}

View file

@ -0,0 +1,13 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Желаете да докладвате за грешка или имате предложение?",
"IWantTo": "Желая да:",
"LearnWaysToParticipate": "Научете повече за начините, как бихте могли да %sучаствате%s",
"ManuallySendEmailTo": "Моля изпратете ръчно Вашето съобщение до",
"RateFeatureThankYouTitle": "Благодарим ви, че оценихте '%s'!",
"SendFeedback": "Изпрати съобщението",
"ThankYou": "Благодаря, че помогнахте да направим Piwik по-добър!",
"TopLinkTooltip": "Може да ни кажете какво мислите, както и да изискате професионална помощ.",
"VisitTheForums": "Посетете нашият %sФорум%s"
}
}

View file

@ -0,0 +1,5 @@
{
"Feedback": {
"IWantTo": "আমি চাই:"
}
}

View file

@ -0,0 +1,12 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Teniu algun error que reportar o una petició de noves funcionalitats?",
"IWantTo": "Jo vull:",
"LearnWaysToParticipate": "Apren sobre les formes en que tu pots %s participar %s",
"ManuallySendEmailTo": "Siusplau envia el vostre missatge manualmetn a",
"SendFeedback": "Enviar Feedback",
"ThankYou": "Gràcies per ajudar-nos a fer el Piwik millor!",
"TopLinkTooltip": "Digue'ns que en penses o demana suport Professional.",
"VisitTheForums": "Entra als %s Forums%s"
}
}

View file

@ -0,0 +1,34 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Máte hlášení chyby, nebo námět na vylepšení?",
"HowToCreateTicket": "Prosím, přečtěte si doporučení, jak dobře nahlásit %1$schybu%2$s nebo %3$sžádost o vlastnost%4$s. Potom se zaregistrujte nebo přihlaste do %5$ssystému pro sledování problémů%6$s a vytvořte %7$snový problém%8$s.",
"IWantTo": "Chci:",
"LearnWaysToParticipate": "Naučit způsoby jak %s spolupracovat %s",
"ManuallySendEmailTo": "Prosím pošlete ručně zprávu",
"PluginDescription": "Pošlete tým Piwiku vaši odezvu. Podělte se o své návrhy a nápady a pomozte nám, aby se Piwik stal nejlepší analytickou platformou vůbec.",
"PrivacyClaim": "Piwik respektuje vaše %1$ssoukromí%2$s a dává vám plnou kontrolu nad vašimi daty.",
"RateFeatureLeaveMessageDislike": "Je nám líto, že se vám to nelíbí. Řekněte nám, jak se můžeme zlepšit.",
"RateFeatureLeaveMessageLike": "Jsme rádi, že se vám to líbí. Řekněte nám, co se vám líbí nejvíc, nebo jestli máte nějaký návrh na novou funkci.",
"RateFeatureSendFeedbackInformation": "Piwik platforma nám (týmu Piwiku) pošle zprávu s vaší emailovou adresou, abychom vás v případě otázek mohli kontaktovat.",
"RateFeatureThankYouTitle": "Děkujeme za ohodnocení %s.",
"RateFeatureTitle": "Líbí se vám vlastnost %s? Ohodnoťte ji a zanechte komentář",
"SendFeedback": "Odeslat odezvu",
"ThankYou": "Děkujeme vám, že pomáháte Piwik dělat lepším!",
"TopLinkTooltip": "Řekni co si myslíš, nebo požádej o pomoc profesionála.",
"ViewAnswersToFAQ": "Zobrazit odpovědi na %sčasto kladené otázky%s",
"ViewUserGuides": "Naučte se, jak konfigurovat Piwik a efektivně analyzovat data s našimi %1$suživatelskými příručkami%2$s",
"CommunityHelp": "Komunitní pomoc",
"ProfessionalHelp": "Profesionální pomoc",
"PiwikProIntro": "Piwik Pro poskytuje konzultace s experty pro ty, kteří hostují Piwik na vlastní infrastruktuře.",
"PiwikProOfferIntro": "Naše nabídka obsahuje",
"PiwikProReviewPiwikSetup": "Kontrolu vašeho nastavení Piwik",
"PiwikProOptimizationMaintenance": "Služby optimalizace a údržby Piwiku",
"PiwikProPhoneEmailSupport": "Telefonická a emailová podpora",
"PiwikProTraining": "Uživatelská, technická a vývojářská školení",
"PiwikProPremiumFeatures": "Prémiové funkce",
"PiwikProCustomDevelopment": "Služby vlastního vývoje",
"PiwikProAnalystConsulting": "Služby analytického konzultanta",
"ContactUs": "Kontaktujte nás",
"VisitTheForums": "Navštivte %s forum%s"
}
}

View file

@ -0,0 +1,22 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Har du en fejlrapport eller en anmodning om en funktion?",
"HowToCreateTicket": "Læs anbefalingerne om at skrive en god %1$sfejlrapport%2$s eller %3$sfunktionsanmodning%4$s. Tilmeld eller log ind på %5$svores emne tracker%6$s og opret et %7$snyt emne%8$s.",
"IWantTo": "Jeg ønsker at:",
"LearnWaysToParticipate": "Lær om alle de måder, du kan %s bidrage%s",
"ManuallySendEmailTo": "Send din besked manuelt til",
"PluginDescription": "Send tilbagemelding til Piwik holdet. Del dine ideer og forslag til at gøre Piwik til den bedste analyseplatform i verden!",
"PrivacyClaim": "Piwik respekterer din %1$sprivacy%2$s og giver dig fuld kontrol over dine data.",
"RateFeatureLeaveMessageDislike": "Vi er kede af at høre, at du ikke kan lide det! Fortæl os, hvad vi kan gøre bedre.",
"RateFeatureLeaveMessageLike": "Vi er glad for du kan lide det! Fortæl os hvad du kan lide mest eller hvis du har forslag til en ny funktion.",
"RateFeatureSendFeedbackInformation": "Piwik vil sende Piwik holdet en e-mail (med din e-mail-adresse), så vi kan komme i kontakt med dig, hvis du har nogen spørgsmål.",
"RateFeatureThankYouTitle": "Tak for din bedømmelse '%s'!",
"RateFeatureTitle": "Kan du lide '%s' funktionen? Bedøm og efterlade en kommentar",
"SendFeedback": "Send tilbagemelding",
"ThankYou": "Tak, fordi du hjælper med at gøre Piwik bedre!",
"TopLinkTooltip": "Fortæl os hvad du mener eller anmod om professionel support",
"ViewAnswersToFAQ": "Se svarene på %sOfte stillede spørgsmål%s",
"ViewUserGuides": "Lær at konfigurere Piwik og hvordan man effektivt analyserer data med vores %1$sbrugervejledninger%2$s",
"VisitTheForums": "Besøg %s Forum%s"
}
}

View file

@ -0,0 +1,34 @@
{
"Feedback": {
"DoYouHaveBugReportOrFeatureRequest": "Möchten Sie einen Fehler melden oder haben Sie eine Idee für eine neue Funktion?",
"HowToCreateTicket": "Bitte lesen Sie die Empfehlungen wie man eine gute %1$sFehlermeldung%2$s oder einen %3$sVerbesserungsvorschlag%4$s erstellt. Dann registrieren Sie sich oder loggen Sie sich bei %5$sunserem Fehlermeldesystem%6$s an und erstellen Sie einen %7$sneuen Fall%8$s.",
"IWantTo": "Ich möchte:",
"LearnWaysToParticipate": "Lernen Sie alle Möglichkeiten kennen, wie Sie %s uns unterstützen können%s",
"ManuallySendEmailTo": "Senden Sie Ihre Nachricht manuell an",
"PluginDescription": "Senden Sie Ihr Feedback ans Piwik Team. Teilen Sie uns Ihre Ideen und Vorschläge mit, um Piwik zur besten Analyseplattform der Welt zu machen.",
"PrivacyClaim": "Piwik respektiert Ihre %1$sPrivatsphäre%2$s und gibt Ihnen volle Kontrolle über Ihre Daten.",
"RateFeatureLeaveMessageDislike": "Es tut uns leid zu hören, dass es Ihnen nicht gefällt! Bitte teilen Sie uns mit, wie wir es verbessern können.",
"RateFeatureLeaveMessageLike": "Wir sind froh, dass Sie es mögen! Bitte teilen Sie uns mit, was sie am meisten mögen oder ob Sie eine Idee für eine neue Funktion haben.",
"RateFeatureSendFeedbackInformation": "Ihre Piwik-Plattform wird uns (dem Piwik Team) eine E-Mail (inklusiver Ihrer E-Mail-Adresse) senden, damit wir mit Ihnen in Kontakt treten könne, sollten Sie Fragen haben.",
"RateFeatureThankYouTitle": "Danke für das Bewerten von '%s'!",
"RateFeatureTitle": "Gefällt Ihnen das Feature '%s'? Bitte bewerten Sie es und hinterlassen einen Kommentar!",
"SendFeedback": "Feedback absenden",
"ThankYou": "Danke für Ihre Unterstützung, Piwik zu verbessern!",
"TopLinkTooltip": "Teilen Sie uns Ihre Meinung mit, oder fordern professionelle Unterstützung an.",
"ViewAnswersToFAQ": "Antworten zu %sFrequently Asked Questions%s ansehen",
"ViewUserGuides": "Lernen Sie mithilfe unseres %1$sBenutzerhandbuches%2$s, wie Sie Piwik konfigurieren können und wie Sie effektiv Ihre Daten analysieren.",
"CommunityHelp": "Hilfe aus der Community",
"ProfessionalHelp": "Profesionelle Hilfe",
"PiwikProIntro": "Piwik PRO bietet professionellen Support und Beratung an für Kunden, welche Piwik auf deren eigenen Infrastruktur hosten.",
"PiwikProOfferIntro": "Unser Angebot umfasst",
"PiwikProReviewPiwikSetup": "Eine Überprüfung Ihrer Piwik-Installation",
"PiwikProOptimizationMaintenance": "Piwik-Optimierung & -Wartung",
"PiwikProPhoneEmailSupport": "Telefon und E-Mail-Support",
"PiwikProTraining": "Benutzer-, Technik- und Entwickler-Schulungen",
"PiwikProPremiumFeatures": "Premiumfeatures",
"PiwikProCustomDevelopment": "Individuelle Programmierung",
"PiwikProAnalystConsulting": "Analysenberatung",
"ContactUs": "Kontaktieren Sie uns",
"VisitTheForums": "Besuchen Sie die %s Foren%s"
}
}

Some files were not shown because too many files have changed in this diff Show more