update Piwik to version 2.16 (fixes #91)

This commit is contained in:
oliver 2016-04-10 18:55:57 +02:00
commit d885a4baa9
5833 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
@ -9,12 +9,12 @@
namespace Piwik\Plugins\ImageGraph;
use Exception;
use Piwik\API\Request;
use Piwik\Archive\DataTableFactory;
use Piwik\Common;
use Piwik\Filesystem;
use Piwik\Period;
use Piwik\Piwik;
use Piwik\Plugins\API\API as APIMetadata;
use Piwik\Plugins\ImageGraph\StaticGraph;
use Piwik\SettingsServer;
use Piwik\Translate;
@ -41,7 +41,7 @@ class API extends \Piwik\Plugin\API
const MAX_WIDTH = 2048;
const MAX_HEIGHT = 2048;
static private $DEFAULT_PARAMETERS = array(
private static $DEFAULT_PARAMETERS = array(
StaticGraph::GRAPH_TYPE_BASIC_LINE => array(
self::FILENAME_KEY => 'BasicLine',
self::TRUNCATE_KEY => 6,
@ -74,11 +74,7 @@ class API extends \Piwik\Plugin\API
),
);
static private $DEFAULT_GRAPH_TYPE_OVERRIDE = array(
'UserSettings_getPlugin' => array(
false // override if !$isMultiplePeriod
=> StaticGraph::GRAPH_TYPE_HORIZONTAL_BAR,
),
private static $DEFAULT_GRAPH_TYPE_OVERRIDE = array(
'Referrers_getReferrerType' => array(
false // override if !$isMultiplePeriod
=> StaticGraph::GRAPH_TYPE_HORIZONTAL_BAR,
@ -126,7 +122,8 @@ class API extends \Piwik\Plugin\API
$gridColor = API::DEFAULT_GRID_COLOR,
$idSubtable = false,
$legendAppendMetric = true,
$segment = false
$segment = false,
$idDimension = false
)
{
Piwik::checkUserHasViewAccess($idSite);
@ -155,10 +152,23 @@ class API extends \Piwik\Plugin\API
if (!empty($idGoal)) {
$apiParameters = array('idGoal' => $idGoal);
}
if (!empty($idDimension)) {
$apiParameters = array('idDimension' => $idDimension);
}
// Fetch the metadata for given api-action
$metadata = APIMetadata::getInstance()->getMetadata(
$idSite, $apiModule, $apiAction, $apiParameters, $languageLoaded, $period, $date,
$hideMetricsDoc = false, $showSubtableReports = true);
$parameters = array(
'idSite' => $idSite,
'apiModule' => $apiModule,
'apiAction' => $apiAction,
'apiParameters' => $apiParameters,
'language' => $languageLoaded,
'period' => $period,
'date' => $date,
'hideMetricsDoc' => false,
'showSubtableReports' => true
);
$metadata = Request::processRequest('API.getMetadata', $parameters);
if (!$metadata) {
throw new Exception('Invalid API Module and/or API Action');
}
@ -288,20 +298,22 @@ class API extends \Piwik\Plugin\API
}
}
$processedReport = APIMetadata::getInstance()->getRowEvolution(
$idSite,
$period,
$date,
$apiModule,
$apiAction,
$labels,
$segment,
$plottedMetric,
$languageLoaded,
$idGoal,
$legendAppendMetric,
$labelUseAbsoluteUrl = false
$parameters = array(
'idSite' => $idSite,
'period' => $period,
'date' => $date,
'apiModule' => $apiModule,
'apiAction' => $apiAction,
'label' => $labels,
'segment' => $segment,
'column' => $plottedMetric,
'language' => $languageLoaded,
'idGoal' => $idGoal,
'idDimension' => $idDimension,
'legendAppendMetric' => $legendAppendMetric,
'labelUseAbsoluteUrl' => false
);
$processedReport = Request::processRequest('API.getRowEvolution', $parameters);
//@review this test will need to be updated after evaluating the @review comment in API/API.php
if (!$processedReport) {
@ -345,22 +357,25 @@ class API extends \Piwik\Plugin\API
$ordinateLabels[$plottedMetric] = $processedReport['label'] . ' (' . $metrics[$plottedMetric]['name'] . ')';
}
} else {
$processedReport = APIMetadata::getInstance()->getProcessedReport(
$idSite,
$period,
$date,
$apiModule,
$apiAction,
$segment,
$apiParameters = false,
$idGoal,
$languageLoaded,
$showTimer = true,
$hideMetricsDoc = false,
$idSubtable,
$showRawMetrics = false
$parameters = array(
'idSite' => $idSite,
'period' => $period,
'date' => $date,
'apiModule' => $apiModule,
'apiAction' => $apiAction,
'segment' => $segment,
'apiParameters' => false,
'idGoal' => $idGoal,
'idDimension' => $idDimension,
'language' => $languageLoaded,
'showTimer' => true,
'hideMetricsDoc' => false,
'idSubtable' => $idSubtable,
'showRawMetrics' => false
);
$processedReport = Request::processRequest('API.getProcessedReport', $parameters);
}
// prepare abscissa and ordinate series
$abscissaSeries = array();
$abscissaLogos = array();
@ -420,6 +435,9 @@ class API extends \Piwik\Plugin\API
$rowData = $rows[0]->getColumns(); // associative Array
foreach ($ordinateColumns as $column) {
if(!isset($rowData[$column])) {
continue;
}
$ordinateValue = $rowData[$column];
$parsedOrdinateValue = $this->parseOrdinateValue($ordinateValue);
@ -494,7 +512,10 @@ class API extends \Piwik\Plugin\API
if ($idGoal != '') {
$idGoal = '_' . $idGoal;
}
$fileName = self::$DEFAULT_PARAMETERS[$graphType][self::FILENAME_KEY] . '_' . $apiModule . '_' . $apiAction . $idGoal . ' ' . str_replace(',', '-', $date) . ' ' . $idSite . '.png';
if ($idDimension != '') {
$idDimension = '__' . $idDimension;
}
$fileName = self::$DEFAULT_PARAMETERS[$graphType][self::FILENAME_KEY] . '_' . $apiModule . '_' . $apiAction . $idGoal . $idDimension . ' ' . str_replace(',', '-', $date) . ' ' . $idSite . '.png';
$fileName = str_replace(array(' ', '/'), '_', $fileName);
if (!Filesystem::isValidFilename($fileName)) {

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
@ -16,7 +16,10 @@ use Piwik\View;
class Controller extends \Piwik\Plugin\Controller
{
// Call metadata reports, and draw the default graph for each report.
/**
* @internal For Debugging only
* Call metadata reports and draw the default graph for each report.
*/
public function index()
{
Piwik::checkUserHasSomeAdminAccess();

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,38 +8,32 @@
*/
namespace Piwik\Plugins\ImageGraph;
use Piwik\API\Request;
use Piwik\Common;
use Piwik\Config;
use Piwik\Container\StaticContainer;
use Piwik\Period;
use Piwik\Period\Range;
use Piwik\Scheduler\Scheduler;
use Piwik\Site;
use Piwik\TaskScheduler;
use Piwik\Url;
use Piwik\Period\Factory as PeriodFactory;
class ImageGraph extends \Piwik\Plugin
{
public function getInformation()
{
$suffix = ' Debug: <a href="' . Url::getCurrentQueryStringWithParametersModified(
array('module' => 'ImageGraph', 'action' => 'index')) . '">All images</a>';
$info = parent::getInformation();
$info['description'] .= ' ' . $suffix;
return $info;
}
static private $CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS = array(
private static $CONSTANT_ROW_COUNT_REPORT_EXCEPTIONS = array(
'Referrers_getReferrerType',
);
// row evolution support not yet implemented for these APIs
static private $REPORTS_DISABLED_EVOLUTION_GRAPH = array(
private static $REPORTS_DISABLED_EVOLUTION_GRAPH = array(
'Referrers_getAll',
);
/**
* @see Piwik\Plugin::getListHooksRegistered
* @see Piwik\Plugin::registerEvents
*/
public function getListHooksRegistered()
public function registerEvents()
{
$hooks = array(
'API.getReportMetadata.end' => array('function' => 'getReportMetadata',
@ -87,21 +81,41 @@ class ImageGraph extends \Piwik\Plugin
$piwikSite = new Site($idSite);
if ($periodForSinglePeriodGraph == 'range') {
// for period=range, show the configured sub-periods
$periodForMultiplePeriodGraph = Config::getInstance()->General['graphs_default_period_to_plot_when_period_range'];
$dateForMultiplePeriodGraph = $dateForSinglePeriodGraph;
} else {
$periodForMultiplePeriodGraph = $periodForSinglePeriodGraph;
$dateForMultiplePeriodGraph = Range::getRelativeToEndDate(
$periodForSinglePeriodGraph,
'last' . self::GRAPH_EVOLUTION_LAST_PERIODS,
$dateForSinglePeriodGraph,
$piwikSite
);
} else if ($info['period'] == 'day' || !Config::getInstance()->General['graphs_show_evolution_within_selected_period']) {
// for period=day, always show the last n days
// if graphs_show_evolution_within_selected_period=false, show the last n periods
$periodForMultiplePeriodGraph = $periodForSinglePeriodGraph;
$dateForMultiplePeriodGraph = Range::getRelativeToEndDate(
$periodForSinglePeriodGraph,
'last' . self::GRAPH_EVOLUTION_LAST_PERIODS,
$dateForSinglePeriodGraph,
$piwikSite
);
} else {
// if graphs_show_evolution_within_selected_period=true, show the days withing the period
// (except if the period is day, see above)
$periodForMultiplePeriodGraph = 'day';
$period = PeriodFactory::build($info['period'], $info['date']);
$start = $period->getDateStart()->toString();
$end = $period->getDateEnd()->toString();
$dateForMultiplePeriodGraph = $start . ',' . $end;
}
}
$token_auth = Common::getRequestVar('token_auth', false);
$segment = Request::getRawSegmentFromRequest();
/** @var Scheduler $scheduler */
$scheduler = StaticContainer::getContainer()->get('Piwik\Scheduler\Scheduler');
$isRunningTask = $scheduler->isRunningTask();
// add the idSubtable if it exists
$idSubtable = Common::getRequestVar('idSubtable', false);
$urlPrefix = "index.php?";
foreach ($reports as &$report) {
$reportModule = $report['module'];
@ -130,16 +144,18 @@ class ImageGraph extends \Piwik\Plugin
$parameters['date'] = $dateForSinglePeriodGraph;
}
// add the idSubtable if it exists
$idSubtable = Common::getRequestVar('idSubtable', false);
if ($idSubtable !== false) {
$parameters['idSubtable'] = $idSubtable;
}
if (!empty($_GET['_restrictSitesToLogin']) && TaskScheduler::isTaskBeingExecuted()) {
if (!empty($_GET['_restrictSitesToLogin']) && $isRunningTask) {
$parameters['_restrictSitesToLogin'] = $_GET['_restrictSitesToLogin'];
}
if (!empty($segment)) {
$parameters['segment'] = $segment;
}
$report['imageGraphUrl'] = $urlPrefix . Url::getQueryStringFromParameters($parameters);
// thanks to API.getRowEvolution, reports with dimensions can now be plotted using an evolution graph

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
@ -9,23 +9,22 @@
namespace Piwik\Plugins\ImageGraph;
use Exception;
use pData;
use pImage;
use Piwik\Loader;
use Piwik\Container\StaticContainer;
use Piwik\NumberFormatter;
use Piwik\Piwik;
use Piwik\SettingsPiwik;
use Piwik\BaseFactory;
require_once PIWIK_INCLUDE_PATH . "/libs/pChart2.1.3/class/pDraw.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart2.1.3/class/pImage.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart2.1.3/class/pData.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart/class/pDraw.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart/class/pImage.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart/class/pData.class.php";
/**
* The StaticGraph abstract class is used as a base class for different types of static graphs.
*
*/
abstract class StaticGraph
abstract class StaticGraph extends BaseFactory
{
const GRAPH_TYPE_BASIC_LINE = "evolution";
const GRAPH_TYPE_VERTICAL_BAR = "verticalBar";
@ -33,7 +32,7 @@ abstract class StaticGraph
const GRAPH_TYPE_3D_PIE = "3dPie";
const GRAPH_TYPE_BASIC_PIE = "pie";
static private $availableStaticGraphTypes = array(
private static $availableStaticGraphTypes = array(
self::GRAPH_TYPE_BASIC_LINE => 'Evolution',
self::GRAPH_TYPE_VERTICAL_BAR => 'VerticalBar',
self::GRAPH_TYPE_HORIZONTAL_BAR => 'HorizontalBar',
@ -74,29 +73,19 @@ abstract class StaticGraph
abstract public function renderGraph();
/**
* Return the StaticGraph according to the static graph type $graphType
*
* @throws Exception If the static graph type is unknown
* @param string $graphType
* @return \Piwik\Plugins\ImageGraph\StaticGraph
*/
public static function factory($graphType)
protected static function getClassNameFromClassId($graphType)
{
if (isset(self::$availableStaticGraphTypes[$graphType])) {
$className = self::$availableStaticGraphTypes[$graphType];
$className = __NAMESPACE__ . "\\StaticGraph\\" . $className;
return $className;
}
$className = self::$availableStaticGraphTypes[$graphType];
$className = __NAMESPACE__ . "\\StaticGraph\\" . $className;
Loader::loadClass($className);
return new $className;
} else {
throw new Exception(
Piwik::translate(
'General_ExceptionInvalidStaticGraphType',
array($graphType, implode(', ', self::getAvailableStaticGraphTypes()))
)
);
}
protected static function getInvalidClassIdExceptionMessage($graphType)
{
return Piwik::translate(
'General_ExceptionInvalidStaticGraphType',
array($graphType, implode(', ', self::getAvailableStaticGraphTypes()))
);
}
public static function getAvailableStaticGraphTypes()
@ -240,8 +229,7 @@ abstract class StaticGraph
*/
protected static function getOutputPath($filename)
{
$outputFilename = PIWIK_USER_PATH . '/tmp/assets/' . $filename;
$outputFilename = SettingsPiwik::rewriteTmpPathWithHostname($outputFilename);
$outputFilename = StaticContainer::get('path.tmp') . '/assets/' . $filename;
@chmod($outputFilename, 0600);
@unlink($outputFilename);
@ -261,6 +249,8 @@ abstract class StaticGraph
}
}
$this->pData->setAxisDisplay(0, AXIS_FORMAT_CUSTOM, '\\Piwik\\Plugins\\ImageGraph\\formatYAxis');
$this->pData->addPoints($this->abscissaSeries, self::ABSCISSA_SERIE_NAME);
$this->pData->setAbscissa(self::ABSCISSA_SERIE_NAME);
}
@ -312,7 +302,7 @@ abstract class StaticGraph
$maxWidth = 0;
$maxHeight = 0;
foreach ($values as $column => $data) {
foreach ($values as $data) {
foreach ($data as $value) {
list($valueWidth, $valueHeight) = $this->getTextWidthHeight($value);
@ -353,3 +343,15 @@ abstract class StaticGraph
}
}
}
/**
* Global format method
*
* required to format y axis values using pcharts internal format callbacks
* @param $value
* @return mixed
*/
function formatYAxis($value)
{
return NumberFormatter::getInstance()->format($value);
}

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,7 +8,6 @@
*/
namespace Piwik\Plugins\ImageGraph\StaticGraph;
/**
*
*/

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

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
@ -416,14 +416,14 @@ abstract class GridGraph extends StaticGraph
// can not currently be used because pChart's label design is not flexible enough
// e.g: it is not possible to remove the box border & the square icon
// it would require modifying pChart code base which we try to avoid
// see http://dev.piwik.org/trac/ticket/3396
// see https://github.com/piwik/piwik/issues/3396
// protected function displayMinMaxValues()
// {
// if($displayMinMax)
// if ($displayMinMax)
// {
// // when plotting multiple metrics, display min & max on both series
// // to fix: in vertical bars, labels are hidden when multiple metrics are plotted, hence the restriction on count($this->ordinateSeries) == 1
// if($this->multipleMetrics && count($this->ordinateSeries) == 1)
// if ($this->multipleMetrics && count($this->ordinateSeries) == 1)
// {
// $colorIndex = 1;
// foreach($this->ordinateSeries as $column => $data)
@ -467,13 +467,13 @@ abstract class GridGraph extends StaticGraph
// $maxValueIndex = 0;
// foreach($data as $index => $value)
// {
// if($value > $maxValue)
// if ($value > $maxValue)
// {
// $maxValue = $value;
// $maxValueIndex = $index;
// }
//
// if($value < $minValue)
// if ($value < $minValue)
// {
// $minValue = $value;
// $minValueIndex = $index;

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
@ -9,7 +9,6 @@
namespace Piwik\Plugins\ImageGraph\StaticGraph;
use Piwik\Piwik;
/**
*
*/

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,7 +8,6 @@
*/
namespace Piwik\Plugins\ImageGraph\StaticGraph;
/**
*
*/

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

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
@ -12,7 +12,7 @@ namespace Piwik\Plugins\ImageGraph\StaticGraph;
use Piwik\Plugins\ImageGraph\StaticGraph;
use pPie;
require_once PIWIK_INCLUDE_PATH . "/libs/pChart2.1.3/class/pPie.class.php";
require_once PIWIK_INCLUDE_PATH . "/libs/pChart/class/pPie.class.php";
/**
*

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,7 +8,6 @@
*/
namespace Piwik\Plugins\ImageGraph\StaticGraph;
/**
*
*/

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Колоната '%1$s' не е намерена в този доклад. Опитайте с %2$s"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "La columan '%1$s' no s'ha trobat en aquest informe. Proveu algun dels següents: %2$s"
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Sloupec %1$s nebyl v tomto hlášení nalezen. Zkuste některé z %2$s",
"PluginDescription": "Generujte pěkné statické PNG grafy z jakéhokoliv hlášení."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolonnen '%1$s' blev ikke fundet i denne rapport. Prøv en af %2$s",
"PluginDescription": "Generer flotte statiske PNG Graph billeder til alle datarapporter."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Die Spalte '%1$s' wurde in diesem Bericht nicht gefunden. Probieren Sie es mit einer hiervon: %2$s",
"PluginDescription": "Generieren Sie schöne statische PNG Graph Bilder für Ihre Datenberichte."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Η στήλη '%1$s' δεν βρέθηκε στην αναφορά. Δοκιμάστε οποιαδήποτε από τις %2$s",
"PluginDescription": "Δημιουργήστε όμορφες στατικές εικόνες γραφικών PNG για κάθε μία από τις αναφορές σας."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "The column '%1$s' was not found in this report. Try any of %2$s",
"PluginDescription": "Generate beautiful static PNG Graph images for any of your data report."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "La columna '%1$s' no se encontró en este informe. Intente con alguno de %2$s",
"PluginDescription": "Genera bellas imágenes estáticas de gráficos PNG para cualquiera de sus informes de datos."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "ستون '%1$s' در این گزارش پیدا نشد. تلاش کنید برای %2$s"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolumnia '%1$s' ei löydetty tässä raportissa. Kokeile mitä tahansa %2$s"
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "La colonne '%1$s' n'a pas été trouvée dans ce rapport. Essayez parmi %2$s",
"PluginDescription": "Générez de magnifiques images statiques PNG de graphiques de vos données de n'importe quelle donnée de votre rapport."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "स्तंभ '%1$s' इस रिपोर्ट में नहीं मिला था. किसी %2$sका प्रयास करें",
"PluginDescription": "अपने डेटा रिपोर्ट से किसी के लिए सुंदर स्थिर PNG ग्राफ छवियों को उत्पन्न।"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolom '%1$s' tidak ditemukan dalam laporan ini. Coba salah satu dari %2$s"
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "La colonna '%1$s' non è stato trovata in questo report. Prova una di queste %2$s",
"PluginDescription": "Genera delle belle immagini statiche PNG di grafici per ognuno dei tuoi report dati."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "列 '%1$s' は、このレポートで見つかりませんでした。%2$s のいずれかをお試しください。",
"PluginDescription": "データ報告のいずれかのための美しい静的なPNGグラフの画像を生成します。"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Piwik 보고서의 아름다운 정적 PNG 그래프 이미지를 생성합니다."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Ģenerējiet skaistus, statiskus PNG formāta grafikus jebkurai Piwik atskaitei."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolonnen «%1$s» ble ikke funnet i denne rapporten. Prøv %2$s",
"PluginDescription": "Generer statiske PNG-grafebilder for alle dine datarapporter."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "De kolom '%1$s' is niet gevonden in dit rapport. Probeer één van %2$s",
"PluginDescription": "Genereer mooie statische PNG Grafiek afbeeldingen voor elk van uw data rapporten."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Opprett vakre statiske grafar som PNG-bilete for ein Piwik-rapport."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "A coluna '%1$s' não foi encontrada neste relatório. Tente qualquer %2$s",
"PluginDescription": "Gera belas imagens estáticas PNG Grapf para os seus relatórios de dados."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Gera uma imagem de gráfico PNG estática para qualquer relatório Piwik"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Coloana '%1$s' nu a fost gasita in acest raport. Incearca oricare dintre %2$s"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Колонка %1$s не была найдена в этом отчете. Попробуйте что-нибудь из %2$s"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Ustvarite prelepe, statične, PNG grafe za vsa Piwik poročila."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"PluginDescription": "Prodhoni për çfarëdo raporti Piwik figura të mrekullueshme PNG statike Grafikësh."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolona '%1$s' nije nađena u ovom izveštaju. Pokušajte bilo koju od %2$s",
"PluginDescription": "Kreirajte predivne statične PNG grafikone za bilo koji od vaših izveštaja."
}
}

View file

@ -0,0 +1,6 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Kolumn '%1$s' var inte hittad i den här rapporten. Pröva någon av %2$s",
"PluginDescription": "Generera fina statiska PNG-grafer för dina data rapporter."
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "Cột này '%1$s' không thấy trong báo cáo này. Thử bất kỳ của %2$s"
}
}

View file

@ -0,0 +1,5 @@
{
"ImageGraph": {
"ColumnOrdinateMissing": "报表中没有 '%1$s' 栏,请试试 %2$s"
}
}

View file

@ -1,15 +1,15 @@
{% extends 'dashboard.twig' %}
{% block topcontrols %}
{% include '@CoreHome/_periodSelect.twig' %}
{% endblock %}
{% block content %}
{% set showSitesSelection=true %}
<div>
<h2>{{ 'ImageGraph_ImageGraph'|translate }} ::: {{ siteName }}</h2>
<div class="top_controls">
{% include '@CoreHome/_periodSelect.twig' %}
</div>
<div class="entityContainer" style="width:100%;">
<div class="entityAddContainer">
<table class="dataTable entityTable">