├── VERSION ├── libs ├── images │ ├── flags │ │ ├── _flags.txt │ │ ├── bg.png │ │ ├── cz.png │ │ ├── de.png │ │ ├── en.png │ │ ├── es.png │ │ ├── fr.png │ │ ├── hu.png │ │ ├── id.png │ │ ├── it.png │ │ ├── ja.png │ │ ├── nl.png │ │ ├── pl.png │ │ ├── pt.png │ │ ├── ro.png │ │ ├── ru.png │ │ ├── sr.png │ │ ├── tr.png │ │ ├── uk.png │ │ └── zh.png │ ├── ko.png │ ├── logo.png │ ├── next.png │ ├── ok.png │ ├── save.png │ ├── layout.png │ ├── reload.png │ ├── arrow-up.png │ ├── logo.big.png │ ├── logo170.png │ ├── previous.png │ ├── warning.png │ └── arrow-down.png ├── version.php ├── clickempty.html ├── examples │ ├── coords.txt │ ├── fromfile.php │ └── fromdatabase.php ├── footer.php ├── scripts │ ├── compressJs.php │ ├── upgrade-1.1.php │ └── parseClickLogs.pl ├── header.php ├── languages │ ├── __readme.txt │ ├── zh.php │ ├── ja.php │ ├── en.php │ ├── tr.php │ ├── bg.php │ └── sr.php ├── login.php ├── latest.php ├── javascript.php ├── check.php ├── styles │ ├── piwik.css │ └── clickheat.css ├── logo.png.php ├── debug-piwik-1.html ├── debug-piwik-2.html ├── classes │ ├── HeatmapFromFile.class.php │ └── HeatmapFromDatabase.class.php ├── layout.php ├── cleaner.php ├── logo170.png.php ├── generate.php ├── js │ └── clickheat.js ├── logo.big.png.php └── click.php ├── screenshots └── Your_heat_map.png ├── .gitignore ├── README ├── LISEZMOI ├── INSTALL ├── clickheat_config.php ├── Menu.php ├── clickheat.php ├── ClickHeat.php ├── plugin.json ├── dot_htaccess ├── templates ├── view.tpl └── view.twig ├── README.md └── lang ├── zn.json ├── ja.json ├── en.json ├── tr.json ├── bg.json ├── sr.json └── cz.json /VERSION: -------------------------------------------------------------------------------- 1 | 0.1.9 -------------------------------------------------------------------------------- /libs/images/flags/_flags.txt: -------------------------------------------------------------------------------- 1 | Flags from PhpMyVisites/Piwik -------------------------------------------------------------------------------- /libs/version.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /libs/images/ko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/ko.png -------------------------------------------------------------------------------- /libs/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/logo.png -------------------------------------------------------------------------------- /libs/images/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/next.png -------------------------------------------------------------------------------- /libs/images/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/ok.png -------------------------------------------------------------------------------- /libs/images/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/save.png -------------------------------------------------------------------------------- /libs/images/layout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/layout.png -------------------------------------------------------------------------------- /libs/images/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/reload.png -------------------------------------------------------------------------------- /libs/images/arrow-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/arrow-up.png -------------------------------------------------------------------------------- /libs/images/flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/bg.png -------------------------------------------------------------------------------- /libs/images/flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/cz.png -------------------------------------------------------------------------------- /libs/images/flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/de.png -------------------------------------------------------------------------------- /libs/images/flags/en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/en.png -------------------------------------------------------------------------------- /libs/images/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/es.png -------------------------------------------------------------------------------- /libs/images/flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/fr.png -------------------------------------------------------------------------------- /libs/images/flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/hu.png -------------------------------------------------------------------------------- /libs/images/flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/id.png -------------------------------------------------------------------------------- /libs/images/flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/it.png -------------------------------------------------------------------------------- /libs/images/flags/ja.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/ja.png -------------------------------------------------------------------------------- /libs/images/flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/nl.png -------------------------------------------------------------------------------- /libs/images/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/pl.png -------------------------------------------------------------------------------- /libs/images/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/pt.png -------------------------------------------------------------------------------- /libs/images/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/ro.png -------------------------------------------------------------------------------- /libs/images/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/ru.png -------------------------------------------------------------------------------- /libs/images/flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/sr.png -------------------------------------------------------------------------------- /libs/images/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/tr.png -------------------------------------------------------------------------------- /libs/images/flags/uk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/uk.png -------------------------------------------------------------------------------- /libs/images/flags/zh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/flags/zh.png -------------------------------------------------------------------------------- /libs/images/logo.big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/logo.big.png -------------------------------------------------------------------------------- /libs/images/logo170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/logo170.png -------------------------------------------------------------------------------- /libs/images/previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/previous.png -------------------------------------------------------------------------------- /libs/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/warning.png -------------------------------------------------------------------------------- /libs/images/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/libs/images/arrow-down.png -------------------------------------------------------------------------------- /screenshots/Your_heat_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piwikjapan/plugin-clickheat/HEAD/screenshots/Your_heat_map.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template 3 | 4 | # IntelliJ project files 5 | .idea 6 | *.iml 7 | out 8 | gen 9 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Please read instructions on http://www.dugwood.com/clickheat/ 2 | 3 | This software is GPL Open Source. More info on rights linked to this software in the LICENSE file or on http://www.opensource.org/licenses/gpl-license.php 4 | -------------------------------------------------------------------------------- /libs/examples/coords.txt: -------------------------------------------------------------------------------- 1 | 10x10 2 | 20x20 3 | 30x30 4 | 40x40 5 | 50x50 6 | 60x60 7 | 70x70 8 | 80x80 9 | 90x90 10 | 100x100 11 | 110x110 12 | 120x120 13 | 130x130 14 | 140x140 15 | 150x150 16 | 160x160 17 | 170x170 18 | 180x180 19 | 190x190 -------------------------------------------------------------------------------- /LISEZMOI: -------------------------------------------------------------------------------- 1 | Merci de lire les instructions sur http://www.dugwood.com/clickheat/index.html 2 | 3 | Ce logiciel est GPL Open Source. Plus d'informations sur les droits liés à ce logiciel dans le fichier LICENSE (en anglais) ou sur http://www.opensource.org/licenses/gpl-license.php (en anglais aussi) 4 | -------------------------------------------------------------------------------- /libs/footer.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Install it via Piwik Marketplace. 2 | 3 | This plugin installer will make directories: 4 | 5 | yourpiwik/tmp/cache/clickheat/cache 6 | yourpiwik/tmp/cache/clickheat/logs. 7 | 8 | This plugin uses a different tracker. Please click on the link "JavaScript" and put the special Javascript codes into your website. 9 | -------------------------------------------------------------------------------- /libs/scripts/compressJs.php: -------------------------------------------------------------------------------- 1 | #!/usr/bin/php5-cgi -q 2 | 18 | -------------------------------------------------------------------------------- /clickheat_config.php: -------------------------------------------------------------------------------- 1 | PIWIK_INCLUDE_PATH.'/tmp/cache/clickheat/logs/', 3 | 'cachePath' => PIWIK_INCLUDE_PATH.'/tmp/cache/clickheat/cache/', 4 | 'referers' => false, 5 | 'groups' => false, 6 | 'filesize' => 0, 7 | 'adminLogin' => '', 8 | 'adminPass' => '', 9 | 'viewerLogin' => '', 10 | 'viewerPass' => '', 11 | 'memory' => 50, 12 | 'step' => 5, 13 | 'dot' => 19, 14 | 'flush' => 40, 15 | 'start' => 'm', 16 | 'palette' => false, 17 | 'heatmap' => true, 18 | 'hideIframes' => true, 19 | 'hideFlashes' => true, 20 | 'yesterday' => false, 21 | 'alpha' => 80, 22 | 'version' => '0.1.9', 23 | ); -------------------------------------------------------------------------------- /Menu.php: -------------------------------------------------------------------------------- 1 | addVisitorsItem('ClickHeat', array('module' => 'ClickHeat', 'action' => 'view'), 1); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /libs/header.php: -------------------------------------------------------------------------------- 1 | 14 | 15 | 16 | 17 | ClickHeat 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /clickheat.php: -------------------------------------------------------------------------------- 1 | read()) !== false) 12 | { 13 | if ($d === '.' || $d === '..' || !is_dir($dir->path.$d)) 14 | { 15 | continue; 16 | } 17 | $subdir = dir($clickheatConf['logPath'].$d.'/'); 18 | while (($f = $subdir->read()) !== false) 19 | { 20 | if ($f === '.' || $f === '..' || substr($f, 0, 2) !== '%%' || substr($f, -2) !== '%%') 21 | { 22 | continue; 23 | } 24 | if (substr($f, -5) === 'png%%' || substr($f, -6) === 'html%%') 25 | { 26 | if (@unlink($subdir->path.$f)) 27 | { 28 | $updates++; 29 | } 30 | continue; 31 | } 32 | if (@rename($subdir->path.$f, $subdir->path.trim($f, '%'))) 33 | { 34 | $updates++; 35 | } 36 | } 37 | } 38 | echo $updates.' files renamed/purged'; 39 | ?> -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ClickHeat", 3 | "homepage": "http://piwikjapan.org", 4 | "version": "0.1.9", 5 | "description": "ClickHeat is a visual heatmap of clicks on a HTML page. This plugin based on Dugwood's ClickHeat version 1.14. Plugin not consider IIS. Sorry.", 6 | "theme": false, 7 | "keywords": ["clickheat", "heatmap", "dugwood", "piwikjapan", "YAMAMOTO Takashi"], 8 | "require": { 9 | "piwik": ">=2.11.0" 10 | }, 11 | "license": "GPLv3 or later", 12 | "authors": [ 13 | { 14 | "name": "Dugwood", 15 | "email": "", 16 | "homepage": "http://www.dugwood.com/clickheat/index.html" 17 | }, 18 | { 19 | "name": "YAMAMOTO Takashi (PiwikJapan)", 20 | "email": "yamachan@piwikjapan.org", 21 | "homepage": "http://www.piwikjapan.org/" 22 | } 23 | ], 24 | "support": { 25 | "email": "yamachan@piwikjapan.org", 26 | "irc": "@PiwikJapan" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /libs/languages/__readme.txt: -------------------------------------------------------------------------------- 1 | *** English *** 2 | Please, before making your own translation contact us. 3 | Your help is great for us, but the worst case is when two people translate the same file at the same time (even if we take best of both files). 4 | So please contact us before you start, this could avoid you losing time helping us. 5 | 6 | Identifiers are not country-based but language-based, meaning that even if Japan code is JP (internet domains are .jp for instance), the good value to choose is JA, as the browser send JA as HTTP_ACCEPT_LANGUAGE (see http://www.webmasterworld.com/forum24/320.htm) 7 | 8 | 9 | *** Français *** 10 | Avant de vous lancer dans une traduction merci de nous prévenir. 11 | Votre aide est précieuse pour nous, mais le pire cas qui peut arriver est que deux personnes traduisent ensemble le même fichier (même si on prend le meilleur de chaque). 12 | Donc merci de nous prévenir avant de commencer, cela pourra vous éviter de perdre du temps en voulant nous aider. 13 | 14 | Les identifiants ne sont pas par pays mais par langue, ce qui veut dire que même si le code du Japon est JP (domaines internet en .jp par exemple), la bonne valeur à sélectionner est JA, puisque le navigateur envoie JA comme HTTP_ACCEPT_LANGUAGE (voir http://www.webmasterworld.com/forum24/320.htm) -------------------------------------------------------------------------------- /dot_htaccess: -------------------------------------------------------------------------------- 1 | # First, deny access to all files in this directory 2 | 3 | 4 | 5 | Order Deny,Allow 6 | Deny from All 7 | 8 | = 2.4> 9 | Require all denied 10 | 11 | 12 | 13 | 14 | Order Deny,Allow 15 | Deny from All 16 | 17 | 18 | Require all denied 19 | 20 | 21 | 22 | # Serve HTML files as text/html mime type - Note: requires mod_mime apache module! 23 | 24 | AddHandler text/html .html 25 | AddHandler text/html .htm 26 | 27 | 28 | # Allow to serve static files which are safe 29 | 30 | 31 | 32 | Order Allow,Deny 33 | Allow from All 34 | 35 | = 2.4> 36 | Require all granted 37 | 38 | 39 | 40 | 41 | Order Allow,Deny 42 | Allow from All 43 | 44 | 45 | Require all granted 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /libs/login.php: -------------------------------------------------------------------------------- 1 | 14 |
ClickHeat
15 | ', $lang, ' '; 19 | } 20 | ?>
21 |
22 |

23 |
24 |
25 | 26 | 27 | 28 | 32 |
29 | 30 |
', LANG_LOGIN_ERROR, ''; ?> 31 |
33 |
34 |
-------------------------------------------------------------------------------- /libs/latest.php: -------------------------------------------------------------------------------- 1 | 14 | Close 16 |

17 | - ClickHeat'; 23 | } 24 | else 25 | { 26 | fputs($f, "GET /dugwood/clickheat/master/VERSION HTTP/1.1\r\nHost: raw.github.com\r\n"); 27 | fputs($f, "Connection: close\r\n\r\n"); 28 | while (!feof($f) && trim(fgets($f)) !== '') 29 | { 30 | 31 | } 32 | $latest = trim(fgets($f)); 33 | fclose($f); 34 | if (CLICKHEAT_VERSION === $latest) 35 | { 36 | echo sprintf(LANG_LATEST_OK, $latest); 37 | } 38 | else 39 | { 40 | echo sprintf(LANG_LATEST_NO, CLICKHEAT_VERSION, $latest), ' ClickHeat'; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /libs/examples/fromfile.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | ClickHeat | Examples 12 | 13 | 14 | addFile('./coords.txt'); 23 | /** 24 | * Le format du fichier n'est pas "X,Y", on change donc l'expression régulière (plus d'infos ici : http://fr.php.net/manual/en/reference.pcre.pattern.syntax.php) 25 | * File format isn't "X,Y", so we have to change regular expression (more information here : http://us.php.net/manual/en/reference.pcre.pattern.syntax.php) 26 | * 27 | * 1234,1234 => /^(\d+),(\d+)$/m 28 | * 1234x1234 => /^(\d+)x(\d+)$/m 29 | * 1234 1234 => /^(\d+) (\d+)$/m 30 | * 1234(tab)1234 => /^(\d+)\t(\d+)$/m 31 | * 1234,1234,(whatever/n'importe quoi) => /^(\d+),(\d+),.*$/m 32 | **/ 33 | $heatmap->regular = '/^(\d+)x(\d+)$/m'; 34 | /** Fichiers temporaires / Temporary files */ 35 | $heatmap->cache = '.'; 36 | /** Fichiers générés / Generated files */ 37 | $heatmap->path = '.'; 38 | /** Fichier final / Final file */ 39 | $heatmap->file = 'resultfromfile-%d.png'; 40 | /** 41 | * On force la hauteur finale (attention à la consommation mémoire dans ce cas !) 42 | * Forcing final height (take care of the memory consumption in such case!) 43 | **/ 44 | $images = $heatmap->generate(200, 100); 45 | echo 'Résultats/Results: '; 46 | if ($images === false) 47 | { 48 | echo 'error: '.$heatmap->error; 49 | } 50 | else 51 | { 52 | echo '
';
53 | 	print_r($images);
54 | 	echo '
'; 55 | 56 | echo '

'; 57 | for ($i = 0; $i < $images['count']; $i++) 58 | { 59 | echo ' Image ', $i, '
'; 60 | } 61 | echo '

'; 62 | } 63 | ?> 64 | 65 | -------------------------------------------------------------------------------- /libs/javascript.php: -------------------------------------------------------------------------------- 1 | 14 | Close 16 |

17 |
18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 |
23 | ()
24 |
25 |
ClickHeat : track clicks
30 |
31 |
32 |
33 | Warning 34 |
-------------------------------------------------------------------------------- /libs/examples/fromdatabase.php: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | 22 | ClickHeat | Examples 23 | 24 | 25 | query = 'SELECT CLICK_X, CLICK_Y FROM CLICKS WHERE CLICK_Y BETWEEN %d AND %d'; 37 | $heatmap->maxQuery = 'SELECT MAX(CLICK_Y) FROM CLICKS'; 38 | $heatmap->database = 'test'; 39 | $heatmap->user = 'test'; 40 | $heatmap->password = 'test'; 41 | /** Fichiers temporaires / Temporary files */ 42 | $heatmap->cache = '.'; 43 | /** Fichiers générés / Generated files */ 44 | $heatmap->path = '.'; 45 | /** Fichier final / Final file */ 46 | $heatmap->file = 'resultfromdb-%d.png'; 47 | /** 48 | * On force la hauteur finale (attention à la consommation mémoire dans ce cas !) 49 | * Forcing final height (take care of the memory consumption in such case!) 50 | **/ 51 | $images = $heatmap->generate(200, 100); 52 | echo 'Résultats/Results: '; 53 | if ($images === false) 54 | { 55 | echo 'error: '.$heatmap->error; 56 | } 57 | else 58 | { 59 | echo '
';
60 | 	print_r($images);
61 | 	echo '
'; 62 | 63 | echo '

'; 64 | for ($i = 0; $i < $images['count']; $i++) 65 | { 66 | echo ' Image ', $i, '
'; 67 | } 68 | echo '

'; 69 | } 70 | ?> 71 | 72 | -------------------------------------------------------------------------------- /libs/check.php: -------------------------------------------------------------------------------- 1 | 16 | 17 | ', $lang, ' '; 21 | } 22 | ?> 23 |
24 |

25 |

26 | 27 | 44 | 66 | 77 |

(/)
28 | ', LANG_CHECK_NOT_WRITABLE; 35 | } 36 | else 37 | { 38 | fputs($f, 'delete this file'); 39 | fclose($f); 40 | unlink(dirname(CLICKHEAT_CONFIG).'/temp.tmp'); 41 | echo 'OK '; 42 | } 43 | ?>
45 | ', LANG_CHECK_GD_IMG; 50 | } 51 | elseif (function_exists('imagecolorallocatealpha') === false) 52 | { 53 | $checks = false; 54 | echo 'KO', LANG_CHECK_GD_ALPHA; 55 | } 56 | elseif (function_exists('imagepng') === false) 57 | { 58 | $checks = false; 59 | echo 'KO', LANG_CHECK_GD_PNG; 60 | } 61 | else 62 | { 63 | echo 'OK '; 64 | } 65 | ?>
 

67 | Next'; 75 | } 76 | ?>
78 |
-------------------------------------------------------------------------------- /templates/view.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
{$clickheat_group} LayoutRefresh{$clickheat_browser}{$clickheat_menu}
{$clickheat_heatmap}{$clickheat_screen}
20 |
21 |
22 |
23 |
24 |
25 |
26 |

27 |
28 | -------------------------------------------------------------------------------- /libs/styles/piwik.css: -------------------------------------------------------------------------------- 1 | #content { 2 | margin:0 3 | } 4 | #main { 5 | margin:0; 6 | } 7 | h1 { 8 | font-size:1.1em; 9 | text-align:center; 10 | margin:5px; 11 | color:#55d; 12 | } 13 | th { 14 | text-align:left; 15 | vertical-align:top; 16 | } 17 | input { 18 | border:1px solid #55b; 19 | font-size:12px; 20 | } 21 | select { 22 | border:1px solid #55b; 23 | font-size:12px; 24 | } 25 | form { 26 | margin:0px; 27 | } 28 | img { 29 | border:0; 30 | padding:0; 31 | margin:0; 32 | } 33 | .float-right { 34 | padding:10px; 35 | float:right; 36 | text-align:right; 37 | } 38 | #alphaSelector { 39 | position:relative; 40 | bottom:1px; 41 | } 42 | #formHeatmap { 43 | margin:1px; 44 | } 45 | #pngDiv { 46 | position:absolute; 47 | text-align:center; 48 | width:100%; 49 | line-height:0em; 50 | margin:0; 51 | padding:0; 52 | } 53 | #overflowDiv { 54 | position:absolute; 55 | margin:2px auto 0; 56 | width:100%; 57 | overflow-y:auto; 58 | } 59 | #overflowDiv p { 60 | text-align:center; 61 | padding:0; 62 | margin:0; 63 | } 64 | #webPageFrame { 65 | z-index:1; 66 | } 67 | #cleaner { 68 | color:#fff; 69 | background-color:#55b; 70 | } 71 | #layoutDiv { 72 | font-size:0.8em; 73 | text-align:left; 74 | padding:2px; 75 | margin:0 5px; 76 | border:1px dashed #446; 77 | background-color:#ddf; 78 | display:none; 79 | } 80 | .clickheat-calendar-on { 81 | background-color:#bbf; 82 | } 83 | span.layout-left-fixed, span.layout-left-liquid, span.layout-left-empty { 84 | border:1px solid #888; 85 | padding:1px; 86 | line-height:1.5em; 87 | } 88 | div.layout-left-fixed, div.layout-left-liquid, div.layout-left-empty { 89 | width:70px; 90 | border:1px solid #888; 91 | } 92 | .layout-left-fixed, .layout-center-fixed, .layout-right-fixed { 93 | background-color:#66a; 94 | } 95 | .layout-left-liquid, .layout-center-liquid, .layout-right-liquid { 96 | background-color:#aaf; 97 | } 98 | .layout-left-empty, .layout-right-empty { 99 | background-color:#fff; 100 | } 101 | .layout-center-fixed, .layout-center-liquid { 102 | width:55px; 103 | margin-left:15px; 104 | } 105 | .layout-right-fixed, .layout-right-liquid, .layout-right-empty { 106 | width:15px; 107 | height:70px; 108 | margin-left:40px; 109 | } 110 | #clickheat-js { 111 | border:1px solid #66a; 112 | background-color:#fff; 113 | padding:5px; 114 | margin:5px; 115 | } 116 | #clickheat-logo { 117 | position:absolute; 118 | margin-left:520px; 119 | margin-top:35px; 120 | text-align:center; 121 | } 122 | #clickheat-logo a { 123 | text-decoration:underline; 124 | } 125 | #divPanel { 126 | margin:0; 127 | padding-left:5px; 128 | border-bottom:1px solid #66a; 129 | background-color:#eef; 130 | cursor:pointer; 131 | font-size:0.8em; 132 | color:#66a; 133 | text-align:left; 134 | } 135 | .error { 136 | border:1px solid #faa; 137 | background-color:#fee; 138 | padding:1px; 139 | color:#c00; 140 | } 141 | .error a { 142 | color:#c00; 143 | } 144 | -------------------------------------------------------------------------------- /templates/view.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
{{ 'ClickHeat_LANG_GROUP' | translate }} LayoutRefresh{{ 'ClickHeat_LANG_BROWSER' | translate }}{{ clickheat_menu | raw }}
{{ 'ClickHeat_LANG_HEATMAP' | translate }}{{ 'ClickHeat_LANG_SCREENSIZE' | translate }}
20 |
21 |
22 |
23 |
24 |
25 |
26 |

27 |
28 | 57 | -------------------------------------------------------------------------------- /libs/scripts/parseClickLogs.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | ### 3 | ## ClickHeat : Apache log parser 4 | ## 5 | ## Developpement effectue pour/developed for WAT (www.wat.tv) 6 | ## WAT - Partagez votre univers (vidéos, musique, photos) entre amis 7 | ## WAT - Share your videos, music and photos with your friends 8 | ## Si vous appreciez ce script, utilisez le site WAT ! 9 | ## If you like this script, use WAT ! 10 | ## 11 | ## Plus d'informations : http://www.dugwood.fr/clickheat/performance.html 12 | ## More information: http://www.dugwood.com/clickheat/performance.html 13 | ## 14 | ## @author Vincent Audino pour WAT - www.wat.tv 15 | ## @since 03/28/2007 16 | ## @update 31/07/2007 - Yvan Taviaud : correction du paramètre «p=» qui devient «g=» 17 | ### 18 | 19 | 20 | use Date::Manip; 21 | use strict; 22 | 23 | my $date; 24 | my $page; 25 | my $x; 26 | my $y; 27 | my $w; 28 | my $c; 29 | my $browser; 30 | my $random; 31 | my $referer; 32 | my %fdcache; 33 | my $maxcached = 10; 34 | my $currentfd; 35 | 36 | 37 | if ($#ARGV < 1) 38 | { 39 | die "usage: ./parseClickLogs.pl apache_logs_file dest_path [domain_ignored]\n"; 40 | } 41 | 42 | my $srcFile = $ARGV[0]; 43 | my $destPath = $ARGV[1] . '/'; 44 | my $ignored = defined($ARGV[2]) ? $ARGV[2] : ''; 45 | 46 | mkdir($destPath) if (!-d $destPath); 47 | 48 | open(LOGFILE, $srcFile) or die("Impossible d'ouvrir le fichier ".$srcFile); 49 | 50 | while() 51 | { 52 | if (/.*clickheat.*/ 53 | && ($ignored eq "" || !/.*http:\/\/.*$ignored.*/) ) 54 | { 55 | if (s/.*\[(.*)\].*g=(.*)&x=([0-9]*)&y=([0-9]*)&w=([0-9]*)&b=(.*)&c=([0-9])&random=(.*) HTTP.* \"(http:\/\/.*)\" \".*\" .*/$1, $2, $3, $4, $5, $6, $7, $8, $9/) 56 | { 57 | $date = ParseDate($1); $page = $2; $x = $3; $y = $4; $w = $5; $browser = $6; $c = $7; $random = $8; $referer = $9; 58 | $page = 'none' if ($page eq ''); 59 | 60 | $date =~ s#^(....)(..)(..)(..):(..):(..)#$1-$2-$3#; 61 | 62 | my $writeDir = $destPath.$page; 63 | my $writeFile = $writeDir.'/'.$date.'.log'; 64 | mkdir($writeDir) if (!-d $destPath.$page); 65 | 66 | 67 | if (defined($fdcache{$writeFile})) 68 | { 69 | $currentfd = $fdcache{$writeFile}; 70 | } 71 | else 72 | { 73 | open(my $fd, ">>".$writeFile) or die ("Erreur d'ouverture de " . $writeFile); 74 | chmod 0606, $writeFile; 75 | 76 | if (keys(%fdcache) == $maxcached) 77 | { 78 | # cache plein 79 | # on vire le dernier 80 | my @fdcache = %fdcache; 81 | close pop @fdcache; 82 | pop @fdcache; 83 | %fdcache = @fdcache; 84 | } 85 | 86 | $fdcache{$writeFile} = $fd; 87 | 88 | $currentfd = $fdcache{$writeFile}; 89 | } 90 | print $currentfd $x.'|'.$y.'|'.$w.'|'.$browser.'|'.$c."\n"; 91 | 92 | 93 | # 94 | # REFERRER 95 | # 96 | if ($referer ne '') 97 | { 98 | $writeFile = $writeDir . '/url.txt'; 99 | 100 | if (!-f $writeFile) 101 | { 102 | open(my $fd,">".$writeFile) or die ("Erreur d'ouverture de " . $writeFile) ; 103 | chmod 0606, $writeFile; 104 | print $fd $referer.'>0>0>0'; 105 | close $fd; 106 | } 107 | } 108 | } 109 | } 110 | } 111 | 112 | while( my ($k, $v) = each %fdcache ) 113 | { 114 | close $v; 115 | } 116 | 117 | close LOGFILE; 118 | 119 | -------------------------------------------------------------------------------- /libs/logo.png.php: -------------------------------------------------------------------------------- 1 | light blue (rGB) => green (rGb) => yellow (RGb) => red (Rgb), 20 colors between each of these */ 18 | for ($i = 0; $i < 80; $i++) 19 | { 20 | /* Red */ 21 | if ($i < 40) 22 | { 23 | $red = CLICKHEAT_LOW_COLOR; 24 | } 25 | elseif ($i < 60) 26 | { 27 | $red = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 40) / 20; 28 | } 29 | else 30 | { 31 | $red = CLICKHEAT_HIGH_COLOR; 32 | } 33 | /* Green */ 34 | if ($i < 20) 35 | { 36 | $green = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * $i / 20; 37 | } 38 | elseif ($i < 60) 39 | { 40 | $green = CLICKHEAT_HIGH_COLOR; 41 | } 42 | else 43 | { 44 | $green = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 60) / 20; 45 | } 46 | /* Blue */ 47 | if ($i < 20) 48 | { 49 | $blue = CLICKHEAT_HIGH_COLOR; 50 | } 51 | elseif ($i < 40) 52 | { 53 | $blue = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - 20) / 20; 54 | } 55 | else 56 | { 57 | $blue = CLICKHEAT_LOW_COLOR; 58 | } 59 | $colors[$i] = imagecolorallocate($img, ceil($red), ceil($green), ceil($blue)); 60 | } 61 | 62 | /* Rainbow */ 63 | for ($i = 0; $i < 80; $i += 2) 64 | { 65 | imageline($img, $i / 2, 0, $i / 2, 15, $colors[0]); 66 | imageline($img, $i / 2 + 40, 0, $i / 2 + 40, 15, $colors[$i]); 67 | } 68 | imagerectangle($img, 0, 0, 79, 14, $grey); 69 | $pixels = array( 70 | ' ', 71 | ' ############################################################################## ', 72 | ' # # ', 73 | ' # # ', 74 | ' # # ', 75 | ' # ## # # ## # # # # ### ## ### # ', 76 | ' # # # # # # # # # # # # # # # # ', 77 | ' # # # # # ## #### ## #### # # ', 78 | ' # # # # # # # # # # # # # # # # ', 79 | ' # ## ### # ## # # # # ### # # # # ', 80 | ' # # ', 81 | ' # # ', 82 | ' # # ', 83 | ' ############################################################################## ', 84 | ' '); 85 | for ($x = 0; $x < 80; $x++) 86 | { 87 | for ($y = 0; $y < 15; $y++) 88 | { 89 | if ($pixels[$y][$x] === '#') 90 | { 91 | imagesetpixel($img, $x, $y, $white); 92 | } 93 | } 94 | } 95 | header('Content-Type: image/png'); 96 | imagepng($img, './images/logo.png'); 97 | imagepng($img); 98 | imagedestroy($img); -------------------------------------------------------------------------------- /libs/debug-piwik-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Dugwood 6 | "/> 7 | 8 | 9 |
10 | link 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Milieu x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | Fin 98 | 99 | 109 | 110 | 111 | 114 |
115 | 116 | -------------------------------------------------------------------------------- /libs/debug-piwik-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Dugwood 6 | "/> 7 | 8 | 9 |
10 | link 11 | 12 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | Milieu x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | Fin 98 | 99 | 109 | 110 | 111 | 114 |
115 | 116 | -------------------------------------------------------------------------------- /libs/styles/clickheat.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: arial, helvetica, sans-serif; 3 | font-size:0.8em; 4 | color:#333; 5 | margin:0; 6 | } 7 | h1 { 8 | font-size:1.1em; 9 | text-align:center; 10 | margin:5px; 11 | color:#55d; 12 | } 13 | th { 14 | text-align:left; 15 | vertical-align:top; 16 | } 17 | input { 18 | border:1px solid #55b; 19 | font-size:12px; 20 | } 21 | select { 22 | border:1px solid #55b; 23 | font-size:12px; 24 | } 25 | form { 26 | margin:0px; 27 | } 28 | img { 29 | border:0; 30 | padding:0; 31 | margin:0; 32 | } 33 | #clickTable { 34 | margin:1px 10px; 35 | } 36 | #clickTable td { 37 | vertical-align:top; 38 | } 39 | .float-right { 40 | padding:10px 10px 0 0; 41 | float:right; 42 | text-align:right; 43 | } 44 | #cleaner { 45 | color:#fff; 46 | background-color:#55b; 47 | } 48 | #alphaSelector { 49 | position:relative; 50 | bottom:1px; 51 | } 52 | #formHeatmap { 53 | margin:1px; 54 | } 55 | #pngDiv { 56 | position:absolute; 57 | text-align:center; 58 | line-height:0; 59 | margin:0; 60 | padding:0; 61 | z-index:99; 62 | } 63 | #overflowDiv { 64 | position:absolute; 65 | margin:0; 66 | padding:0; 67 | overflow-y:auto; 68 | } 69 | #overflowDiv p { 70 | padding:0; 71 | margin:0; 72 | } 73 | #webPageFrame { 74 | z-index:1; 75 | } 76 | #layoutDiv { 77 | padding:2px; 78 | margin:0 5px; 79 | border:1px dashed #446; 80 | background-color:#ddf; 81 | display:none; 82 | } 83 | #clickheat-box th { 84 | font-weight:normal; 85 | } 86 | #clickheat-box table { 87 | margin-left:auto; 88 | margin-right:auto; 89 | } 90 | #clickheat-box { 91 | margin-left:auto; 92 | margin-right:auto; 93 | border:1px solid #aaf; 94 | width:800px; 95 | padding:15px; 96 | margin-top:20px; 97 | clear:right; 98 | } 99 | #clickheat-box .center { 100 | text-align:center; 101 | } 102 | #clickheat-box th { 103 | font-weight:bold; 104 | font-size:1em; 105 | padding:10px 0 0 10px; 106 | color:#55d; 107 | border-bottom: 1px solid #aaf; 108 | } 109 | .error { 110 | border:1px solid #faa; 111 | background-color:#fee; 112 | color:#c00; 113 | } 114 | .error a { 115 | color:#c00; 116 | } 117 | .clickheat-calendar { 118 | border-left:1px solid #bbf; 119 | border-top:1px solid #bbf; 120 | } 121 | .clickheat-calendar th, .clickheat-calendar td { 122 | text-align:center; 123 | border-right:1px solid #bbf; 124 | border-bottom:1px solid #bbf; 125 | padding:0 2px; 126 | } 127 | .clickheat-calendar td { 128 | color:#aaa; 129 | } 130 | .clickheat-calendar a { 131 | text-decoration:none; 132 | color:#009; 133 | } 134 | .clickheat-calendar-on { 135 | background-color:#bbf; 136 | } 137 | span.layout-left-fixed, span.layout-left-liquid, span.layout-left-empty { 138 | border:1px solid #888; 139 | padding:1px; 140 | line-height:1.5em; 141 | } 142 | div.layout-left-fixed, div.layout-left-liquid, div.layout-left-empty { 143 | width:70px; 144 | border:1px solid #888; 145 | } 146 | .layout-left-fixed, .layout-center-fixed, .layout-right-fixed { 147 | background-color:#66a; 148 | } 149 | .layout-left-liquid, .layout-center-liquid, .layout-right-liquid { 150 | background-color:#aaf; 151 | } 152 | .layout-left-empty, .layout-right-empty { 153 | background-color:#fff; 154 | } 155 | .layout-center-fixed, .layout-center-liquid { 156 | width:55px; 157 | margin-left:15px; 158 | } 159 | .layout-right-fixed, .layout-right-liquid, .layout-right-empty { 160 | width:15px; 161 | height:70px; 162 | margin-left:40px; 163 | } 164 | #clickheat-js { 165 | border:1px solid #66a; 166 | background-color:#fff; 167 | padding:5px; 168 | margin:5px; 169 | } 170 | #divPanel { 171 | margin:0; 172 | padding-left:5px; 173 | border-bottom:1px solid #66a; 174 | background-color:#eef; 175 | cursor:pointer; 176 | color:#66a; 177 | } -------------------------------------------------------------------------------- /libs/classes/HeatmapFromFile.class.php: -------------------------------------------------------------------------------- 1 | files[] = $file; 32 | } 33 | } 34 | 35 | /** 36 | * Do some tasks before drawing (database connection...) 37 | */ 38 | function startDrawing() 39 | { 40 | return true; 41 | } 42 | 43 | /** 44 | * Find pixels coords and draw these on the current image 45 | * 46 | * @param integer $image Number of the image (to be used with $this->height) 47 | * @return boolean Success 48 | */ 49 | function drawPixels($image) 50 | { 51 | if (count($this->files) === 0) 52 | { 53 | return $this->raiseError('No files to be used'); 54 | } 55 | for ($file = 0; $file < count($this->files); $file++) 56 | { 57 | /** Read clicks in the log file */ 58 | $f = @fopen($this->files[$file], 'r'); 59 | if ($f === false) 60 | { 61 | return $this->raiseError('Can\'t open file: '.$this->files[$file]); 62 | } 63 | 64 | $buffer = ''; 65 | $count = 0; 66 | while (true) 67 | { 68 | $buffer .= fgets($f, 1024); 69 | /** Grouping by 1000 clicks */ 70 | if (feof($f) === false && $count++ !== 1000) 71 | { 72 | continue; 73 | } 74 | /** Do a regular match (faster and easier for large volume of data) */ 75 | preg_match_all($this->regular, $buffer, $clicks); 76 | $buffer = ''; 77 | 78 | for ($i = 0, $max = count($clicks[1]); $i < $max; $i++) 79 | { 80 | $x = (int) $clicks[1][$i]; 81 | $y = (int) ($clicks[2][$i] - $image * $this->height); 82 | if ($x < 0 || $x >= $this->width) 83 | { 84 | continue; 85 | } 86 | if ($y >= 0 && $y < $this->height) 87 | { 88 | /** Apply a calculus for the step, with increases the speed of rendering : step = 3, then pixel is drawn at x = 2 (center of a 3x3 square) */ 89 | $x -= $x % $this->step - $this->startStep; 90 | $y -= $y % $this->step - $this->startStep; 91 | /** Add 1 to the current color of this pixel (color which represents the sum of clicks on this pixel) */ 92 | $color = imagecolorat($this->image, $x, $y) + 1; 93 | imagesetpixel($this->image, $x, $y, $color); 94 | $this->maxClicks = max($this->maxClicks, $color); 95 | } 96 | if ($image === 0) 97 | { 98 | /** Looking for the maximum height of click */ 99 | $this->maxY = max($y, $this->maxY); 100 | } 101 | } 102 | unset($clicks); 103 | 104 | if ($count !== 1001) 105 | { 106 | break; 107 | } 108 | $count = 0; 109 | } 110 | fclose($f); 111 | } 112 | return true; 113 | } 114 | 115 | /** 116 | * Do some cleaning or ending tasks (close database, reset array...) 117 | */ 118 | function finishDrawing() 119 | { 120 | $this->files = array(); 121 | return true; 122 | } 123 | 124 | } 125 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Piwik ClickHeat Plugin 2 | 3 | ## Description 4 | ClickHeat is a visual heatmap of clicks on a HTML page, showing hot and cold click zones. This plugin based on [Dugwood's ClickHeat version 1.14](https://github.com/dugwood/clickheat). It is an OpenSource software, released under GPL licence, and free of charge. 5 | 6 | __Plugin not consider the IIS.__ Sorry. We are waiting patches for IIS. 7 | 8 | ## Installation 9 | Install it via Piwik Marketplace. 10 | 11 | This plugin installer will make directories: 12 | * yourpiwik/tmp/cache/clickheat/cache 13 | * yourpiwik/tmp/cache/clickheat/logs. 14 | 15 | This plugin uses a different tracker. Please click on the link "JavaScript" and put the special Javascript codes into your website. 16 | 17 | ## FAQ 18 | __What exactly is included in this feature ?__ 19 | 20 | * pick up a siteid 21 | * pick up a period 22 | * pick up a browser type 23 | * pick up a specific web page 24 | 25 | __And what functions are not included in this feature ?__ 26 | 27 | * remove special addresses defined on the control panel. 28 | * remove special browsers defined on the control panel. 29 | * filters based on added segmentation 30 | 31 | __Where is the coordinate information from the browser ?__ 32 | 33 | ClickHeat plugin uses text files to record the coordinate data of each browser in directory: yourpiwik/tmp/cache/clickheat/logs. 34 | 35 | __What is "click.php returned a status code 403" ?__ 36 | 37 | You have to perform the upgrade immediately to version 0.1.5. I forgot to put .htaccess. 38 | 39 | __After installing the plugin, Piwik Administration area shows "page not found 404 error".__ 40 | 41 | This plugin doesn't consider the IIS. Sorry. And please delete the ClickHeat plugin (yourpiwik/plugins/ClickHeat) manually via FTP or Explorer. We are waiting patches for IIS. 42 | 43 | __Does it withstands high traffics ?__ 44 | 45 | This plugin uses minimal text to record data and file based logging. And when click.php is called from a special Javascript for cgi, just append text on end of the each file. And when you analyze the click data and make a heatmap, plugin will create cached heatmap as png image file. 46 | 47 | Therefore, we expect the plugin light works, but we don't know what load it has under Piwik 2.x. So we are very glad, when you inform us about your situation. 48 | 49 | Please see the link [Performance and optimization](http://www.labsmedia.com/clickheat/156894.html) about system resources. If you want performance, you need to avoid to use a cgi, that is possible. It method is explained on the link. 50 | 51 | __New click data were added, but not updated heatmap. Why ?__ 52 | 53 | Plugin places heatmap images in the cache directory: yourpiwik/tmp/cache/clickheat/cache. Therefore when you suddenly met with such probrem, you can delete cache files, but __do not delete cache directory__. 54 | 55 | __Showed a heatmap, but not overlay a heatmap to the target web page. Why ?__ 56 | 57 | Check that your website does not set the HTTP header __X-FRAME-OPTIONS__ to __SAMEORIGIN__ as this will prevent this plugin from iframing your website for the heatmap report. Please see [Page Overlay Troubleshooting](http://piwik.org/docs/page-overlay/#page-overlay-troubleshooting), that is same problem. 58 | 59 | __How do I enable logging ?__ 60 | 61 | Logging prepared for click.php. To debug it further please enable tracker debug mode in config.ini.php: 62 | 63 | ``` 64 | [Tracker] 65 | debug=1 66 | ``` 67 | You can see the log in yourpiwik/tmp/logs/piwik.log. 68 | 69 | ## Changelog 70 | 71 | * 0.1.0 First beta 72 | * 0.1.2 to append faq 73 | * 0.1.3 to append faq 74 | * 0.1.5 to add .htaccess 75 | * 0.1.6 76 | * security update 77 | * rename clickheat.php to clickheat_config.php (Windows mixes up ClickHeat.php with clickheat.php) 78 | * 0.1.7 fixed bug 79 | * 0.1.9 fixed bug 80 | 81 | ## License 82 | GPL v3 or later 83 | 84 | ## Support 85 | Please direct any feedback to [yamachan@piwikjapan.org](mailto:yamachan@piwikjapan.org). -------------------------------------------------------------------------------- /libs/layout.php: -------------------------------------------------------------------------------- 1 | ', $webPage); 31 | if (count($webPage) !== 4) 32 | { 33 | $webPage = array('../', 0, 0, 0); 34 | } 35 | $url = &$webPage[0]; 36 | $left = (int) $webPage[1]; 37 | $center = (int) $webPage[2]; 38 | $right = (int) $webPage[3]; 39 | unset($webPage); 40 | 41 | $pos = strpos($group, ','); 42 | if ($pos === false) 43 | { 44 | $groupTitle = &$group; 45 | } 46 | else 47 | { 48 | $groupTitle = substr($group, $pos + 1); 49 | } 50 | ?> 51 | Close 53 |

''

54 |
55 | Save
57 |
58 | 59 | '; 67 | echo ''; 68 | echo ''; 73 | echo ''; 74 | } 75 | ?> 76 |
', constant('LANG_LAYOUT_'.$i), '
77 |
-------------------------------------------------------------------------------- /libs/cleaner.php: -------------------------------------------------------------------------------- 1 | '; 29 | $str = file_get_contents(dirname(__FILE__).'/js/'.$file.'.js'); 30 | if (($result = Syntax_Checker::js($str)) !== true) 31 | { 32 | echo 'JSLint : ', $file, '.js non valide :
', str_replace("\n", '
', $result); 33 | break; 34 | } 35 | } 36 | } 37 | 38 | if (IS_PIWIK_MODULE === true) 39 | { 40 | $clickheatConf = self::conf(); 41 | } 42 | 43 | $deletedFiles = 0; 44 | $deletedDirs = 0; 45 | /** 46 | * Clean the logs' directory according to configuration data 47 | */ 48 | if ($clickheatConf['flush'] !== 0 && is_dir($clickheatConf['logPath']) === true) 49 | { 50 | $logDir = dir($clickheatConf['logPath'].'/'); 51 | while (($dir = $logDir->read()) !== false) 52 | { 53 | if ($dir[0] === '.' || !is_dir($logDir->path.$dir)) 54 | { 55 | continue; 56 | } 57 | 58 | $d = dir($logDir->path.$dir.'/'); 59 | $deletedAll = true; 60 | $oldestDate = mktime(0, 0, 0, date('m'), date('d') - $clickheatConf['flush'], date('Y')); 61 | if ($debug === true) 62 | { 63 | echo 'directory: "', $dir, '"
'; 64 | } 65 | while (($file = $d->read()) !== false) 66 | { 67 | if ($file[0] === '.' || $file === 'url.txt') 68 | { 69 | continue; 70 | } 71 | $ext = explode('.', $file); 72 | if (count($ext) !== 2) 73 | { 74 | $deletedAll = false; 75 | continue; 76 | } 77 | $filemtime = filemtime($d->path.$file); 78 | if ($debug === true) 79 | { 80 | echo '  file: "', $file, '" ', ($filemtime - $oldestDate), ' seconds left (about ', ceil(($filemtime - $oldestDate) / 86400), ' days left)
'; 81 | } 82 | if ($ext[1] === 'log' && $filemtime <= $oldestDate) 83 | { 84 | @unlink($d->path.$file); 85 | $deletedFiles++; 86 | continue; 87 | } 88 | $deletedAll = false; 89 | } 90 | /** If every log file (but the url.txt) has been deleted, then we should delete the directory too */ 91 | if ($deletedAll === true) 92 | { 93 | @unlink($d->path.'/url.txt'); 94 | $deletedFiles++; 95 | @rmdir($d->path); 96 | $deletedDirs++; 97 | } 98 | $d->close(); 99 | } 100 | $logDir->close(); 101 | } 102 | 103 | /** 104 | * Clean the cache directory for every file older than 1 day 105 | */ 106 | if (is_dir($clickheatConf['cachePath']) === true) 107 | { 108 | if ($debug === true) 109 | { 110 | echo '
cache directory:
'; 111 | } 112 | $time = isset($_SERVER['REQUEST_TIME']) ? $_SERVER['REQUEST_TIME'] : time(); 113 | $time -= 86400; 114 | $d = dir($clickheatConf['cachePath'].'/'); 115 | while (($file = $d->read()) !== false) 116 | { 117 | if ($file[0] === '.') 118 | { 119 | continue; 120 | } 121 | $pos = strrpos($file, '.'); 122 | if ($pos === false) 123 | { 124 | continue; 125 | } 126 | $ext = substr($file, $pos + 1); 127 | $filemtime = filemtime($d->path.$file); 128 | if ($debug === true) 129 | { 130 | echo '  file: "', $file, '" ', ($filemtime - $time), ' seconds left
'; 131 | } 132 | switch ($ext) 133 | { 134 | case 'html': 135 | case 'png': 136 | case 'png_temp': 137 | case 'png_log': 138 | { 139 | if ($filemtime < $time) 140 | { 141 | @unlink($d->path.$file); 142 | $deletedFiles++; 143 | continue; 144 | } 145 | break; 146 | } 147 | } 148 | } 149 | $d->close(); 150 | } 151 | 152 | if ($deletedDirs + $deletedFiles === 0) 153 | { 154 | echo 'OK'; 155 | return true; 156 | } 157 | echo sprintf(LANG_CLEANER_RUN, $deletedFiles, $deletedDirs); 158 | -------------------------------------------------------------------------------- /libs/classes/HeatmapFromDatabase.class.php: -------------------------------------------------------------------------------- 1 | link = @mysql_connect($this->host, $this->user, $this->password); 40 | if ($this->link === false) 41 | { 42 | return $this->raiseError('Database connection error: '.mysql_error()); 43 | } 44 | if (mysql_select_db($this->database) === false) 45 | { 46 | return $this->raiseError('Database selection error: '.$this->database); 47 | } 48 | $result = mysql_query($this->maxQuery); 49 | if ($result === false) 50 | { 51 | return $this->raiseError('Query failed: '.mysql_error()); 52 | } 53 | $max = mysql_fetch_row($result); 54 | $this->maxY = $max[0]; 55 | mysql_free_result($result); 56 | return true; 57 | } 58 | 59 | /** 60 | * Find pixels coords and draw these on the current image 61 | * 62 | * @param integer $image Number of the image (to be used with $this->height) 63 | * @return boolean Success 64 | */ 65 | function drawPixels($image) 66 | { 67 | $limit = 0; 68 | do 69 | { 70 | /** Select with limit */ 71 | $result = mysql_query(sprintf($this->query, $image * $this->height, ($image + 1) * $this->height - 1).' LIMIT '.$limit.','.$this->limit); 72 | if ($result === false) 73 | { 74 | return $this->raiseError('Query failed: '.mysql_error()); 75 | } 76 | $count = mysql_num_rows($result); 77 | 78 | while ($click = mysql_fetch_row($result)) 79 | { 80 | $x = (int) $click[0]; 81 | $y = (int) ($click[1] - $image * $this->height); 82 | if ($x < 0 || $x >= $this->width) 83 | { 84 | continue; 85 | } 86 | /** Apply a calculus for the step, with increases the speed of rendering : step = 3, then pixel is drawn at x = 2 (center of a 3x3 square) */ 87 | $x -= $x % $this->step - $this->startStep; 88 | $y -= $y % $this->step - $this->startStep; 89 | /** Add 1 to the current color of this pixel (color which represents the sum of clicks on this pixel) */ 90 | $color = imagecolorat($this->image, $x, $y) + 1; 91 | imagesetpixel($this->image, $x, $y, $color); 92 | $this->maxClicks = max($this->maxClicks, $color); 93 | if ($image === 0) 94 | { 95 | /** Looking for the maximum height of click */ 96 | $this->maxY = max($y, $this->maxY); 97 | } 98 | } 99 | /** Free resultset */ 100 | mysql_free_result($result); 101 | 102 | $limit += $this->limit; 103 | } 104 | while ($count === $this->limit); 105 | return true; 106 | } 107 | 108 | /** 109 | * Do some cleaning or ending tasks (close database, reset array...) 110 | */ 111 | function finishDrawing() 112 | { 113 | /** Close connection */ 114 | mysql_close($this->link); 115 | return true; 116 | } 117 | 118 | } 119 | -------------------------------------------------------------------------------- /libs/logo170.png.php: -------------------------------------------------------------------------------- 1 | deep blue (rgB) => light blue (rGB) => green (rGb) => yellow (RGb) => red (Rgb) 24 | * 0 $colorLevels[0] $colorLevels[1] $colorLevels[2] $colorLevels[3] 128 25 | */ 26 | $colorLevels = array(30, 55, 65, 75); 27 | $colors = array(); 28 | for ($i = 0; $i < 128; $i++) 29 | { 30 | /** Red */ 31 | if ($i < $colorLevels[0]) 32 | { 33 | $colors[$i][0] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 34 | } 35 | elseif ($i < $colorLevels[2]) 36 | { 37 | $colors[$i][0] = CLICKHEAT_LOW_COLOR; 38 | } 39 | elseif ($i < $colorLevels[3]) 40 | { 41 | $colors[$i][0] = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[2]) / ($colorLevels[3] - $colorLevels[2]); 42 | } 43 | else 44 | { 45 | $colors[$i][0] = CLICKHEAT_HIGH_COLOR; 46 | } 47 | /** Green */ 48 | if ($i < $colorLevels[0]) 49 | { 50 | $colors[$i][1] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 51 | } 52 | elseif ($i < $colorLevels[1]) 53 | { 54 | $colors[$i][1] = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[0]) / ($colorLevels[1] - $colorLevels[0]); 55 | } 56 | elseif ($i < $colorLevels[3]) 57 | { 58 | $colors[$i][1] = CLICKHEAT_HIGH_COLOR; 59 | } 60 | else 61 | { 62 | $colors[$i][1] = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[3]) / (127 - $colorLevels[3]); 63 | } 64 | /** Blue */ 65 | if ($i < $colorLevels[0]) 66 | { 67 | $colors[$i][2] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 68 | } 69 | elseif ($i < $colorLevels[1]) 70 | { 71 | $colors[$i][2] = CLICKHEAT_HIGH_COLOR; 72 | } 73 | elseif ($i < $colorLevels[2]) 74 | { 75 | $colors[$i][2] = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[1]) / ($colorLevels[2] - $colorLevels[1]); 76 | } 77 | else 78 | { 79 | $colors[$i][2] = CLICKHEAT_LOW_COLOR; 80 | } 81 | } 82 | 83 | $max = 35; 84 | //$blur = imagecreatetruecolor(50, 50); 85 | //$white = imagecolorallocate($blur, 255, 255, 255); 86 | imagefill($img, 0, 0, $white); 87 | /** 88 | * Courbe en forme de poire (pear-like curve) 89 | * http://www.mathcurve.com/courbes2d/piriforme/piriforme.shtml 90 | */ 91 | for ($i = 1; $i <= $max; $i++) 92 | { 93 | $a = $max - $i + 1; 94 | $b = $a * (2 - $i / $max); 95 | $color = imagecolorallocate($img, $colors[ceil($i * 127 / $max)][0], $colors[ceil($i * 127 / $max)][1], $colors[ceil($i * 127 / $max)][2]); 96 | for ($t = 0; $t < 360; $t++) 97 | { 98 | imagesetpixel($img, 8.5 + $a * $a / $b * cos($t) * cos($t) * cos($t) * sin($t), min($max - 1, $max - $a + $a * cos($t) * cos($t)), $color); 99 | } 100 | } 101 | 102 | $string = 'ClickHeat'; 103 | $x = 18; 104 | $y = 32; 105 | $font = '/mnt/win_dd/WINDOWS/Fonts/verdana.ttf'; 106 | if (!file_exists($font)) 107 | { 108 | exit('Font not found'); 109 | } 110 | $size = 25; 111 | for ($i = 0, $max = strlen($string); $i < $max; $i++) 112 | { 113 | $info = imagettfbbox($size, 0, $font, $string[$i]); 114 | if (strtolower($string[$i]) === 'h') 115 | { 116 | $font = '/mnt/win_dd/WINDOWS/Fonts/verdanab.ttf'; 117 | } 118 | imagettftext($img, $size, 0, $x + 1, $y + 1, $shadow, $font, $string[$i]); 119 | imagettftext($img, $size, 0, $x, $y, $blue, $font, $string[$i]); 120 | $x += $info[2] - $info[0] + 3; 121 | if (strtolower($string[$i]) === 'c' || strtolower($string[$i]) === 'k') 122 | { 123 | $x -= 2; 124 | } 125 | if (strtolower($string[$i]) === 'h') 126 | { 127 | $x += 4; 128 | } 129 | } 130 | 131 | header('Content-Type: image/png'); 132 | imagepng($img, './images/logo170.png'); 133 | imagepng($img); 134 | imagedestroy($img); 135 | -------------------------------------------------------------------------------- /libs/generate.php: -------------------------------------------------------------------------------- 1 | $time - $delay) 104 | { 105 | readfile($htmlPath); 106 | exit; 107 | } 108 | 109 | /* Get some data for the current group (centered and/or fixed layout) */ 110 | if (file_exists($clickheatConf['logPath'].$group.'/url.txt')) 111 | { 112 | $f = fopen($clickheatConf['logPath'].$group.'/url.txt', 'r'); 113 | $layout = trim(fgets($f, 1024)); 114 | fclose($f); 115 | } 116 | else 117 | { 118 | $layout = ''; 119 | } 120 | $layout = explode('>', $layout); 121 | if (count($layout) !== 4) 122 | { 123 | $layout = array('', 0, 0, 0); 124 | } 125 | 126 | /* Call the Heatmap class */ 127 | $clicksHeatmap = new HeatmapFromClicks(); 128 | $clicksHeatmap->browser = $browser; 129 | $clicksHeatmap->minScreen = $minScreen; 130 | $clicksHeatmap->maxScreen = $maxScreen; 131 | $clicksHeatmap->layout = $layout; 132 | $clicksHeatmap->memory = $clickheatConf['memory'] * 1048576; 133 | $clicksHeatmap->step = $clickheatConf['step']; 134 | $clicksHeatmap->dot = $clickheatConf['dot']; 135 | $clicksHeatmap->palette = $clickheatConf['palette']; 136 | $clicksHeatmap->heatmap = $heatmap; 137 | $clicksHeatmap->path = $clickheatConf['cachePath']; 138 | $clicksHeatmap->cache = $clickheatConf['cachePath']; 139 | $clicksHeatmap->file = $imagePath.'-%d.png'; 140 | /* Add files */ 141 | for ($day = 0; $day < $days; $day++) 142 | { 143 | $currentDate = date('Y-m-d', mktime(0, 0, 0, date('m', $dateStamp), date('d', $dateStamp) + $day, date('Y', $dateStamp))); 144 | $clicksHeatmap->addFile($clickheatConf['logPath'].$group.'/'.$currentDate.'.log'); 145 | } 146 | 147 | $result = $clicksHeatmap->generate($width); 148 | if ($result === false) 149 | { 150 | errorGenerate($clicksHeatmap->error); 151 | } 152 | $html = ''; 153 | for ($i = 0; $i < $result['count']; $i++) 154 | { 155 | $html .= '
'; 156 | } 157 | echo $html; 158 | 159 | /* Save the HTML code to speed up following queries (only over two minutes) */ 160 | $f = fopen($htmlPath, 'w'); 161 | fputs($f, $html); 162 | fclose($f); 163 | 164 | /** 165 | * Retourne une erreur / Returns an error 166 | * 167 | * @param string $error 168 | */ 169 | function errorGenerate($error) 170 | { 171 | echo ' 
'.$error.'
'; 172 | exit; 173 | } 174 | -------------------------------------------------------------------------------- /libs/js/clickheat.js: -------------------------------------------------------------------------------- 1 | /** Code by www.dugwood.com */function addEvtListener(c,b,a){if(document.addEventListener){if(c){c.addEventListener(b,a,false)}else{addEventListener(b,a,false)}}else{if(attachEvent){if(c){c.attachEvent("on"+b,a)}else{attachEvent("on"+b,a)}}}}var clickHeatGroup="",clickHeatSite="",clickHeatServer="",clickHeatLastIframe=-1,clickHeatTime=0,clickHeatQuota=-1,clickHeatBrowser="",clickHeatDocument="",clickHeatWait=500,clickHeatLocalWait=0,clickHeatDebug=(document.location.href.indexOf("debugclickheat")!==-1);function showClickHeatDebug(a){if(clickHeatDebug===true){document.getElementById("clickHeatDebuggerSpan").innerHTML=a;document.getElementById("clickHeatDebuggerDiv").style.display="block"}}function catchClickHeat(o){var p,d,j,i,k,n,m,b,a,v,s,f,r,q,u=false,z=false;try{showClickHeatDebug("Gathering click data...");if(clickHeatQuota===0){showClickHeatDebug("Click not logged: quota reached");return true}if(clickHeatGroup===""){showClickHeatDebug("Click not logged: group name empty (clickHeatGroup)");return true}if(!o){o=window.event 2 | }p=o.which||o.button;d=o.srcElement||null;if(p===0){showClickHeatDebug("Click not logged: no button pressed");return true}if(d!==null&&d.tagName.toLowerCase()==="iframe"){if(d.sourceIndex===clickHeatLastIframe){showClickHeatDebug("Click not logged: same iframe (a click on iframe opens a popup and popup is closed => iframe gets the focus again)");return true}clickHeatLastIframe=d.sourceIndex}else{clickHeatLastIframe=-1}j=o.clientX;i=o.clientY;k=clickHeatDocument.clientWidth||window.innerWidth;n=clickHeatDocument.clientHeight||window.innerHeight;a=window.pageXOffset||clickHeatDocument.scrollLeft;v=window.pageYOffset||clickHeatDocument.scrollTop;m=Math.max(clickHeatDocument.scrollWidth,clickHeatDocument.offsetWidth,k);b=Math.max(clickHeatDocument.scrollHeight,clickHeatDocument.offsetHeight,n);if(j>k||i>n){showClickHeatDebug("Click not logged: out of document (should be a click on scrollbars)");return true}j+=a;i+=v;if(j<0||i<0||j>m||i>b){showClickHeatDebug("Click not logged: out of document (should be a click out of the document's body)"); 3 | return true}s=new Date();if(s.getTime()-clickHeatTime<1000){showClickHeatDebug("Click not logged: at least 1 second between clicks");return true}clickHeatTime=s.getTime();if(clickHeatQuota>0){clickHeatQuota=clickHeatQuota-1}q="s="+clickHeatSite+"&g="+clickHeatGroup+"&x="+j+"&y="+i+"&w="+k+"&b="+clickHeatBrowser+"&c="+p+"&random="+Date();showClickHeatDebug("Ready to send click data...");if(clickHeatServer.indexOf("http")!==0){try{z=new ActiveXObject("Msxml2.XMLHTTP")}catch(t){try{z=new ActiveXObject("Microsoft.XMLHTTP")}catch(l){z=null}}if(!z&&typeof(XMLHttpRequest)!=="undefined"){z=new XMLHttpRequest()}if(z){if(clickHeatDebug===true){z.onreadystatechange=function(){if(z.readyState===4){if(z.status===200){showClickHeatDebug("Click recorded at "+clickHeatServer+" with the following parameters:
x = "+j+" ("+(j-a)+"px from left + "+a+"px of horizontal scrolling, max width = "+m+")
y = "+i+" ("+(i-v)+"px from top + "+v+"px of vertical scrolling, max height = "+b+")
width = "+k+"
browser = "+clickHeatBrowser+"
click = "+p+"
site = "+clickHeatSite+"
group = "+clickHeatGroup+"

Server answer: "+z.responseText) 4 | }else{if(z.status===404){showClickHeatDebug("click.php was not found at: "+(clickHeatServer!==""?clickHeatServer:"/clickheat/click.php")+" please set clickHeatServer value")}else{showClickHeatDebug("click.php returned a status code "+z.status+" with the following error: "+z.responseText)}}clickHeatLocalWait=0}}}z.open("GET",clickHeatServer+"?"+q,true);z.send(null);u=true}}if(u===false){if(clickHeatDebug===true){showClickHeatDebug("Click recorded at "+clickHeatServer+" with the following parameters:
x = "+(j+a)+" ("+j+"px from left + "+a+"px of horizontal scrolling)
y = "+(i+v)+" ("+i+"px from top + "+v+"px of vertical scrolling)
width = "+k+"
browser = "+clickHeatBrowser+"
click = "+p+"
site = "+clickHeatSite+"
group = "+clickHeatGroup+'

Server answer:
')}else{r=new Image();r.src=clickHeatServer+"?"+q}}f=new Date();clickHeatLocalWait=f.getTime()+clickHeatWait;while(clickHeatLocalWait>f.getTime()){f=new Date() 5 | }}catch(g){showClickHeatDebug("An error occurred while processing click (Javascript error): "+g.message)}return true}function initClickHeat(){var d,f,a,c,e,g;if(clickHeatDebug===true){g=document.createElement("div");g.id="clickHeatDebuggerDiv";g.style.padding="5px";g.style.display="none";g.style.position="absolute";g.style.top="200px";g.style.left="200px";g.style.border="1px solid #888";g.style.backgroundColor="#eee";g.style.color="#a00";g.style.zIndex=99;g.innerHTML='Rollover to closeClickHeat debug:

';document.body.appendChild(g)}if(clickHeatGroup===""||clickHeatServer===""){showClickHeatDebug("ClickHeat NOT initialised: either clickHeatGroup or clickHeatServer is empty");return false}e=document.location.protocol+"//"+document.location.host;if(clickHeatServer.indexOf(e)===0){clickHeatServer=clickHeatServer.substring(e.length,clickHeatServer.length) 6 | }addEvtListener(document,"mousedown",catchClickHeat);f=document.getElementsByTagName("iframe");for(d=0;dsite = "+clickHeatSite+"
group = "+clickHeatGroup+"
server = "+clickHeatServer+"
quota = "+(clickHeatQuota===-1?"unlimited":clickHeatQuota)+"
browser = "+clickHeatBrowser+"

Click in a blank area (not on a link) to test ClickHeat")}; -------------------------------------------------------------------------------- /lang/zn.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "用户", 4 | "LANG_PASSWORD" : "密码", 5 | "LANG_LOGIN" : "登陆", 6 | "LANG_LOGIN_ERROR" : "登陆错误,用户或密码错误", 7 | "LANG_LOGOUT" : "登出", 8 | "LANG_UNKNOWN_DIR" : "目录定义错误,请与我们取得联系。", 9 | "LANG_DAYS" : "一,二,三,四,五,六,日", 10 | "LANG_RANGE" : "今天,本周,本月", 11 | "LANG_MONTHS" : "0,一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月", 12 | "LANG_SITE" : "网址", 13 | "LANG_GROUP" : "分组", 14 | "LANG_BROWSER" : "浏览器", 15 | "LANG_ALL" : "全部", 16 | "LANG_UNKNOWN" : "其他/未知", 17 | "LANG_EXAMPLE_URL" : "网页", 18 | "LANG_LAYOUT" : "分组页面布局", 19 | "LANG_LAYOUT_FIXED" : "固定宽度区域(内容/菜单)", 20 | "LANG_LAYOUT_LIQUID" : "自适应区域", 21 | "LANG_LAYOUT_NONE" : "边距无内容区域", 22 | "LANG_LAYOUT_0" : "整页自适应宽度布局", 23 | "LANG_LAYOUT_1" : "左菜单固定宽度,右侧内容自适应", 24 | "LANG_LAYOUT_2" : "中间内容固定宽度 (自动填充左右空白)", 25 | "LANG_LAYOUT_3" : "左内容固定宽度,右侧自动填充空白", 26 | "LANG_LAYOUT_4" : "右侧菜单固定宽度,内容宽度自适应", 27 | "LANG_LAYOUT_5" : "左右菜单固定宽度,中间内容自适应", 28 | "LANG_LAYOUT_6" : "右侧内容固定宽度,左侧自动填充空白", 29 | "LANG_LAYOUT_LEFT" : "左侧固定宽度大小(单位:像素pixels)", 30 | "LANG_LAYOUT_CENTER" : "中间固定宽度大小(单位:像素pixels)", 31 | "LANG_LAYOUT_RIGHT" : "右侧固定宽度大小(单位:像素pixels)", 32 | "LANG_SCREENSIZE" : "屏幕大小", 33 | "LANG_HEATMAP" : "热图样式和覆盖层透明度", 34 | "LANG_LATEST_CHECK" : "升级", 35 | "LANG_LATEST_KO" : "获取最新版本发生错误,你使用的当前版本为 %s, 请访问 Dugwood's 网站检查更新", 36 | "LANG_LATEST_OK" : "你使用的是最新版本:(%s)", 37 | "LANG_LATEST_NO" : "你使用的版本为 (%s), 目前最新版本为 (%s). 你可以从以下站点下载最新版:", 38 | "LANG_LOG_MY_CLICKS" : "是否记录自己的点击", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "为了防止统计干扰,你可以选择是否记录自己的点击\\n\\n确认 = 记录\\n取消 = 不记录", 40 | "LANG_JAVASCRIPT" : "将以下javascript代码粘贴到你需要监控的页面", 41 | "LANG_JAVASCRIPT_IMAGE" : "在页面显示ClickHeat图标", 42 | "LANG_JAVASCRIPT_SHORT" : "压缩代码 (仅3行)", 43 | "LANG_JAVASCRIPT_QUOTA" : "单个用户在一页中记录的最大点击数量(0 = 不限制, 3 是比较好的数量)", 44 | "LANG_JAVASCRIPT_SITE" : "网址 (允许字符: A-Z, a-z, 0-9, 下划线, 连字号, 点)", 45 | "LANG_JAVASCRIPT_GROUP" : "分组名, 将类似的页面分组记录成单独的统计页面", 46 | "LANG_JAVASCRIPT_GROUP0" : "分组名称", 47 | "LANG_JAVASCRIPT_GROUP1" : "允许字符: A-Z, a-z, 0-9, 下划线, 连字号, 点", 48 | "LANG_JAVASCRIPT_GROUP2" : "使用页面标题 (不推荐)", 49 | "LANG_JAVASCRIPT_GROUP3" : "使用页面URL (不推荐)", 50 | "LANG_JAVASCRIPT_PASTE" : "将以下代码粘贴到你的页面HTML文件结束之前 (在 </body> 标记之前):", 51 | "LANG_JAVASCRIPT_DEBUG" : "代码粘贴到页面之后,不要忘记测试该配置是否正确。方法:将参数debugclickheat附加到你的请求页面URL中. 比如测试 http://www.site.com/index.html,则调用 http://www.site.com/index.html?debugclickheat. 你会看到一个clickheat的测试状态区域. 如果有任何疑问,请和我们取得联系。", 52 | "LANG_NO_CLICK_BELOW" : "Leave below in English please. But CHINESE IS: 本线以下没有点击", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "未知分组. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "暂时没有点击记录 (可能是由您选择的条件限制引起,建议取消或修改限制后重试: 如浏览器,屏幕大小等). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "请检查javascript代码是否已正确粘贴到了页面中。", 57 | "LANG_ERROR_FILE" : "无法打开log文件", 58 | "LANG_ERROR_SCREEN" : "非标准浏览器大小", 59 | "LANG_ERROR_LOADING" : "正在生成图像,请稍等...", 60 | "LANG_ERROR_FIXED" : "所有宽度都是固定的,但这是不可能的。请重新设置以上的布局配置。", 61 | "LANG_DEFAULT" : "默认", 62 | "LANG_CHECKS" : "初步检查", 63 | "LANG_CHECK_WRITABLE" : "写入配置失败", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP没有权限写配置文件夹", 65 | "LANG_CHECK_GD" : "GD库", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor() 没有定义, 无法建立图像文件,请检查GD库是否已安装", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha() 没有定义, 无法建立透明层图像(尽管你可以忽略他,但强烈建议你使用透明层,请检查GD库配置并进行正确设置)", 68 | "LANG_CHECK_GD_PNG" : "imagepng() 没有定义, 建立PNG图像文件失败", 69 | "LANG_CHECKS_OK" : "下一步: 配置", 70 | "LANG_CHECKS_KO" : "测试失败,请修正问题后重新刷新页面", 71 | "LANG_CONFIG" : "配置", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "热图配置", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "显示配置", 74 | "LANG_CONFIG_HEADER_SECURITY" : "安全配置", 75 | "LANG_CONFIG_HEADER_LOGIN" : "登陆配置", 76 | "LANG_CONFIG_LOGPATH" : "日志文件目录", 77 | "LANG_CONFIG_LOGPATH_DIR" : "日志文件夹不存在,请建立", 78 | "LANG_CONFIG_LOGPATH_KO" : "日志文件夹不可写,请修改文件夹权限。", 79 | "LANG_CONFIG_CACHEPATH" : "缓存文件目录", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "缓存文件夹不存在,请建立", 81 | "LANG_CONFIG_CACHEPATH_KO" : "日志文件夹不可写,请修改文件夹权限。", 82 | "LANG_CONFIG_REFERERS" : "域名列表 (使用,分隔) 允许记录的域名列表", 83 | "LANG_CONFIG_GROUPS" : "分组列表 (使用,分隔) 允许记录的分组名称列表", 84 | "LANG_CONFIG_FILESIZE" : "每天单个分组允许的最大日志文件大小,单位KB(1000 个点击记录大约 25KB, 0 = 不限制)", 85 | "LANG_CONFIG_CHECK" : "检查配置", 86 | "LANG_CONFIG_MEMORY" : "内存限制(php.ini默认值: %dMB, 大小限制: 从 %d 到 %dMB, 但请小心使用较大的内存设置)", 87 | "LANG_CONFIG_MEMORY_KO" : "输入值超出可用范围", 88 | "LANG_CONFIG_STEP" : "合并点击区域范围(将提升热图的显示)", 89 | "LANG_CONFIG_STEP_KO" : "点击区域范围不能小于1x1像素", 90 | "LANG_CONFIG_DOT" : "热图点大小(单位:像素)", 91 | "LANG_CONFIG_DOT_KO" : "点大小不能为0", 92 | "LANG_CONFIG_PALETTE" : "当你看到热图上出现红色区域,请选择此项", 93 | "LANG_CONFIG_HEATMAP" : "显示热图,取消选项则显示点击图", 94 | "LANG_CONFIG_FLASHES" : "隐藏 <Flash> 元素", 95 | "LANG_CONFIG_IFRAMES" : "隐藏 <iframe> 框架", 96 | "LANG_CONFIG_YESTERDAY" : "开始时显示昨天的数据,取消选项则显示当天数据", 97 | "LANG_CONFIG_ALPHA" : "透明程度 (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "自动删除 N 天前的数据 (0 = 不删除,不推荐)", 99 | "LANG_CONFIG_START" : "周开始", 100 | "LANG_CONFIG_START_M" : "周一", 101 | "LANG_CONFIG_START_S" : "周日", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "管理员名字", 103 | "LANG_CONFIG_ADMIN_PASS" : "管理员密码 (请输入两遍)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "访客名字 (不需要访客请留空)", 105 | "LANG_CONFIG_VIEWER_PASS" : "访客密码 (请输入两遍)", 106 | "LANG_CONFIG_LOGIN" : "名字必须大于4个字节", 107 | "LANG_CONFIG_PASS" : "密码为空", 108 | "LANG_CONFIG_MATCH" : "两次密码不匹配", 109 | "LANG_CONFIG_SAVE" : "保存配置", 110 | "LANG_CLEANER_RUNNING" : "正在清理...", 111 | "LANG_CLEANER_RUN" : "清理完成: 已删除%d 个文件, %d 个目录", 112 | "LANG_CANCEL" : "取消", 113 | "LANG_UPGRADE" : "升级", 114 | "LANG_UPGRADE_NEXT" : "请检查配置,并保存,完成升级" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /libs/languages/zh.php: -------------------------------------------------------------------------------- 1 | 不推荐)'); 61 | define('LANG_JAVASCRIPT_GROUP3', '使用页面URL (不推荐)'); 62 | define('LANG_JAVASCRIPT_PASTE', '将以下代码粘贴到你的页面HTML文件结束之前 (在 </body> 标记之前):'); 63 | define('LANG_JAVASCRIPT_DEBUG', '代码粘贴到页面之后,不要忘记测试该配置是否正确。方法:将参数debugclickheat附加到你的请求页面URL中. 比如测试 http://www.site.com/index.html,则调用 http://www.site.com/index.html?debugclickheat. 你会看到一个clickheat的测试状态区域. 如果有任何疑问,请和我们取得联系。'); 64 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please,CHINESE IS: 本线以下没有点击 65 | define('LANG_ERROR_GROUP', '未知分组. _JAVASCRIPT_'); 66 | define('LANG_ERROR_DATA', '暂时没有点击记录 (可能是由您选择的条件限制引起,建议取消或修改限制后重试: 如浏览器,屏幕大小等). _JAVASCRIPT_'); 67 | define('LANG_ERROR_JAVASCRIPT', '请检查javascript代码是否已正确粘贴到了页面中。'); 68 | define('LANG_ERROR_FILE', '无法打开log文件'); 69 | define('LANG_ERROR_SCREEN', '非标准浏览器大小'); 70 | define('LANG_ERROR_LOADING', '正在生成图像,请稍等...'); 71 | define('LANG_ERROR_FIXED', '所有宽度都是固定的,但这是不可能的。请重新设置以上的布局配置。'); 72 | define('LANG_DEFAULT', '默认'); 73 | define('LANG_CHECKS', '初步检查'); 74 | define('LANG_CHECK_WRITABLE', '写入配置失败'); 75 | define('LANG_CHECK_NOT_WRITABLE', 'PHP没有权限写配置文件夹'); 76 | define('LANG_CHECK_GD', 'GD库'); 77 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor() 没有定义, 无法建立图像文件,请检查GD库是否已安装'); 78 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha() 没有定义, 无法建立透明层图像(尽管你可以忽略他,但强烈建议你使用透明层,请检查GD库配置并进行正确设置)'); 79 | define('LANG_CHECK_GD_PNG', 'imagepng() 没有定义, 建立PNG图像文件失败'); 80 | define('LANG_CHECKS_OK', '下一步: 配置'); 81 | define('LANG_CHECKS_KO', '测试失败,请修正问题后重新刷新页面'); 82 | define('LANG_CONFIG', '配置'); 83 | define('LANG_CONFIG_HEADER_HEATMAP', '热图配置'); 84 | define('LANG_CONFIG_HEADER_DISPLAY', '显示配置'); 85 | define('LANG_CONFIG_HEADER_SECURITY', '安全配置'); 86 | define('LANG_CONFIG_HEADER_LOGIN', '登陆配置'); 87 | define('LANG_CONFIG_LOGPATH', '日志文件目录'); 88 | define('LANG_CONFIG_LOGPATH_DIR', '日志文件夹不存在,请建立'); 89 | define('LANG_CONFIG_LOGPATH_KO', '日志文件夹不可写,请修改文件夹权限。'); 90 | define('LANG_CONFIG_CACHEPATH', '缓存文件目录'); 91 | define('LANG_CONFIG_CACHEPATH_DIR', '缓存文件夹不存在,请建立'); 92 | define('LANG_CONFIG_CACHEPATH_KO', '日志文件夹不可写,请修改文件夹权限。'); 93 | define('LANG_CONFIG_REFERERS', '域名列表 (使用,分隔) 允许记录的域名列表'); 94 | define('LANG_CONFIG_GROUPS', '分组列表 (使用,分隔) 允许记录的分组名称列表'); 95 | define('LANG_CONFIG_FILESIZE', '每天单个分组允许的最大日志文件大小,单位KB(1000 个点击记录大约 25KB, 0 = 不限制)'); 96 | define('LANG_CONFIG_CHECK', '检查配置'); 97 | define('LANG_CONFIG_MEMORY', '内存限制(php.ini默认值: %dMB, 大小限制: 从 %d 到 %dMB, 但请小心使用较大的内存设置)'); 98 | define('LANG_CONFIG_MEMORY_KO', '输入值超出可用范围'); 99 | define('LANG_CONFIG_STEP', '合并点击区域范围(将提升热图的显示)'); 100 | define('LANG_CONFIG_STEP_KO', '点击区域范围不能小于1x1像素'); 101 | define('LANG_CONFIG_DOT', '热图点大小(单位:像素)'); 102 | define('LANG_CONFIG_DOT_KO', '点大小不能为0'); 103 | define('LANG_CONFIG_PALETTE', '当你看到热图上出现红色区域,请选择此项'); 104 | define('LANG_CONFIG_HEATMAP', '显示热图,取消选项则显示点击图'); 105 | define('LANG_CONFIG_FLASHES', '隐藏 <Flash> 元素'); 106 | define('LANG_CONFIG_IFRAMES', '隐藏 <iframe> 框架'); 107 | define('LANG_CONFIG_YESTERDAY', '开始时显示昨天的数据,取消选项则显示当天数据'); 108 | define('LANG_CONFIG_ALPHA', '透明程度 (0 => 100)'); 109 | define('LANG_CONFIG_FLUSH', '自动删除 N 天前的数据 (0 = 不删除,不推荐)'); 110 | define('LANG_CONFIG_START', '周开始'); 111 | define('LANG_CONFIG_START_M', '周一'); 112 | define('LANG_CONFIG_START_S', '周日'); 113 | define('LANG_CONFIG_ADMIN_LOGIN', '管理员名字'); 114 | define('LANG_CONFIG_ADMIN_PASS', '管理员密码 (请输入两遍)'); 115 | define('LANG_CONFIG_VIEWER_LOGIN', '访客名字 (不需要访客请留空)'); 116 | define('LANG_CONFIG_VIEWER_PASS', '访客密码 (请输入两遍)'); 117 | define('LANG_CONFIG_LOGIN', '名字必须大于4个字节'); 118 | define('LANG_CONFIG_PASS', '密码为空'); 119 | define('LANG_CONFIG_MATCH', '两次密码不匹配'); 120 | define('LANG_CONFIG_SAVE', '保存配置'); 121 | define('LANG_CLEANER_RUNNING', '正在清理...'); 122 | define('LANG_CLEANER_RUN', '清理完成: 已删除%d 个文件, %d 个目录'); 123 | define('LANG_CANCEL', '取消'); 124 | define('LANG_UPGRADE', '升级'); 125 | define('LANG_UPGRADE_NEXT', '请检查配置,并保存,完成升级'); 126 | ?> 127 | -------------------------------------------------------------------------------- /lang/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER": "ユーザ名", 4 | "LANG_PASSWORD" : "パスワード", 5 | "LANG_LOGIN" : "ログイン", 6 | "LANG_LOGIN_ERROR" : "ログインエラー(ユーザ名かパスワードが違います)", 7 | "LANG_LOGOUT" : "ログアウト", 8 | "LANG_UNKNOWN_DIR" : "カレントディレクトリを定義できませんでした。連絡してください。", 9 | "LANG_DAYS" : "月,火,水,木,金,土,日", 10 | "LANG_RANGE" : "日,週,月", 11 | "LANG_MONTHS" : "0,1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月", 12 | "LANG_SITE" : "ウェブサイト", 13 | "LANG_GROUP" : "グループ", 14 | "LANG_BROWSER" : "ブラウザー", 15 | "LANG_ALL" : "全て", 16 | "LANG_UNKNOWN" : "その他/不明", 17 | "LANG_EXAMPLE_URL" : "ウェブページ", 18 | "LANG_LAYOUT" : "グループのレイアウト", 19 | "LANG_LAYOUT_FIXED" : "固定されたコンテンツ/メニュー", 20 | "LANG_LAYOUT_LIQUID" : "動的なコンテンツ/メニュー(自動的に調整されるスペース)", 21 | "LANG_LAYOUT_NONE" : "余白(非コンテンツ)動的", 22 | "LANG_LAYOUT_0" : "動的なコンテンツとメニュー", 23 | "LANG_LAYOUT_1" : "左に固定されたメニュ・動的コンテンツ", 24 | "LANG_LAYOUT_2" : "中央に固定されたコンテンツ(自動的に左右に余白)", 25 | "LANG_LAYOUT_3" : "左に固定されたコンテンツ(自動的に右に余白)", 26 | "LANG_LAYOUT_4" : "右に固定されたメニュー・動的コンテンツ", 27 | "LANG_LAYOUT_5" : "左右に固定されたメニュー・動的コンテンツ", 28 | "LANG_LAYOUT_6" : "右に固定されたコンテンツ(自動的に左に余白)", 29 | "LANG_LAYOUT_LEFT" : "左に固定された幅(pixels)", 30 | "LANG_LAYOUT_CENTER" : "中央に固定された幅(pixels)", 31 | "LANG_LAYOUT_RIGHT" : "右に固定された幅(pixels)", 32 | "LANG_SCREENSIZE" : "画面サイズ", 33 | "LANG_HEATMAP" : "ヒートマップと透過率", 34 | "LANG_LATEST_CHECK" : "アップグレード", 35 | "LANG_LATEST_KO" : "動的に最新バージョンを検索することができませんでした。現在ご利用のバージョン: %s 公式ホームページの最新バージョン:", 36 | "LANG_LATEST_OK" : "最新バージョンを利用しています。(%s)", 37 | "LANG_LATEST_NO" : "現在ご利用のバージョン(%s)は最新バージョン(%s)ではありません。公式ホームページから最新版をダウンロードできます。", 38 | "LANG_LOG_MY_CLICKS" : "Log my clicks?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "集計を正確にするために、自分自身のクリックを記録しないようにすることができます。\\nOK = 自分のクリックを記録する\\nCancel = 自分のクリックを記録しない", 40 | "LANG_JAVASCRIPT" : "分析するサイトに貼るJavascriptコード", 41 | "LANG_JAVASCRIPT_IMAGE" : "ClickHeatのロゴを表示させる:", 42 | "LANG_JAVASCRIPT_SHORT" : "コンパクトコード(3行のみ)", 43 | "LANG_JAVASCRIPT_QUOTA" : "ページ毎のクリック記録回数(指定された回数以上のクリックは記録されません。0 = 制限なし【3を推奨】)", 44 | "LANG_JAVASCRIPT_SITE" : "ウェブサイト名(許可された文字:A-Z, a-z, 0-9, アンダースコア【_】, ハイフン【-】, ドット【.】)", 45 | "LANG_JAVASCRIPT_GROUP" : "グループ名(類似的なページを単純に分析するため)", 46 | "LANG_JAVASCRIPT_GROUP0" : "キーワードを利用:", 47 | "LANG_JAVASCRIPT_GROUP1" : "許可された文字:A-Z, a-z, 0-9, アンダースコア【_】, ハイフン【-】, ドット【.】", 48 | "LANG_JAVASCRIPT_GROUP2" : "ページのタイトルを使用(非推奨)", 49 | "LANG_JAVASCRIPT_GROUP3" : "ウェブページのアドレスを使用:(非推奨)", 50 | "LANG_JAVASCRIPT_PASTE" : "以下のコードをページの最後にコピー&ペーストしてください。(</body>タグの前など):", 51 | "LANG_JAVASCRIPT_DEBUG" : "コードの設置が完了したらdebugclickheatパラメータをつけた状態でページを読み込むのを忘れないでください。(例えば設置したURLが http://www.site.com/index.html の場合、 http://www.site.com/index.html?debugclickheat を呼び出してください。Clickheatの動作確認のメッセージが見れるはずです。問題に遭遇したら気軽にお問い合わせください。", 52 | "LANG_NO_CLICK_BELOW" : "Leave below in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "不明なグループ _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "指定された期間のログはありません。(ブラウザー指定や画面サイズのフィルターをはずしてみてください。) _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Javascriptコードをウェブページに正確に埋め込みましたか?", 57 | "LANG_ERROR_FILE" : "ログファイルが開けませんでした。", 58 | "LANG_ERROR_SCREEN" : "非標準画面サイズ", 59 | "LANG_ERROR_LOADING" : "画像の生成中です。お待ちください…", 60 | "LANG_ERROR_FIXED" : "全ての幅が固定されています。そのような指定は無効です。上記のレイアウト幅を1つ以上変更してください。", 61 | "LANG_DEFAULT" : "デフォルト", 62 | "LANG_CHECKS" : "事前チェック", 63 | "LANG_CHECK_WRITABLE" : "設定ディレクトリへの書き込み権限", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP実行ユーザに設定ディレクトリへの書き込み権限がありません。", 65 | "LANG_CHECK_GD" : "GDライブラリ", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor()が利用できないので、綺麗な画像を生成することができません。GDライブラリがインストールされているか確認してください。", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha()が利用できないので、透過画像を生成することができません。(無視することもできますが、透過処理の利用は非常に推奨されます)", 68 | "LANG_CHECK_GD_PNG" : "imagepng()が利用できないので、PNGファイルを生成することができません。", 69 | "LANG_CHECKS_OK" : "次のステップ:設定", 70 | "LANG_CHECKS_KO" : "1つ以上の事前チェックに失敗しました。問題点を修正した上で、このページをリロードしてください。", 71 | "LANG_CONFIG" : "設定", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "ヒートマップレンダリング", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "メインページ", 74 | "LANG_CONFIG_HEADER_SECURITY" : "セキュリティ", 75 | "LANG_CONFIG_HEADER_LOGIN" : "ログインパラメータ", 76 | "LANG_CONFIG_LOGPATH" : "ログファイルディレクトリ", 77 | "LANG_CONFIG_LOGPATH_DIR" : "指定されたログファイルディレクトリが存在しません。作成してください。", 78 | "LANG_CONFIG_LOGPATH_KO" : "指定されたログファイルディレクトリには書き込み権限がありません。PHP実行ユーザに書き込み権限を与えてください。(例としてcronlog/rotatelogなどで特定のログを利用している場合はこの警告を無視してください。)", 79 | "LANG_CONFIG_CACHEPATH" : "一時ファイルディレクトリ", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "指定された一時ファイルディレクトリが存在しません。作成してください。", 81 | "LANG_CONFIG_CACHEPATH_KO" : "指定された一時ファイルディレクトリには書き込み権限がありません。PHP実行ユーザに書き込み権限を与えてください。", 82 | "LANG_CONFIG_REFERERS" : "クリックを記録するドメイン名の一覧(コンマ区切り)", 83 | "LANG_CONFIG_GROUPS" : "クリックを記録するグループの一覧(コンマ区切り)", 84 | "LANG_CONFIG_FILESIZE" : "グループごとの1日の最大ログファイルサイズ(KB)(1000回のクリックはおおよそ25KBです。0 = サイズ制限なし)", 85 | "LANG_CONFIG_CHECK" : "設定の確認", 86 | "LANG_CONFIG_MEMORY" : "メモリ制限(php.iniのデフォルトは %d MBです。%d ~ %d MBの値で入力してください。)【高い設定値には注意が必要です】", 87 | "LANG_CONFIG_MEMORY_KO" : "記載された範囲内で指定ください。", 88 | "LANG_CONFIG_STEP" : "クリックを指定したピクセルでグループ化(ヒートマップの表示が高速化します)", 89 | "LANG_CONFIG_STEP_KO" : "1ピクセル未満でのグループ化はできません。", 90 | "LANG_CONFIG_DOT" : "ヒートマップのドットサイズ(ピクセル数)", 91 | "LANG_CONFIG_DOT_KO" : "ドットサイズに 0 は指定できません。", 92 | "LANG_CONFIG_PALETTE" : "赤い四角がヒートマップに表示された場合は有効にしてください。", 93 | "LANG_CONFIG_HEATMAP" : "ヒートマップの表示", 94 | "LANG_CONFIG_FLASHES" : "<Flash> オブジェクトの非表示", 95 | "LANG_CONFIG_IFRAMES" : "<iframe> フレームの非表示", 96 | "LANG_CONFIG_YESTERDAY" : "初期ページに昨日の統計結果を表示する。", 97 | "LANG_CONFIG_ALPHA" : "透過レベル(0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "古い統計ファイルを自動的に削除するまでの日数(0 = 全てのファイルを保存【非推奨】)", 99 | "LANG_CONFIG_START" : "週の先頭", 100 | "LANG_CONFIG_START_M" : "月", 101 | "LANG_CONFIG_START_S" : "日", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "管理者のユーザ名", 103 | "LANG_CONFIG_ADMIN_PASS" : "管理者のパスワード(2箇所に入力)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "訪問者のユーザ名(空の場合はアカウントは無効)", 105 | "LANG_CONFIG_VIEWER_PASS" : "訪問者のパスワード(2箇所に入力)", 106 | "LANG_CONFIG_LOGIN" : "ユーザ名は 4 文字以上である必要があります。", 107 | "LANG_CONFIG_PASS" : "パスワードの項目が空です。", 108 | "LANG_CONFIG_MATCH" : "パスワードが一致しません。", 109 | "LANG_CONFIG_SAVE" : "設定の保存", 110 | "LANG_CLEANER_RUNNING" : "クリーニング作業中…", 111 | "LANG_CLEANER_RUN" : "クリーニング作業完了: %d 個のファイルと %d 個のディレクトリが削除されました。", 112 | "LANG_CANCEL" : "キャンセル", 113 | "LANG_UPGRADE" : "アップグレード", 114 | "LANG_UPGRADE_NEXT" : "変更を保存するには設定を確認してから保存を押してください。" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /libs/logo.big.png.php: -------------------------------------------------------------------------------- 1 | deep blue (rgB) => light blue (rGB) => green (rGb) => yellow (RGb) => red (Rgb) 24 | * 0 $colorLevels[0] $colorLevels[1] $colorLevels[2] $colorLevels[3] 128 25 | */ 26 | $colorLevels = array(0, 40, 45, 70, 100); 27 | $colors = array(); 28 | for ($i = 0; $i < 128; $i++) 29 | { 30 | /* Red */ 31 | if ($i < $colorLevels[0]) 32 | { 33 | $colors[$i][0] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 34 | } 35 | elseif ($i < $colorLevels[2]) 36 | { 37 | $colors[$i][0] = CLICKHEAT_LOW_COLOR; 38 | } 39 | elseif ($i < $colorLevels[3]) 40 | { 41 | $colors[$i][0] = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[2]) / ($colorLevels[3] - $colorLevels[2]); 42 | } 43 | else 44 | { 45 | $colors[$i][0] = CLICKHEAT_HIGH_COLOR; 46 | } 47 | /* Green */ 48 | if ($i < $colorLevels[0]) 49 | { 50 | $colors[$i][1] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_LOW_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 51 | } 52 | elseif ($i < $colorLevels[1]) 53 | { 54 | $colors[$i][1] = CLICKHEAT_LOW_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[0]) / ($colorLevels[1] - $colorLevels[0]); 55 | } 56 | elseif ($i < $colorLevels[3]) 57 | { 58 | $colors[$i][1] = CLICKHEAT_HIGH_COLOR; 59 | } 60 | else 61 | { 62 | $colors[$i][1] = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[3]) / (127 - $colorLevels[3]); 63 | } 64 | /* Blue */ 65 | if ($i < $colorLevels[0]) 66 | { 67 | $colors[$i][2] = CLICKHEAT_GREY_COLOR + (CLICKHEAT_HIGH_COLOR - CLICKHEAT_GREY_COLOR) * $i / $colorLevels[0]; 68 | } 69 | elseif ($i < $colorLevels[1]) 70 | { 71 | $colors[$i][2] = CLICKHEAT_HIGH_COLOR; 72 | } 73 | elseif ($i < $colorLevels[2]) 74 | { 75 | $colors[$i][2] = CLICKHEAT_HIGH_COLOR - (CLICKHEAT_HIGH_COLOR - CLICKHEAT_LOW_COLOR) * ($i - $colorLevels[1]) / ($colorLevels[2] - $colorLevels[1]); 76 | } 77 | else 78 | { 79 | $colors[$i][2] = CLICKHEAT_LOW_COLOR; 80 | } 81 | } 82 | 83 | $max = 12; 84 | $pixels = array( 85 | ' *** ', 86 | ' ***** ', 87 | ' ***** ', 88 | ' ****** ', 89 | ' ****** ', 90 | ' ******* ', 91 | ' ******* ', 92 | ' ******* ', 93 | ' ******** ', 94 | ' ********* ', 95 | ' ********** ', 96 | ' *********** ', 97 | ' ************* ', 98 | ' ************** ', 99 | ' **************** ', 100 | ' ****************** ', 101 | ' ******************** ', 102 | '*********************** ', 103 | '************************ ', 104 | '************************* ', 105 | '************************* ', 106 | '**************************', 107 | '**************************', 108 | ' *************************', 109 | ' *************************', 110 | ' ************************', 111 | ' ************************', 112 | ' ***********************', 113 | ' **********************', 114 | ' ******************** ', 115 | ' ******************* ', 116 | ' ****************** ', 117 | ' *************** ', 118 | ' ************** ', 119 | ' *********** ', 120 | ' ********* ', 121 | ' ****** ', 122 | ' ***** ', 123 | ' **** ', 124 | ' *** ', 125 | ' ** ', 126 | ' * '); 127 | $mx = strlen($pixels[0]); 128 | $my = count($pixels); 129 | $blur = imagecreatetruecolor($mx + 2, $my + 2); 130 | $white = imagecolorallocate($blur, 255, 255, 255); 131 | imagefill($blur, 0, 0, $white); 132 | for ($x = 0; $x < $mx; $x++) 133 | { 134 | for ($y = 0; $y < $my; $y++) 135 | { 136 | if ($pixels[$y][$x] === '*') 137 | { 138 | imagesetpixel($blur, $x + 1, $y + 1, $black); 139 | } 140 | } 141 | } 142 | 143 | $previous = $white; 144 | for ($i = 0; $i <= $max; $i++) 145 | { 146 | $color = imagecolorallocate($blur, $colors[ceil($i * 127 / $max)][0], $colors[ceil($i * 127 / $max)][1], $colors[ceil($i * 127 / $max)][2]); 147 | for ($x = 1; $x < $mx + 1; $x++) 148 | { 149 | for ($y = 1; $y < $my + 1; $y++) 150 | { 151 | if (imagecolorat($blur, $x, $y) === $black) 152 | { 153 | if ($i === $max || imagecolorat($blur, $x + 1, $y) === $previous || imagecolorat($blur, $x - 1, $y) === $previous || imagecolorat($blur, $x, $y + 1) === $previous || imagecolorat($blur, $x, $y - 1) === $previous) 154 | { 155 | imagesetpixel($blur, $x, $y, $color); 156 | } 157 | } 158 | } 159 | } 160 | $previous = $color; 161 | } 162 | $color = array(); 163 | $level = 1; 164 | for ($x = 1; $x < $mx + 1; $x++) 165 | { 166 | for ($y = 1; $y < $my + 1; $y++) 167 | { 168 | $color[0] = imagecolorsforindex($blur, imagecolorat($blur, $x, $y)); 169 | if ($color[0]['red'] + $color[0]['green'] + $color[0]['blue'] === 765) 170 | { 171 | $color[1] = imagecolorsforindex($blur, imagecolorat($blur, $x + 1, $y)); 172 | $color[2] = imagecolorsforindex($blur, imagecolorat($blur, $x - 1, $y)); 173 | $color[3] = imagecolorsforindex($blur, imagecolorat($blur, $x, $y + 1)); 174 | $color[4] = imagecolorsforindex($blur, imagecolorat($blur, $x, $y - 1)); 175 | $col = imagecolorallocate($img, ceil(($level * $color[0]['red'] + $color[1]['red'] + $color[2]['red'] + $color[3]['red'] + $color[4]['red']) / ($level + 4)), ceil(($level * $color[0]['green'] + $color[1]['green'] + $color[2]['green'] + $color[3]['green'] + $color[4]['green']) / ($level + 4)), ceil(($level * $color[0]['blue'] + $color[1]['blue'] + $color[2]['blue'] + $color[3]['blue'] + $color[4]['blue']) / ($level + 4))); 176 | } 177 | else 178 | { 179 | $col = imagecolorallocate($img, $color[0]['red'], $color[0]['green'], $color[0]['blue']); 180 | } 181 | imagesetpixel($img, $x, $y, $col); 182 | } 183 | } 184 | imagedestroy($blur); 185 | 186 | $string = 'ClickHeat'; 187 | $x = 28; 188 | $font = '/home/yvan/.ies4linux/ie5/drive_c/windows/fonts/verdana.ttf'; 189 | $size = 25; 190 | for ($i = 0, $max = strlen($string); $i < $max; $i++) 191 | { 192 | $info = imagettfbbox($size, 0, $font, $string[$i]); 193 | if (strtolower($string[$i]) === 'h') 194 | { 195 | $font = '/home/yvan/.ies4linux/ie5/drive_c/windows/fonts/verdanab.ttf'; 196 | } 197 | imagettftext($img, $size, 0, $x + 1, 36, $shadow, $font, $string[$i]); 198 | imagettftext($img, $size, 0, $x, 35, $blue, $font, $string[$i]); 199 | $x += $info[2] - $info[0] + 3; 200 | if (strtolower($string[$i]) === 'c' || strtolower($string[$i]) === 'k') 201 | { 202 | $x -= 2; 203 | } 204 | if (strtolower($string[$i]) === 'h') 205 | { 206 | $x += 4; 207 | } 208 | } 209 | 210 | header('Content-Type: image/png'); 211 | imagepng($img, './images/logo.big.png'); 212 | imagepng($img); 213 | imagedestroy($img); 214 | -------------------------------------------------------------------------------- /libs/languages/ja.php: -------------------------------------------------------------------------------- 1 | 非推奨)'); 61 | define('LANG_JAVASCRIPT_GROUP3', 'ウェブページのアドレスを使用:(非推奨)'); 62 | define('LANG_JAVASCRIPT_PASTE', '以下のコードをページの最後にコピー&ペーストしてください。(</body>タグの前など):'); 63 | define('LANG_JAVASCRIPT_DEBUG', 'コードの設置が完了したらdebugclickheatパラメータをつけた状態でページを読み込むのを忘れないでください。(例えば設置したURLが http://www.site.com/index.html の場合、 http://www.site.com/index.html?debugclickheat を呼び出してください。Clickheatの動作確認のメッセージが見れるはずです。問題に遭遇したら気軽にお問い合わせください。'); 64 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please 65 | define('LANG_ERROR_GROUP', '不明なグループ _JAVASCRIPT_'); 66 | define('LANG_ERROR_DATA', '指定された期間のログはありません。(ブラウザー指定や画面サイズのフィルターをはずしてみてください。) _JAVASCRIPT_'); 67 | define('LANG_ERROR_JAVASCRIPT', 'Javascriptコードをウェブページに正確に埋め込みましたか?'); 68 | define('LANG_ERROR_FILE', 'ログファイルが開けませんでした。'); 69 | define('LANG_ERROR_SCREEN', '非標準画面サイズ'); 70 | define('LANG_ERROR_LOADING', '画像の生成中です。お待ちください…'); 71 | define('LANG_ERROR_FIXED', '全ての幅が固定されています。そのような指定は無効です。上記のレイアウト幅を1つ以上変更してください。'); 72 | define('LANG_DEFAULT', 'デフォルト'); 73 | define('LANG_CHECKS', '事前チェック'); 74 | define('LANG_CHECK_WRITABLE', '設定ディレクトリへの書き込み権限'); 75 | define('LANG_CHECK_NOT_WRITABLE', 'PHP実行ユーザに設定ディレクトリへの書き込み権限がありません。'); 76 | define('LANG_CHECK_GD', 'GDライブラリ'); 77 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor()が利用できないので、綺麗な画像を生成することができません。GDライブラリがインストールされているか確認してください。'); 78 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha()が利用できないので、透過画像を生成することができません。(無視することもできますが、透過処理の利用は非常に推奨されます)'); 79 | define('LANG_CHECK_GD_PNG', 'imagepng()が利用できないので、PNGファイルを生成することができません。'); 80 | define('LANG_CHECKS_OK', '次のステップ:設定'); 81 | define('LANG_CHECKS_KO', '1つ以上の事前チェックに失敗しました。問題点を修正した上で、このページをリロードしてください。'); 82 | define('LANG_CONFIG', '設定'); 83 | define('LANG_CONFIG_HEADER_HEATMAP', 'ヒートマップレンダリング'); 84 | define('LANG_CONFIG_HEADER_DISPLAY', 'メインページ'); 85 | define('LANG_CONFIG_HEADER_SECURITY', 'セキュリティ'); 86 | define('LANG_CONFIG_HEADER_LOGIN', 'ログインパラメータ'); 87 | define('LANG_CONFIG_LOGPATH', 'ログファイルディレクトリ'); 88 | define('LANG_CONFIG_LOGPATH_DIR', '指定されたログファイルディレクトリが存在しません。作成してください。'); 89 | define('LANG_CONFIG_LOGPATH_KO', '指定されたログファイルディレクトリには書き込み権限がありません。PHP実行ユーザに書き込み権限を与えてください。(例としてcronlog/rotatelogなどで特定のログを利用している場合はこの警告を無視してください。)'); 90 | define('LANG_CONFIG_CACHEPATH', '一時ファイルディレクトリ'); 91 | define('LANG_CONFIG_CACHEPATH_DIR', '指定された一時ファイルディレクトリが存在しません。作成してください。'); 92 | define('LANG_CONFIG_CACHEPATH_KO', '指定された一時ファイルディレクトリには書き込み権限がありません。PHP実行ユーザに書き込み権限を与えてください。'); 93 | define('LANG_CONFIG_REFERERS', 'クリックを記録するドメイン名の一覧(コンマ区切り)'); 94 | define('LANG_CONFIG_GROUPS', 'クリックを記録するグループの一覧(コンマ区切り)'); 95 | define('LANG_CONFIG_FILESIZE', 'グループごとの1日の最大ログファイルサイズ(KB)(1000回のクリックはおおよそ25KBです。0 = サイズ制限なし)'); 96 | define('LANG_CONFIG_CHECK', '設定の確認'); 97 | define('LANG_CONFIG_MEMORY', 'メモリ制限(php.iniのデフォルトは %d MBです。%d ~ %d MBの値で入力してください。)【高い設定値には注意が必要です】'); 98 | define('LANG_CONFIG_MEMORY_KO', '記載された範囲内で指定ください。'); 99 | define('LANG_CONFIG_STEP', 'クリックを指定したピクセルでグループ化(ヒートマップの表示が高速化します)'); 100 | define('LANG_CONFIG_STEP_KO', '1ピクセル未満でのグループ化はできません。'); 101 | define('LANG_CONFIG_DOT', 'ヒートマップのドットサイズ(ピクセル数)'); 102 | define('LANG_CONFIG_DOT_KO', 'ドットサイズに 0 は指定できません。'); 103 | define('LANG_CONFIG_PALETTE', '赤い四角がヒートマップに表示された場合は有効にしてください。'); 104 | define('LANG_CONFIG_HEATMAP', 'ヒートマップの表示'); 105 | define('LANG_CONFIG_FLASHES', '<Flash> オブジェクトの非表示'); 106 | define('LANG_CONFIG_IFRAMES', '<iframe> フレームの非表示'); 107 | define('LANG_CONFIG_YESTERDAY', '初期ページに昨日の統計結果を表示する。'); 108 | define('LANG_CONFIG_ALPHA', '透過レベル(0 => 100)'); 109 | define('LANG_CONFIG_FLUSH', '古い統計ファイルを自動的に削除するまでの日数(0 = 全てのファイルを保存【非推奨】)'); 110 | define('LANG_CONFIG_START', '週の先頭'); 111 | define('LANG_CONFIG_START_M', '月'); 112 | define('LANG_CONFIG_START_S', '日'); 113 | define('LANG_CONFIG_ADMIN_LOGIN', '管理者のユーザ名'); 114 | define('LANG_CONFIG_ADMIN_PASS', '管理者のパスワード(2箇所に入力)'); 115 | define('LANG_CONFIG_VIEWER_LOGIN', '訪問者のユーザ名(空の場合はアカウントは無効)'); 116 | define('LANG_CONFIG_VIEWER_PASS', '訪問者のパスワード(2箇所に入力)'); 117 | define('LANG_CONFIG_LOGIN', 'ユーザ名は 4 文字以上である必要があります。'); 118 | define('LANG_CONFIG_PASS', 'パスワードの項目が空です。'); 119 | define('LANG_CONFIG_MATCH', 'パスワードが一致しません。'); 120 | define('LANG_CONFIG_SAVE', '設定の保存'); 121 | define('LANG_CLEANER_RUNNING', 'クリーニング作業中…'); 122 | define('LANG_CLEANER_RUN', 'クリーニング作業完了: %d 個のファイルと %d 個のディレクトリが削除されました。'); 123 | define('LANG_CANCEL', 'キャンセル'); 124 | define('LANG_UPGRADE', 'アップグレード'); 125 | define('LANG_UPGRADE_NEXT', '変更を保存するには設定を確認してから保存を押してください。'); 126 | ?> 127 | -------------------------------------------------------------------------------- /libs/click.php: -------------------------------------------------------------------------------- 1 | init(); 62 | } catch(\Piwik\Exception\NotYetInstalledException $e) { 63 | die($e->getMessage()); 64 | } 65 | $debug = (bool) TrackerConfig::getConfigValue('debug'); 66 | $PIWIK_TRACKER_DEBUG = $debug; // to enable debug log 67 | } 68 | else 69 | { 70 | define('CLICKHEAT_ROOT', './'); 71 | define('IS_PIWIK_MODULE', false); 72 | define('CLICKHEAT_CONFIG', CLICKHEAT_ROOT.'config/config.php'); 73 | } 74 | 75 | /* Include config file */ 76 | include CLICKHEAT_CONFIG; 77 | 78 | /* Check parameters */ 79 | if (!isset($clickheatConf) || !isset($_GET['x']) || !isset($_GET['y']) || !isset($_GET['w']) || !isset($_GET['g']) || !isset($_GET['s']) || !isset($_GET['b']) || !isset($_GET['c'])) 80 | { 81 | printDebug('ClickHeat: Parameters or config error'); 82 | } 83 | 84 | /* Check referers */ 85 | if (is_array($clickheatConf['referers'])) 86 | { 87 | if (!isset($_SERVER['HTTP_REFERER'])) 88 | { 89 | printDebug('ClickHeat: No domain in referer'); 90 | } 91 | $referer = parse_url($_SERVER['HTTP_REFERER']); 92 | if (!in_array($referer['host'], $clickheatConf['referers'])) 93 | { 94 | printDebug('ClickHeat: Forbidden domain ('.$referer['host'].'), change or remove security settings in the /config panel to allow this one'); 95 | } 96 | } 97 | 98 | function cleanStrings($str) 99 | { 100 | if (function_exists('mb_strtolower')) 101 | { 102 | $str = mb_strtolower($str, 'utf-8'); 103 | } 104 | else 105 | { 106 | $str = strtolower($str); 107 | } 108 | /* strtr() correctly handles multibyte */ 109 | $str = strtr($str, array('à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'a', 'ā' => 'a', 'ă' => 'a', 'ą' => 'a', 'ç' => 'c', 'ć' => 'c', 'ĉ' => 'c', 'ċ' => 'c', 'č' => 'c', 'ď' => 'd', 'đ' => 'd', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ē' => 'e', 'ĕ' => 'e', 'ė' => 'e', 'ę' => 'e', 'ě' => 'e', 'ğ' => 'g', 'ġ' => 'g', 'ģ' => 'g', 'ĥ' => 'h', 'ħ' => 'h', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ĩ' => 'i', 'ī' => 'i', 'ĭ' => 'i', 'į' => 'i', 'ı' => 'i', 'ij' => 'i', 'ĵ' => 'j', 'ķ' => 'k', 'ĸ' => 'k', 'ĺ' => 'l', 'ļ' => 'l', 'ľ' => 'l', 'ŀ' => 'l', 'ł' => 'l', 'ñ' => 'n', 'ń' => 'n', 'ņ' => 'n', 'ň' => 'n', 'ʼn' => 'n', 'ŋ' => 'n', 'ð' => 'o', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ō' => 'o', 'ŏ' => 'o', 'ő' => 'o', 'œ' => 'o', 'ø' => 'o', 'ŕ' => 'r', 'ř' => 'r', 'ś' => 's', 'ŝ' => 's', 'ş' => 's', 'š' => 's', 'ſ' => 's', 'ţ' => 't', 'ť' => 't', 'ŧ' => 't', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ũ' => 'u', 'ū' => 'u', 'ŭ' => 'u', 'ů' => 'u', 'ű' => 'u', 'ų' => 'u', 'ŵ' => 'w', 'ý' => 'y', 'ÿ' => 'y', 'ŷ' => 'y', 'ź' => 'z', 'ż' => 'z', 'ž' => 'z')); 110 | return substr(preg_replace('/[^a-z_0-9\-]+/', '.', $str), 0, 250); 111 | } 112 | /* isIpInRange have been removed on Piwik 2.12.0. */ 113 | function isIpInRange($ip, $ipRanges) 114 | { 115 | $ip = \Piwik\Network\IP::fromBinaryIP($ip); 116 | return $ip->isInRanges($ipRanges); 117 | } 118 | 119 | /* Check if group, site and browser are letters-only */ 120 | $site = cleanStrings($_GET['s']); 121 | $group = cleanStrings($_GET['g']); 122 | if ($group === '') 123 | { 124 | printDebug('ClickHeat: No group specified (clickHeatGroup empty)'); 125 | } 126 | /* Check group */ 127 | if (is_array($clickheatConf['groups'])) 128 | { 129 | if (!in_array($group, $clickheatConf['groups'])) 130 | { 131 | printDebug('ClickHeat: Forbidden group ('.$group.'), change or remove security settings in the config panel to allow this one'); 132 | } 133 | } 134 | $browser = preg_replace('/[^a-z]+/', '', strtolower($_GET['b'])); 135 | if ($browser === '') 136 | { 137 | printDebug('ClickHeat: Browser empty'); 138 | } 139 | $final = ltrim($site.','.$group, ','); 140 | /* Limit file size */ 141 | if ($clickheatConf['filesize'] !== 0) 142 | { 143 | if (file_exists($clickheatConf['logPath'].$final.'/'.date('Y-m-d').'.log') && filesize($clickheatConf['logPath'].$final.'/'.date('Y-m-d').'.log') > $clickheatConf['filesize']) 144 | { 145 | printDebug('ClickHeat: Filesize reached limit'); 146 | } 147 | } 148 | /* Logging the click */ 149 | $f = fopen($clickheatConf['logPath'].$final.'/'.date('Y-m-d').'.log', 'a'); 150 | if (!is_resource($f)) 151 | { 152 | /* Can't open the log, let's try to create the directory */ 153 | if (!is_dir(dirname($clickheatConf['logPath']))) 154 | { 155 | if (!mkdir(dirname($clickheatConf['logPath']))) 156 | { 157 | printDebug('ClickHeat: Cannot create log directory: '.$clickheatConf['logPath']); 158 | } 159 | } 160 | if (!is_dir($clickheatConf['logPath'].$final)) 161 | { 162 | if (!mkdir($clickheatConf['logPath'].$final)) 163 | { 164 | printDebug('ClickHeat: Cannot create log directory: '.$clickheatConf['logPath'].$final); 165 | } 166 | if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] !== '') 167 | { 168 | $f = fopen($clickheatConf['logPath'].$final.'/url.txt', 'w'); 169 | fputs($f, str_replace('debugclickheat', '', $_SERVER['HTTP_REFERER']).'>0>0>0'); 170 | fclose($f); 171 | } 172 | } 173 | $f = fopen($clickheatConf['logPath'].$final.'/'.date('Y-m-d').'.log', 'a'); 174 | } 175 | if (is_resource($f)) 176 | { 177 | $logMe = true; 178 | if (isset($_COOKIE['clickheat-admin'])) 179 | { 180 | printDebug("ClickHeat: OK, but click not logged as you selected it in the admin panel (\"Log my clicks/Enregistrer mes clics\")"); 181 | $logMe = false; 182 | } 183 | elseif (IS_PIWIK_MODULE === true) 184 | { 185 | $site = (string) (int) $site; // prevents path injection 186 | if (file_exists(PIWIK_INCLUDE_PATH.'/tmp/cache/tracker/'.$site.'.php')) 187 | { 188 | require_once PIWIK_INCLUDE_PATH.'/tmp/cache/tracker/'.$site.'.php'; 189 | if (isset($content['excluded_ips'])) 190 | { 191 | $ip = IPUtils::stringToBinaryIP(\Piwik\Network\IP::fromStringIP(IP::getIpFromHeader())); 192 | if (isIpInRange($ip, $content['excluded_ips']) === true) 193 | { 194 | printDebug('OK, but click not logged as you prevent this IP to be tracked in Piwik\'s configuration'); 195 | $logMe = false; 196 | } 197 | } 198 | } 199 | } 200 | if ($logMe === true) 201 | { 202 | printDebug('ClickHeat: OK'); 203 | fputs($f, ((int) $_GET['x']).'|'.((int) $_GET['y']).'|'.((int) $_GET['w']).'|'.$browser.'|'.((int) $_GET['c'])."\n"); 204 | } 205 | fclose($f); 206 | } 207 | else 208 | { 209 | printDebug('ClickHeat: KO, file not writable'); 210 | } 211 | -------------------------------------------------------------------------------- /lang/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "User", 4 | "LANG_PASSWORD" : "Password", 5 | "LANG_LOGIN" : "Login", 6 | "LANG_LOGIN_ERROR" : "Login error, wrong user or password", 7 | "LANG_LOGOUT" : "Logout", 8 | "LANG_UNKNOWN_DIR" : "Can't define current directory, please contact us", 9 | "LANG_DAYS" : "M,T,W,T,F,S,S", 10 | "LANG_RANGE" : "Day,Week,Month", 11 | "LANG_MONTHS" : "0,January,February,March,April,May,June,July,August,September,October,November,December", 12 | "LANG_SITE" : "Website", 13 | "LANG_GROUP" : "Group", 14 | "LANG_BROWSER" : "Browser", 15 | "LANG_ALL" : "All", 16 | "LANG_UNKNOWN" : "Other/unknown", 17 | "LANG_EXAMPLE_URL" : "Webpage", 18 | "LANG_LAYOUT" : "Group's layout", 19 | "LANG_LAYOUT_FIXED" : "Fixed content/menu", 20 | "LANG_LAYOUT_LIQUID" : "Liquid content/menu (automatic adjusting to available space)", 21 | "LANG_LAYOUT_NONE" : "Margin (no content), liquid", 22 | "LANG_LAYOUT_0" : "Liquid content and menu", 23 | "LANG_LAYOUT_1" : "Fixed left menu, liquid content", 24 | "LANG_LAYOUT_2" : "Fixed centered content (automatic left and right margins)", 25 | "LANG_LAYOUT_3" : "Fixed content stuck to the left (automatic right margin)", 26 | "LANG_LAYOUT_4" : "Fixed right menu, liquid content", 27 | "LANG_LAYOUT_5" : "Fixed left and right menus, liquid content", 28 | "LANG_LAYOUT_6" : "Fixed content stuck to the right (automatic left margin)", 29 | "LANG_LAYOUT_LEFT" : "Fixed left width (pixels)", 30 | "LANG_LAYOUT_CENTER" : "Fixed central width (pixels)", 31 | "LANG_LAYOUT_RIGHT" : "Fixed right width (pixels)", 32 | "LANG_SCREENSIZE" : "Screen size", 33 | "LANG_HEATMAP" : "Heatmap and its transparency", 34 | "LANG_LATEST_CHECK" : "Upgrade", 35 | "LANG_LATEST_KO" : "Can't find dynamically the latest available version, yours is %s, the latest one read directly from Dugwood's website is", 36 | "LANG_LATEST_OK" : "You have the latest available version (%s)", 37 | "LANG_LATEST_NO" : "Your version (%s) isn't the latest available one (%s). You can download the latest one on our website:", 38 | "LANG_LOG_MY_CLICKS" : "Log my clicks?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "In order to avoid pollution of your statistics,\\nyou can choose not to log your own clicks\\n\\nOK = log my clicks\\nCancel = don't log my clicks", 40 | "LANG_JAVASCRIPT" : "Javascript code to be pasted on pages you want to study", 41 | "LANG_JAVASCRIPT_IMAGE" : "Show ClickHeat logo on the studied page: ", 42 | "LANG_JAVASCRIPT_SHORT" : "Compact code (3 lines only)", 43 | "LANG_JAVASCRIPT_QUOTA" : "Maximum clicks per page and visitor, next clicks won't be saved (0 = no limit, 3 is a good choice)", 44 | "LANG_JAVASCRIPT_SITE" : "Website name (allowed characters: A-Z, a-z, 0-9, underscore, hyphen, dot)", 45 | "LANG_JAVASCRIPT_GROUP" : "Group name, to group similar pages for a simpler analysis", 46 | "LANG_JAVASCRIPT_GROUP0" : "use a keyword", 47 | "LANG_JAVASCRIPT_GROUP1" : "allowed characters: A-Z, a-z, 0-9, underscore, hyphen, dot", 48 | "LANG_JAVASCRIPT_GROUP2" : "use webpage's title (not recommended)", 49 | "LANG_JAVASCRIPT_GROUP3" : "use webpage's URL (not recommended)", 50 | "LANG_JAVASCRIPT_PASTE" : "Copy and paste the code below on your pages, just before the end of the page (before </body> tag):", 51 | "LANG_JAVASCRIPT_DEBUG" : "Once the code pasted on your pages, don't forget to test if the code works correctly, by calling your page with the parameter debugclickheat. For example for http://www.site.com/index.html call http://www.site.com/index.html?debugclickheat. You should see a message showing the state of Clickheat. If you encounter any problem, feel free to contact us", 52 | "LANG_NO_CLICK_BELOW" : "Leave below this line in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "Unknown group. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "No logs for the selected period (first think removing filters: browser, screensize). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Did you correctly installed Javascript code on your webpages?", 57 | "LANG_ERROR_FILE" : "Can't open log file", 58 | "LANG_ERROR_SCREEN" : "Non-standard screen size", 59 | "LANG_ERROR_LOADING" : "Generating image, please wait...", 60 | "LANG_ERROR_FIXED" : "All widths are fixed, that is not possible. Please change one of your layout width above.", 61 | "LANG_DEFAULT" : "default", 62 | "LANG_CHECKS" : "Preliminary checks", 63 | "LANG_CHECK_WRITABLE" : "Write permissions in configuration directory", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP hasn't got write permission in the configuration directory", 65 | "LANG_CHECK_GD" : "GD graphic library", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor() unavailable, can't create images (with good quality), check that GD is installed", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha() unavailable, can't create transparent images (you can ignore this, but transparency is really recommended)", 68 | "LANG_CHECK_GD_PNG" : "imagepng() unavailable, can't create PNG images, sorry", 69 | "LANG_CHECKS_OK" : "Next step: configuration", 70 | "LANG_CHECKS_KO" : "One or more tests have failed. Please correct problems and refresh this page.", 71 | "LANG_CONFIG" : "Configuration", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "Heatmap rendering", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "Main display", 74 | "LANG_CONFIG_HEADER_SECURITY" : "Security", 75 | "LANG_CONFIG_HEADER_LOGIN" : "Login parameters", 76 | "LANG_CONFIG_LOGPATH" : "Logfiles' directory", 77 | "LANG_CONFIG_LOGPATH_DIR" : "Logfiles directory doesn't exist. Please create it", 78 | "LANG_CONFIG_LOGPATH_KO" : "Logfiles directory doesn't have write permissions, please give it write permission for PHP user", 79 | "LANG_CONFIG_CACHEPATH" : "Temporary files directory", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "Temporary files directory doesn't exist. Please create it", 81 | "LANG_CONFIG_CACHEPATH_KO" : "Temporary files directory doesn't have write permissions, please give it write permission for PHP user", 82 | "LANG_CONFIG_REFERERS" : "Domain names (separated by commas) allowed to log clicks on this server", 83 | "LANG_CONFIG_GROUPS" : "Group names (separated by commas) allowed to log clicks on this server", 84 | "LANG_CONFIG_FILESIZE" : "Maximum logfile size (in KB) of a group over a day (1000 clicks are about 25KB, 0 = no size limit)", 85 | "LANG_CONFIG_CHECK" : "Check configuration", 86 | "LANG_CONFIG_MEMORY" : "Memory limit (default php.ini value: %dMB, limits: from %d to %dMB, but be careful with high values)", 87 | "LANG_CONFIG_MEMORY_KO" : "please stay in the specified range", 88 | "LANG_CONFIG_STEP" : "Clicks grouping by X*X pixels' zones (speed up display of heatmaps)", 89 | "LANG_CONFIG_STEP_KO" : "zones can't be under 1x1 pixels", 90 | "LANG_CONFIG_DOT" : "Heatmaps' dot size (pixels)", 91 | "LANG_CONFIG_DOT_KO" : "dot size can't be zero", 92 | "LANG_CONFIG_PALETTE" : "If you see red squares on heatmaps check this box", 93 | "LANG_CONFIG_HEATMAP" : "Show heatmap (rather than clicks' map)", 94 | "LANG_CONFIG_FLASHES" : "Hide <Flash> objects", 95 | "LANG_CONFIG_IFRAMES" : "Hide <iframe> frames", 96 | "LANG_CONFIG_YESTERDAY" : "Show yesterday statistics at start (rather than today)", 97 | "LANG_CONFIG_ALPHA" : "Transparency level (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "Automatic flush of statistics older than X days (0 = keep all files, not recommended)", 99 | "LANG_CONFIG_START" : "First day of week", 100 | "LANG_CONFIG_START_M" : "Monday", 101 | "LANG_CONFIG_START_S" : "Sunday", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "Administrator's identifier", 103 | "LANG_CONFIG_ADMIN_PASS" : "Administrator's password (enter it twice)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "Visitor's identifier (if empty, account is disabled)", 105 | "LANG_CONFIG_VIEWER_PASS" : "Visitor's password (enter it twice)", 106 | "LANG_CONFIG_LOGIN" : "identifier must be at least 4 characters", 107 | "LANG_CONFIG_PASS" : "password is empty", 108 | "LANG_CONFIG_MATCH" : "passwords don't match", 109 | "LANG_CONFIG_SAVE" : "Save configuration", 110 | "LANG_CLEANER_RUNNING" : "Cleaning in progress...", 111 | "LANG_CLEANER_RUN" : "Cleaning finished: %d files and %d directories have been deleted", 112 | "LANG_CANCEL" : "Cancel", 113 | "LANG_UPGRADE" : "Upgrade", 114 | "LANG_UPGRADE_NEXT" : "Check your configuration, then save it to finish upgrade" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /libs/languages/en.php: -------------------------------------------------------------------------------- 1 | not recommended)'); 61 | define('LANG_JAVASCRIPT_GROUP3', 'use webpage\'s URL (not recommended)'); 62 | define('LANG_JAVASCRIPT_PASTE', 'Copy and paste the code below on your pages, just before the end of the page (before </body> tag):'); 63 | define('LANG_JAVASCRIPT_DEBUG', 'Once the code pasted on your pages, don\'t forget to test if the code works correctly, by calling your page with the parameter debugclickheat. For example for http://www.site.com/index.html call http://www.site.com/index.html?debugclickheat. You should see a message showing the state of Clickheat. If you encounter any problem, feel free to contact us'); 64 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please 65 | define('LANG_ERROR_GROUP', 'Unknown group. _JAVASCRIPT_'); 66 | define('LANG_ERROR_DATA', 'No logs for the selected period (first think removing filters: browser, screensize). _JAVASCRIPT_'); 67 | define('LANG_ERROR_JAVASCRIPT', 'Did you correctly installed Javascript code on your webpages?'); 68 | define('LANG_ERROR_FILE', 'Can\'t open log file'); 69 | define('LANG_ERROR_SCREEN', 'Non-standard screen size'); 70 | define('LANG_ERROR_LOADING', 'Generating image, please wait...'); 71 | define('LANG_ERROR_FIXED', 'All widths are fixed, that is not possible. Please change one of your layout width above.'); 72 | define('LANG_DEFAULT', 'default'); 73 | define('LANG_CHECKS', 'Preliminary checks'); 74 | define('LANG_CHECK_WRITABLE', 'Write permissions in configuration directory'); 75 | define('LANG_CHECK_NOT_WRITABLE', 'PHP hasn\'t got write permission in the configuration directory'); 76 | define('LANG_CHECK_GD', 'GD graphic library'); 77 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor() unavailable, can\'t create images (with good quality), check that GD is installed'); 78 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha() unavailable, can\'t create transparent images (you can ignore this, but transparency is really recommended)'); 79 | define('LANG_CHECK_GD_PNG', 'imagepng() unavailable, can\'t create PNG images, sorry'); 80 | define('LANG_CHECKS_OK', 'Next step: configuration'); 81 | define('LANG_CHECKS_KO', 'One or more tests have failed. Please correct problems and refresh this page.'); 82 | define('LANG_CONFIG', 'Configuration'); 83 | define('LANG_CONFIG_HEADER_HEATMAP', 'Heatmap rendering'); 84 | define('LANG_CONFIG_HEADER_DISPLAY', 'Main display'); 85 | define('LANG_CONFIG_HEADER_SECURITY', 'Security'); 86 | define('LANG_CONFIG_HEADER_LOGIN', 'Login parameters'); 87 | define('LANG_CONFIG_LOGPATH', 'Logfiles\' directory'); 88 | define('LANG_CONFIG_LOGPATH_DIR', 'Logfiles directory doesn\'t exist. Please create it'); 89 | define('LANG_CONFIG_LOGPATH_KO', 'Logfiles directory doesn\'t have write permissions, please give it write permission for PHP user'); 90 | define('LANG_CONFIG_CACHEPATH', 'Temporary files directory'); 91 | define('LANG_CONFIG_CACHEPATH_DIR', 'Temporary files directory doesn\'t exist. Please create it'); 92 | define('LANG_CONFIG_CACHEPATH_KO', 'Temporary files directory doesn\'t have write permissions, please give it write permission for PHP user'); 93 | define('LANG_CONFIG_REFERERS', 'Domain names (separated by commas) allowed to log clicks on this server'); 94 | define('LANG_CONFIG_GROUPS', 'Group names (separated by commas) allowed to log clicks on this server'); 95 | define('LANG_CONFIG_FILESIZE', 'Maximum logfile size (in KB) of a group over a day (1000 clicks are about 25KB, 0 = no size limit)'); 96 | define('LANG_CONFIG_CHECK', 'Check configuration'); 97 | define('LANG_CONFIG_MEMORY', 'Memory limit (default php.ini value: %dMB, limits: from %d to %dMB, but be careful with high values)'); 98 | define('LANG_CONFIG_MEMORY_KO', 'please stay in the specified range'); 99 | define('LANG_CONFIG_STEP', 'Clicks grouping by X*X pixels\' zones (speed up display of heatmaps)'); 100 | define('LANG_CONFIG_STEP_KO', 'zones can\'t be under 1x1 pixels'); 101 | define('LANG_CONFIG_DOT', 'Heatmaps\' dot size (pixels)'); 102 | define('LANG_CONFIG_DOT_KO', 'dot size can\'t be zero'); 103 | define('LANG_CONFIG_PALETTE', 'If you see red squares on heatmaps check this box'); 104 | define('LANG_CONFIG_HEATMAP', 'Show heatmap (rather than clicks\' map)'); 105 | define('LANG_CONFIG_FLASHES', 'Hide <Flash> objects'); 106 | define('LANG_CONFIG_IFRAMES', 'Hide <iframe> frames'); 107 | define('LANG_CONFIG_YESTERDAY', 'Show yesterday statistics at start (rather than today)'); 108 | define('LANG_CONFIG_ALPHA', 'Transparency level (0 => 100)'); 109 | define('LANG_CONFIG_FLUSH', 'Automatic flush of statistics older than X days (0 = keep all files, not recommended)'); 110 | define('LANG_CONFIG_START', 'First day of week'); 111 | define('LANG_CONFIG_START_M', 'Monday'); 112 | define('LANG_CONFIG_START_S', 'Sunday'); 113 | define('LANG_CONFIG_ADMIN_LOGIN', 'Administrator\'s identifier'); 114 | define('LANG_CONFIG_ADMIN_PASS', 'Administrator\'s password (enter it twice)'); 115 | define('LANG_CONFIG_VIEWER_LOGIN', 'Visitor\'s identifier (if empty, account is disabled)'); 116 | define('LANG_CONFIG_VIEWER_PASS', 'Visitor\'s password (enter it twice)'); 117 | define('LANG_CONFIG_LOGIN', 'identifier must be at least 4 characters'); 118 | define('LANG_CONFIG_PASS', 'password is empty'); 119 | define('LANG_CONFIG_MATCH', 'passwords don\'t match'); 120 | define('LANG_CONFIG_SAVE', 'Save configuration'); 121 | define('LANG_CLEANER_RUNNING', 'Cleaning in progress...'); 122 | define('LANG_CLEANER_RUN', 'Cleaning finished: %d files and %d directories have been deleted'); 123 | define('LANG_CANCEL', 'Cancel'); 124 | define('LANG_UPGRADE', 'Upgrade'); 125 | define('LANG_UPGRADE_NEXT', 'Check your configuration, then save it to finish upgrade'); 126 | ?> 127 | -------------------------------------------------------------------------------- /lang/tr.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "Kullanıcı Adı", 4 | "LANG_PASSWORD" : "Şifre", 5 | "LANG_LOGIN" : "Oturum aç", 6 | "LANG_LOGIN_ERROR" : "Oturum açma hatası, wrong user or password", 7 | "LANG_LOGOUT" : "Çıkış", 8 | "LANG_UNKNOWN_DIR" : "Belirtilen dizine ulaşılamıyor, lütfen daha sonra tekrar deneyin.", 9 | "LANG_DAYS" : "P,S,Ç,P,C,C,P", 10 | "LANG_RANGE" : "Gün,Hafta,Ay", 11 | "LANG_MONTHS" : "0, Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz, Ağustos, Eylül, Ekim, Kasım, Aralık", 12 | "LANG_SITE" : "Website", 13 | "LANG_GROUP" : "Grup", 14 | "LANG_BROWSER" : "Tarayıcı", 15 | "LANG_ALL" : "Hepsi", 16 | "LANG_UNKNOWN" : "Diğer/bilinmeyen", 17 | "LANG_EXAMPLE_URL" : "Web sayfası", 18 | "LANG_LAYOUT" : "Grup düzeni", 19 | "LANG_LAYOUT_FIXED" : "Sabit içerik/menü", 20 | "LANG_LAYOUT_LIQUID" : "Akıcı içerik/menü (mevcut alan otomatik olarak ayarlanır)", 21 | "LANG_LAYOUT_NONE" : "Kenarlık (içerik yok), akıcı", 22 | "LANG_LAYOUT_0" : "Akıcı içerik ve menü", 23 | "LANG_LAYOUT_1" : "Sabit sol menü, akıcı içerik", 24 | "LANG_LAYOUT_2" : "Sabit ortalanmış içerik (kenar boşlukları otomatik olarak belirlenir)", 25 | "LANG_LAYOUT_3" : "Sola yaslanmış sabit içerik(sağdan otomatik boşluk bırakır)", 26 | "LANG_LAYOUT_4" : "Sabit sağ menü, akıcı içerik", 27 | "LANG_LAYOUT_5" : "Sabit sağ ve sol menuler, akıcı içerik", 28 | "LANG_LAYOUT_6" : "Sağa yaslanmış sabit içerik(soldan otomatik boşluk bırakır)", 29 | "LANG_LAYOUT_LEFT" : "Sabit sol boşluk (pixel olarak)", 30 | "LANG_LAYOUT_CENTER" : "Sabit ortalanmış boşluk (pixel olarak)", 31 | "LANG_LAYOUT_RIGHT" : "Sabit sağ boşluk (pixel olarak)", 32 | "LANG_SCREENSIZE" : "Ekran çözünürlüğü", 33 | "LANG_HEATMAP" : "Sıcaklık haritası ve şeffaflık değeri", 34 | "LANG_LATEST_CHECK" : "Güncelle", 35 | "LANG_LATEST_KO" : "Güncel sürüm bilgisine ulaşılamıyor, kullandığınız sürüm %s, güncel sürüm bilgisine Dugwood sitesinden ulaşabilirsiniz.", 36 | "LANG_LATEST_OK" : "En güncel sürümü kullanıyorsunuz (%s)", 37 | "LANG_LATEST_NO" : "Kullanmış olduğunuz (%s) sürümünden daha güncel bir sürüm (%s) mevcut. Güncel sürümü sitemiz üzerinden indirebilirsiniz:", 38 | "LANG_LOG_MY_CLICKS" : "Tıklarınız kayıt altına alınsın mı?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "İstatistiklerinizin daha temiz olması için\\n tıklarınızın kayıt altına alınmaması önerilir. \\n\\nTamam = tıklarımı kayıt altına al\\nİptal = tıklarımı kayıt altına alma", 40 | "LANG_JAVASCRIPT" : "Javascript kodu, kayıt altına alıncak sayfalara eklenmiş olmalıdır", 41 | "LANG_JAVASCRIPT_IMAGE" : "Sitenizde ClickHeat logosu görünsün: ", 42 | "LANG_JAVASCRIPT_SHORT" : "Kısa kod (sadece 3 satır)", 43 | "LANG_JAVASCRIPT_QUOTA" : "En fazla tık sayısı, daha fazlası kayıt altına alınmayacaktır (0 = limitsiz, 3 iyi bir seçim)", 44 | "LANG_JAVASCRIPT_SITE" : "Website adı (izin verilen karakterler: A-Z, a-z, 0-9, alt çizgi, boşluk, nokta)", 45 | "LANG_JAVASCRIPT_GROUP" : "Grup adı, benzer sayfaları gruplamak için", 46 | "LANG_JAVASCRIPT_GROUP0" : "bir anahtar kelime kullan", 47 | "LANG_JAVASCRIPT_GROUP1" : "izin verilen karakterler: A-Z, a-z, 0-9, alt çizgi, boşluk, nokta", 48 | "LANG_JAVASCRIPT_GROUP2" : "sayfa başlığı kullan (önerilmez)", 49 | "LANG_JAVASCRIPT_GROUP3" : "site adresi kullan (önerilmez)", 50 | "LANG_JAVASCRIPT_PASTE" : "Alt kısımda görünen kodu kopyalayıp kayıt altına almak istediğiniz sayfaların bitiminden önce ekleyin (</body> komutundan önce):", 51 | "LANG_JAVASCRIPT_DEBUG" : "Size verilen kodu sitenize ekleme işleminin ardından kodun çalıp çalışmadığını debugclickheat komutu ile test edin. Örnek: http://www.site.com/index.html sitesine kodu ekledi iseniz şu adrese ulaşın http://www.site.com/index.html?debugclickheat. Clickheat tarafından oluşturlan bir ileti görmelisiniz. Bir hata ile karşılaşırsanız lütfen bizimle iletişime geçin", 52 | "LANG_NO_CLICK_BELOW" : "Leave below in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "Bilinmeyen grup. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "Seçilen süreçte kayıt bulunamadı (filtreleri kaldırmayı deneyin: tarayıcı, ekran boyutu). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Kodu sayfanıza doğru bir şekilde eklediniz mi?", 57 | "LANG_ERROR_FILE" : "Kayıt dosyası açılamıyor", 58 | "LANG_ERROR_SCREEN" : "Standard olmayan ekran boyutu", 59 | "LANG_ERROR_LOADING" : "Görsel oluşturuluyor, lütfen bekleyin...", 60 | "LANG_ERROR_FIXED" : "Tüm genişlikler sabit, bu mümkün değil. Lütfen yukarıda belirlediğiniz düzeni değiştirin.", 61 | "LANG_DEFAULT" : "varsayılan", 62 | "LANG_CHECKS" : "İlk kontrol", 63 | "LANG_CHECK_WRITABLE" : "Ayar dizini yazma izinleri", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP ayar dizinine yazma iznine sahip değil", 65 | "LANG_CHECK_GD" : "GD görsel kütüphane", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor() mevcut değil, görseller oluşturulamıyor (iyi kalite ile), GD kütüphanesinin doğru yüklenmiş olduğuna dikkat edin", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha() mevcut değil, şeffaf görseller oluşturulamıyor (bunu önemsemeyin ancak şeffaflık kullanmanız önerilir)", 68 | "LANG_CHECK_GD_PNG" : "imagepng() mevcut değil, PNG görseller oluşturulamıyor, üzgünüz", 69 | "LANG_CHECKS_OK" : "Sonraki adım: ayar", 70 | "LANG_CHECKS_KO" : "Bir veya daha fazla test başarısız oldu. Lütfen hataları giderin ve sayfayı yeniden açın.", 71 | "LANG_CONFIG" : "Ayar", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "Sıcaklık haritası(Heatmap) yorumlanıyor", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "Genel görünüm", 74 | "LANG_CONFIG_HEADER_SECURITY" : "Güvenlik", 75 | "LANG_CONFIG_HEADER_LOGIN" : "Oturum açma değişkenleri", 76 | "LANG_CONFIG_LOGPATH" : "Logfiles' dizini", 77 | "LANG_CONFIG_LOGPATH_DIR" : "Kayıt dosyaları dizini mevcut değil. Lütfen oluşturun.", 78 | "LANG_CONFIG_LOGPATH_KO" : "Kayıt dosyaları dizinine yazma iznine sahip değilsiniz, lütfen yazma izni verin", 79 | "LANG_CONFIG_CACHEPATH" : "Geçici dosya dizini", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "Geçici dosya dizini mevcut değil. Lütfen oluşturun", 81 | "LANG_CONFIG_CACHEPATH_KO" : "Geçici dosya dizine yazma iznine sahip değilsiniz, lütfen yazma izni verin.", 82 | "LANG_CONFIG_REFERERS" : "Bu sunucuda kayıt altına alınacak alan adları (virgül ile ayrılmış)", 83 | "LANG_CONFIG_GROUPS" : "Bu sunucuda kayıt altına alınacak grup adları (virgül ile ayrılmış)", 84 | "LANG_CONFIG_FILESIZE" : "Bir grupta tutulacak olan kayıtların azami kayıt dosyası boyutu (KB olarak) (1000 tık yaklaşık 25KB, 0 = sınırsız)", 85 | "LANG_CONFIG_CHECK" : "Ayarları denetle", 86 | "LANG_CONFIG_MEMORY" : "Hafıza sınırı (varsayılan php.ini değeri: %dMB, sınırlar: %d dan %dMB a kadar, fakat yüksek değerlere dikkat edin.)", 87 | "LANG_CONFIG_MEMORY_KO" : "lütfen belirtilen aralığı kullanın", 88 | "LANG_CONFIG_STEP" : "Tıklamalar X*X pixele göre gruplandırılıyor' alan (Sıcaklık haritası(Heatmap) gösterim hızını arttırın)", 89 | "LANG_CONFIG_STEP_KO" : "alanlar 1x1 pixel boyutundan küçük olamaz", 90 | "LANG_CONFIG_DOT" : "Sıcaklık haritası(Heatmap) nokta boyutu (pixel olarak)", 91 | "LANG_CONFIG_DOT_KO" : "nokta boyutu sıfır olamaz", 92 | "LANG_CONFIG_PALETTE" : "Sıcaklık haritasında(Heatmap) kırmızı kareler görmek istiyorsanız işaretleyin", 93 | "LANG_CONFIG_HEATMAP" : "Sıcaklık haritası(Heatmap) göster", 94 | "LANG_CONFIG_FLASHES" : "<Flash> nesneleri gizle", 95 | "LANG_CONFIG_IFRAMES" : "<iframe> çerçevelerini gizle", 96 | "LANG_CONFIG_YESTERDAY" : "Düne ait istatistikleri göster (bügüne tercihen)", 97 | "LANG_CONFIG_ALPHA" : "Şeffaflık değeri (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "X günden daha eski kayıtları sil (0 = tüm değerleri kayıtlı olarak tutar, önerilmez)", 99 | "LANG_CONFIG_START" : "Haftanın ilk günü", 100 | "LANG_CONFIG_START_M" : "Pazartesi", 101 | "LANG_CONFIG_START_S" : "Pazar", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "Yönetici kullanıcı adı", 103 | "LANG_CONFIG_ADMIN_PASS" : "Yönetici şifresi (iki defa girin)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "Ziyaretçi kullanıcı adı (boş bırakılırsa ziyaretçi hesabı etkin olmayacaktır)", 105 | "LANG_CONFIG_VIEWER_PASS" : "Ziyaretçi şifresi (iki defa girin)", 106 | "LANG_CONFIG_LOGIN" : "kullanıcı adı en az 4 karakterden oluşmalıdır", 107 | "LANG_CONFIG_PASS" : "şifre kısmı boş", 108 | "LANG_CONFIG_MATCH" : "şifre eşleşmiyor", 109 | "LANG_CONFIG_SAVE" : "Ayarları kaydet", 110 | "LANG_CLEANER_RUNNING" : "Temizleme işlemi sürüyor...", 111 | "LANG_CLEANER_RUN" : "Temizleme işlemi sona erdi: %d dosya ve %d dizin silindi", 112 | "LANG_CANCEL" : "İptal", 113 | "LANG_UPGRADE" : "Güncelle", 114 | "LANG_UPGRADE_NEXT" : "Ayarlarınızı denetleyin ve güncellemeyi bitirmek için kayıt edin" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /lang/bg.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "Потребител", 4 | "LANG_PASSWORD" : "Парола", 5 | "LANG_LOGIN" : "Вписване", 6 | "LANG_LOGIN_ERROR" : "Гревка, невалиден потребител или парола", 7 | "LANG_LOGOUT" : "Отписване", 8 | "LANG_UNKNOWN_DIR" : "Неможе да установи директория, моля свържете се с наз", 9 | "LANG_DAYS" : "П,В,С,Ч,П,С,Н", 10 | "LANG_RANGE" : "Ден, Седмица, Месец", 11 | "LANG_MONTHS" : "0,Януари,Февруари,Март,Април,Май,Юни,Юли,Август,Септември,Октонври,Ноември,Декември", 12 | "LANG_SITE" : "Уеб сайт", 13 | "LANG_GROUP" : "Група", 14 | "LANG_BROWSER" : "Браузър", 15 | "LANG_ALL" : "Всички", 16 | "LANG_UNKNOWN" : "Друг/Неизвестен", 17 | "LANG_EXAMPLE_URL" : "Уеб страница", 18 | "LANG_LAYOUT" : "Групов лайоут", 19 | "LANG_LAYOUT_FIXED" : "Фиксирано съдържание/меню", 20 | "LANG_LAYOUT_LIQUID" : "Течно съдържание/меню ( автоматично наместване на достъпно място)", 21 | "LANG_LAYOUT_NONE" : "Отстъп (няма връзка), течен", 22 | "LANG_LAYOUT_0" : "Течно съдържание и меню", 23 | "LANG_LAYOUT_1" : "Фиксира ляво меню, течно съдържание", 24 | "LANG_LAYOUT_2" : "Фиксира централно полето (автоматичен ляв и десен отстъп)", 25 | "LANG_LAYOUT_3" : "Закрепя в ляво фиксираното съдържание (автоматичен отстъп от дястно)", 26 | "LANG_LAYOUT_4" : "Фиксира дястно меню, течно съдържание", 27 | "LANG_LAYOUT_5" : "Фиксира лявото и дясното меню, течно съдържание", 28 | "LANG_LAYOUT_6" : "Закрепя в дястно фиксираното съдържание (автоматичен отстъп от ляво)", 29 | "LANG_LAYOUT_LEFT" : "Фиксира лявата ширина (pixels)", 30 | "LANG_LAYOUT_CENTER" : "Фиксира централната ширина (pixels)", 31 | "LANG_LAYOUT_RIGHT" : "Фиксира дястната ширина (pixels)", 32 | "LANG_SCREENSIZE" : "Размер на екрана", 33 | "LANG_HEATMAP" : "Heatmap със прозрачност", 34 | "LANG_LATEST_CHECK" : "Ъпгрейд", 35 | "LANG_LATEST_KO" : "Неможе да намери динамино последната версия, вашата е %s, последната прочетена директория от ъеб сайта на Dugwood е", 36 | "LANG_LATEST_OK" : "Вие имате последната версия (%s)", 37 | "LANG_LATEST_NO" : "Вашата версия (%s) не е последната достъпна (%s). Може да свалите последната версия от нашия уеб сайт:", 38 | "LANG_LOG_MY_CLICKS" : "Натисни за вписване?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "За да не запулвате нашата статистика,вие може да не се канектвате\\n\\nOK = Натисни за вписване\\nCancel = Не се вписваи", 40 | "LANG_JAVASCRIPT" : "Javascript код за поставяне на старници които искате да учите", 41 | "LANG_JAVASCRIPT_IMAGE" : "Показва ClickHeat лого на изучажаните страници: ", 42 | "LANG_JAVASCRIPT_SHORT" : "Компактен код (3 реда)", 43 | "LANG_JAVASCRIPT_QUOTA" : "Мксимален брои кликвания за страница и посещения, следващите кликвания няма да бъдат запазени (0 = без лимит, 3 е добър избор)", 44 | "LANG_JAVASCRIPT_SITE" : "Име на уебсайта (позволени символи: A-Z, a-z, 0-9, долна черта, тире, точка)", 45 | "LANG_JAVASCRIPT_GROUP" : "Име на групата, за да групираме подобни страници за олеснен анализ", 46 | "LANG_JAVASCRIPT_GROUP0" : "използва ключова дума", 47 | "LANG_JAVASCRIPT_GROUP1" : "позволени символи: A-Z, a-z, 0-9, долна черта, тире, точка", 48 | "LANG_JAVASCRIPT_GROUP2" : " използва заглавието на страницита (непрепорачителноно)", 49 | "LANG_JAVASCRIPT_GROUP3" : "използван адрес на страницата(непрепорачително)", 50 | "LANG_JAVASCRIPT_PASTE" : "Copy and paste кода в долната част на вашата страницата, точно преди краят на страницата (преди </body> tag):", 51 | "LANG_JAVASCRIPT_DEBUG" : "веднаж поставен кода във вашата страница, незабравяите да тествате дали работи, извикваики вашата страница с паранетри debugclickheat. За принер http://www.site.com/index.html извиква http://www.site.com/index.html?debugclickheat. Трябва да видите съобщенир от мястото на Clickheat. Ако има проблем, свържете се с наз", 52 | "LANG_NO_CLICK_BELOW" : "Leave below in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "Непозната група. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "няма логове за избрания период (първо махнете филтрите: браузера, ширината на монитора). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Правилни ли инсталирахте Javascript кода на вашият сайт?", 57 | "LANG_ERROR_FILE" : "неможе да отвори лог файла", 58 | "LANG_ERROR_SCREEN" : "нестандартен размер на екрана", 59 | "LANG_ERROR_LOADING" : "Генерира изображение, моля изчакаите...", 60 | "LANG_ERROR_FIXED" : "цялата ширина е зададена, това не е възможно. Моля сменете оформлението на ширината си.", 61 | "LANG_DEFAULT" : "автоматично", 62 | "LANG_CHECKS" : "Първичен контрол", 63 | "LANG_CHECK_WRITABLE" : "Задайте разрешение на конфигурационната директория", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP няма зададено разрешение на конфигурационната директория", 65 | "LANG_CHECK_GD" : "GD графична библиотека", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor() недостъпна, неможе да създаде изображение (с добро качество), проверете че GD е инсталирана", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha() недостъпна, неможе да създаде прозрачно изображение (можете да игнорирате това, но прозрачноста е препоръчителна)", 68 | "LANG_CHECK_GD_PNG" : "imagepng() недостъпна, неможе да създаде PNG изображение", 69 | "LANG_CHECKS_OK" : "Следваща стъпка: конфигурация", 70 | "LANG_CHECKS_KO" : "Един или повече тестове баха провалени. Моля оправете проблемите и рефрешнете страницата.", 71 | "LANG_CONFIG" : "конфигурация", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "Heatmap интерпретира", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "Главен дисплей", 74 | "LANG_CONFIG_HEADER_SECURITY" : "сигурност", 75 | "LANG_CONFIG_HEADER_LOGIN" : "Потребителска информация", 76 | "LANG_CONFIG_LOGPATH" : "Директория за логовете", 77 | "LANG_CONFIG_LOGPATH_DIR" : "Директория за логовете не съществува. Моля създаите я", 78 | "LANG_CONFIG_LOGPATH_KO" : "Директория за логовете няма правилно разрешение, моля задаите правилно разрешение за PHP потрепител", 79 | "LANG_CONFIG_CACHEPATH" : "Директория за времените филове", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "Директория за времените филове не съществува. Моля създайте я", 81 | "LANG_CONFIG_CACHEPATH_KO" : "Директория за времените файлове няма правилно разрешение, моля задаите правилно разрешение за PHP потрепител", 82 | "LANG_CONFIG_REFERERS" : "имена на домейните (разделете със запетая) разреши лог кликване на този сервър", 83 | "LANG_CONFIG_GROUPS" : "имена на групата (разделете със запетая) разреши лог кликване на този сервър", 84 | "LANG_CONFIG_FILESIZE" : "максимален размер на лог файла (в KB) на групата през ден (1000 кликвания са около 25KB, 0 = няма лимит на размера)", 85 | "LANG_CONFIG_CHECK" : "провери конфигурацията", 86 | "LANG_CONFIG_MEMORY" : "ограничения запаметта (автоматично php.ini стойност: %dMB, лимит: от %d до %dMB, но бъдете внимателни с големи стойности)", 87 | "LANG_CONFIG_MEMORY_KO" : "моля ограничете се с размера на спецификациите", 88 | "LANG_CONFIG_STEP" : "Групиране на X*X pixels' зона (увеличаване на скороста на heatmaps)", 89 | "LANG_CONFIG_STEP_KO" : "зоната неможе да бъде под 1x1 pixels", 90 | "LANG_CONFIG_DOT" : "Heatmaps' няма размер (pixels)", 91 | "LANG_CONFIG_DOT_KO" : "размера на точката неможе да е нула", 92 | "LANG_CONFIG_PALETTE" : "ако видите червен квадрат на heatmaps проверете тази кутия", 93 | "LANG_CONFIG_HEATMAP" : "покажи heatmap (освен карта на кликовете)", 94 | "LANG_CONFIG_FLASHES" : "скрива <Flash> обекти", 95 | "LANG_CONFIG_IFRAMES" : "скрива <iframe> рамката", 96 | "LANG_CONFIG_YESTERDAY" : "показва вчерашната статистика при старта (освен днес)", 97 | "LANG_CONFIG_ALPHA" : "ниво на прозрачността (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "Автоматично изчистване на статистиката от преди Х дена (0 = запазва всички файлове, не е препорачително)", 99 | "LANG_CONFIG_START" : "първият ден от седмицата", 100 | "LANG_CONFIG_START_M" : "понедекник", 101 | "LANG_CONFIG_START_S" : "неделя", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "Администратор", 103 | "LANG_CONFIG_ADMIN_PASS" : "парола (въвежда се двапъти)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "посетител (ако е празно, акаунта е недостъпен)", 105 | "LANG_CONFIG_VIEWER_PASS" : "парола (въвежда се двапъти)", 106 | "LANG_CONFIG_LOGIN" : "идентификатра не трябва де е под 4 символа", 107 | "LANG_CONFIG_PASS" : "паролата е празна", 108 | "LANG_CONFIG_MATCH" : "паролата не е избрана", 109 | "LANG_CONFIG_SAVE" : "запази конфигурацията", 110 | "LANG_CLEANER_RUNNING" : "В процес на изчистване...", 111 | "LANG_CLEANER_RUN" : "Изчистването е завършено: %d файложете и %d директориите бяха премахнати", 112 | "LANG_CANCEL" : "Отмяна", 113 | "LANG_UPGRADE" : "Надгради", 114 | "LANG_UPGRADE_NEXT" : "Проверете вашата конфигурация и я запазете за да завършите хадграждането" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /lang/sr.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "Корисничко име", 4 | "LANG_PASSWORD" : "Лозинка", 5 | "LANG_LOGIN" : "Улогујте се", 6 | "LANG_LOGIN_ERROR" : "Грешка у логовању, погрешно име или шифра", 7 | "LANG_LOGOUT" : "Излогујте се", 8 | "LANG_UNKNOWN_DIR" : "Не може се дефинисати тренутни директоријум, молимо контактирајте нас", 9 | "LANG_DAYS" : "П,У,С,Ч,П,С,Н", 10 | "LANG_RANGE" : "Дан,Недеља,Месец", 11 | "LANG_MONTHS" : "0,Јануар,Фебруар,Март,Април,Мај,Јун,Јул,Август,Септембар,Октобар,Новембар,Децембар", 12 | "LANG_SITE" : "Веб сајт", 13 | "LANG_GROUP" : "Група", 14 | "LANG_BROWSER" : "Претраживач", 15 | "LANG_ALL" : "Све", 16 | "LANG_UNKNOWN" : "Друго/непознато", 17 | "LANG_EXAMPLE_URL" : "Веб страна", 18 | "LANG_LAYOUT" : "Изглед групе", 19 | "LANG_LAYOUT_FIXED" : "Фиксни садржај/мени", 20 | "LANG_LAYOUT_LIQUID" : "Променљив садржај/мени (аутоматско прилагођавање слободном простору)", 21 | "LANG_LAYOUT_NONE" : "Маргина (без садржаја), променљива", 22 | "LANG_LAYOUT_0" : "Променљив садржај и мени", 23 | "LANG_LAYOUT_1" : "Фиксни леви мени, променљив садржај", 24 | "LANG_LAYOUT_2" : "Фиксни центриран садржај (аутоматске лева и десна маргина)", 25 | "LANG_LAYOUT_3" : "Фиксни садржај на левој страни (аутоматска десна маргина)", 26 | "LANG_LAYOUT_4" : "Фиксни десни мени, променљив садржај", 27 | "LANG_LAYOUT_5" : "Фиксни леви и десни мени, променљив садржај", 28 | "LANG_LAYOUT_6" : "Фиксни садржај на десној страни (аутоматска лева маргина)", 29 | "LANG_LAYOUT_LEFT" : "Фиксна лева ширина (пиксели)", 30 | "LANG_LAYOUT_CENTER" : "Фиксна централна ширина (пиксели)", 31 | "LANG_LAYOUT_RIGHT" : "Фиксна десна ширина (пиксели)", 32 | "LANG_SCREENSIZE" : "Величина екрана", 33 | "LANG_HEATMAP" : "Топлотна карта и њена транспарентност", 34 | "LANG_LATEST_CHECK" : "Унапреди", 35 | "LANG_LATEST_KO" : "Не могу наћи динамички последњу доступну верзију, ваша је %s, последња прочитана са Dugwood вебсајта је", 36 | "LANG_LATEST_OK" : "Имате последњу доступну верзију (%s)", 37 | "LANG_LATEST_NO" : "Ваша верзија (%s) није последња доступна (%s). Можете учитати последњу на нашем веб сајту:", 38 | "LANG_LOG_MY_CLICKS" : "Логуј моје кликове?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "Да би сте избегли загађење ваше статистике,\\nможете изабрати да не логујете своје кликове\\n\\nДА = логуј моје кликове\\nНЕ = не логуј моје кликове", 40 | "LANG_JAVASCRIPT" : "Јаваскрипт код који треба да се сними на странице које желите проучавати", 41 | "LANG_JAVASCRIPT_IMAGE" : "Прикажи ClickHeat лого на страницама које се проучавају: ", 42 | "LANG_JAVASCRIPT_SHORT" : "Сажет код (само три линије)", 43 | "LANG_JAVASCRIPT_QUOTA" : "Максималан број кликова по страни и посетиоцу, даљњи кликови се неће чувати (0 = нема лимита, 3 је добар избор)", 44 | "LANG_JAVASCRIPT_SITE" : "Име сајта (дозвољени карактери: A-Z, a-z, 0-9, _, -, .)", 45 | "LANG_JAVASCRIPT_GROUP" : "Име групе, да се групишу стране за сличну анализу", 46 | "LANG_JAVASCRIPT_GROUP0" : "користи кључну реч", 47 | "LANG_JAVASCRIPT_GROUP1" : "дозвољени карактери: A-Z, a-z, 0-9, _, -, .", 48 | "LANG_JAVASCRIPT_GROUP2" : "користи назив веб странице (није препоручено)", 49 | "LANG_JAVASCRIPT_GROUP3" : "користи линк веб странице (није препоручено)", 50 | "LANG_JAVASCRIPT_PASTE" : "Копирајте и ставите доњи код на ваше странице, пре самог краја стране (пре </body> елемента):", 51 | "LANG_JAVASCRIPT_DEBUG" : "Пошто је код стављен на ваше стране, не заборавите да тестирате да ли код ради добро, позивајући вашу страну са параметром debugclickheat. На пример за http://www.site.com/index.html позовите http://www.site.com/index.html?debugclickheat. Требали би видети поруку која показује стање Clickheatа. Ако се сусретнете са неким проблемом, молимо контактирајте нас", 52 | "LANG_NO_CLICK_BELOW" : "Leave below in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "Непозната група. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "Нема логова за изабрани период (прво пробајте да уклоните филтере: претраживач, величина екрана). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Да ли сте добро инсталирали Јаваскрипт код на вашим веб странама?", 57 | "LANG_ERROR_FILE" : "Не могу отворити лог фајл", 58 | "LANG_ERROR_SCREEN" : "Нестандардна величина екрана", 59 | "LANG_ERROR_LOADING" : "Слика се генерише, молимо сачекајте...", 60 | "LANG_ERROR_FIXED" : "Све ширине су фиксне, то није могуће. Молимо промените торе једну од ширина презентације.", 61 | "LANG_DEFAULT" : "стандардни", 62 | "LANG_CHECKS" : "Прелиминарне провере", 63 | "LANG_CHECK_WRITABLE" : "Дозволе записа у директоријуму конфигурација", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP нема дозволе записа у директоријуму конфигурација", 65 | "LANG_CHECK_GD" : "GD графичка библиотека", 66 | "LANG_CHECK_GD_IMG" : "imagecreatetruecolor() није доступна, не могу направити слике (доброг квалитета), проверите да ли је инсталиран GD", 67 | "LANG_CHECK_GD_ALPHA" : "imagecolorallocatealpha() није доступна, не могу направити транспарентне слике (можете да игноришите ово, али се транспарентност заиста препоручује)", 68 | "LANG_CHECK_GD_PNG" : "imagepng() није доступна, не могу направити PNG слике, жао ми је", 69 | "LANG_CHECKS_OK" : "Следећи корак: конфигурација", 70 | "LANG_CHECKS_KO" : "Један или више тестова није успело. Молимо исправите проблем и освежите страницу.", 71 | "LANG_CONFIG" : "Конфигурација", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "Исцртавање топлотне карте", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "Главни дисплеј", 74 | "LANG_CONFIG_HEADER_SECURITY" : "Сигурност", 75 | "LANG_CONFIG_HEADER_LOGIN" : "Параметри за улоговање", 76 | "LANG_CONFIG_LOGPATH" : "Директоријум лог фајлова", 77 | "LANG_CONFIG_LOGPATH_DIR" : "Директоријум лог фајлова не постоји. Молимо направите та", 78 | "LANG_CONFIG_LOGPATH_KO" : "Директоријум лог фајлова нема дозволу писања, молимо дајте дозволу писања кориснику PHP-a", 79 | "LANG_CONFIG_CACHEPATH" : "Директоријум привремених фајлова", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "Директоријум привремених фајлова не постоји. Молимо направите та", 81 | "LANG_CONFIG_CACHEPATH_KO" : "Директоријум привремених фајлова нема дозволу писања, молимо дајте дозволу писања кориснику PHP-a", 82 | "LANG_CONFIG_REFERERS" : "Имена домена (раздовљени зарезима) којима је дозвољено да логују кликове на овом серверу", 83 | "LANG_CONFIG_GROUPS" : "Имена група (раздовљени зарезима) којима је дозвољено да логују кликове на овом серверу", 84 | "LANG_CONFIG_FILESIZE" : "Максимална величина лог фајла (у килобајтима) за групу у току дана (1000 кликова је око 25KB, 0 = нема лимита величине)", 85 | "LANG_CONFIG_CHECK" : "Проверите конфигурацију", 86 | "LANG_CONFIG_MEMORY" : "Лимит меморије (стандардна php.ini вредност: %dMB, лимити: од %d до %dMB, али будите опрезни са великим вредностима)", 87 | "LANG_CONFIG_MEMORY_KO" : "молимо останите унутар специфицираног опсега", 88 | "LANG_CONFIG_STEP" : "Груписање кликова по X*X пикселним зонама (убрзава презентацију топлотних мапа)", 89 | "LANG_CONFIG_STEP_KO" : "зоне не могу бити мање од 1x1 пиксела", 90 | "LANG_CONFIG_DOT" : "Величина у пикселима топлотне мапе", 91 | "LANG_CONFIG_DOT_KO" : "Величина у пикселима не може бити нула", 92 | "LANG_CONFIG_PALETTE" : "Ако видите црвене квадрате на топлотним мапама кликните на ову кутијицу", 93 | "LANG_CONFIG_HEATMAP" : "Прикажите топлотну мапу (уместо мапе кликова)", 94 | "LANG_CONFIG_FLASHES" : "Сакрите <Flash> објекте", 95 | "LANG_CONFIG_IFRAMES" : "Сакрите <iframe> рамове", 96 | "LANG_CONFIG_YESTERDAY" : "Прикажи јучерашњу статистику на почетку (а не данашњу)", 97 | "LANG_CONFIG_ALPHA" : "Ниво транспарентности (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "Аутоматско брисање статистике старије од X дана (0 = сачуфај све фајлове, није препоручено)", 99 | "LANG_CONFIG_START" : "Први дан у недељи", 100 | "LANG_CONFIG_START_M" : "Понедељак", 101 | "LANG_CONFIG_START_S" : "Недеља", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "Идентификатор администратора", 103 | "LANG_CONFIG_ADMIN_PASS" : "Шифра администратора (укуцајте је два пута)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "Идентификатор посетиоца (ако је празан, налог је онемогућен)", 105 | "LANG_CONFIG_VIEWER_PASS" : "Шифра посетиоца (укуцајте је два пута)", 106 | "LANG_CONFIG_LOGIN" : "идентификатор мора имати барем 4 карактера", 107 | "LANG_CONFIG_PASS" : "шифра је празна", 108 | "LANG_CONFIG_MATCH" : "шифре нису исте", 109 | "LANG_CONFIG_SAVE" : "Сачувајте конфигурацију", 110 | "LANG_CLEANER_RUNNING" : "Чишћење је у прогресу...", 111 | "LANG_CLEANER_RUN" : "Чишћење завршено: %d фајлова и %d директоријума је обрисано", 112 | "LANG_CANCEL" : "Поништи", 113 | "LANG_UPGRADE" : "Надгради", 114 | "LANG_UPGRADE_NEXT" : "Проверите конфигурацију, онда је сачувајте да наставите са надградњом" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /libs/languages/tr.php: -------------------------------------------------------------------------------- 1 | önerilmez)'); 62 | define('LANG_JAVASCRIPT_GROUP3', 'site adresi kullan (önerilmez)'); 63 | define('LANG_JAVASCRIPT_PASTE', 'Alt kısımda görünen kodu kopyalayıp kayıt altına almak istediğiniz sayfaların bitiminden önce ekleyin (</body> komutundan önce):'); 64 | define('LANG_JAVASCRIPT_DEBUG', 'Size verilen kodu sitenize ekleme işleminin ardından kodun çalıp çalışmadığını debugclickheat komutu ile test edin. Örnek: http://www.site.com/index.html sitesine kodu ekledi iseniz şu adrese ulaşın http://www.site.com/index.html?debugclickheat. Clickheat tarafından oluşturlan bir ileti görmelisiniz. Bir hata ile karşılaşırsanız lütfen bizimle iletişime geçin'); 65 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please 66 | define('LANG_ERROR_GROUP', 'Bilinmeyen grup. _JAVASCRIPT_'); 67 | define('LANG_ERROR_DATA', 'Seçilen süreçte kayıt bulunamadı (filtreleri kaldırmayı deneyin: tarayıcı, ekran boyutu). _JAVASCRIPT_'); 68 | define('LANG_ERROR_JAVASCRIPT', 'Kodu sayfanıza doğru bir şekilde eklediniz mi?'); 69 | define('LANG_ERROR_FILE', 'Kayıt dosyası açılamıyor'); 70 | define('LANG_ERROR_SCREEN', 'Standard olmayan ekran boyutu'); 71 | define('LANG_ERROR_LOADING', 'Görsel oluşturuluyor, lütfen bekleyin...'); 72 | define('LANG_ERROR_FIXED', 'Tüm genişlikler sabit, bu mümkün değil. Lütfen yukarıda belirlediğiniz düzeni değiştirin.'); 73 | define('LANG_DEFAULT', 'varsayılan'); 74 | define('LANG_CHECKS', 'İlk kontrol'); 75 | define('LANG_CHECK_WRITABLE', 'Ayar dizini yazma izinleri'); 76 | define('LANG_CHECK_NOT_WRITABLE', 'PHP ayar dizinine yazma iznine sahip değil'); 77 | define('LANG_CHECK_GD', 'GD görsel kütüphane'); 78 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor() mevcut değil, görseller oluşturulamıyor (iyi kalite ile), GD kütüphanesinin doğru yüklenmiş olduğuna dikkat edin'); 79 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha() mevcut değil, şeffaf görseller oluşturulamıyor (bunu önemsemeyin ancak şeffaflık kullanmanız önerilir)'); 80 | define('LANG_CHECK_GD_PNG', 'imagepng() mevcut değil, PNG görseller oluşturulamıyor, üzgünüz'); 81 | define('LANG_CHECKS_OK', 'Sonraki adım: ayar'); 82 | define('LANG_CHECKS_KO', 'Bir veya daha fazla test başarısız oldu. Lütfen hataları giderin ve sayfayı yeniden açın.'); 83 | define('LANG_CONFIG', 'Ayar'); 84 | define('LANG_CONFIG_HEADER_HEATMAP', 'Sıcaklık haritası(Heatmap) yorumlanıyor'); 85 | define('LANG_CONFIG_HEADER_DISPLAY', 'Genel görünüm'); 86 | define('LANG_CONFIG_HEADER_SECURITY', 'Güvenlik'); 87 | define('LANG_CONFIG_HEADER_LOGIN', 'Oturum açma değişkenleri'); 88 | define('LANG_CONFIG_LOGPATH', 'Logfiles\' dizini'); 89 | define('LANG_CONFIG_LOGPATH_DIR', 'Kayıt dosyaları dizini mevcut değil. Lütfen oluşturun.'); 90 | define('LANG_CONFIG_LOGPATH_KO', 'Kayıt dosyaları dizinine yazma iznine sahip değilsiniz, lütfen yazma izni verin'); 91 | define('LANG_CONFIG_CACHEPATH', 'Geçici dosya dizini'); 92 | define('LANG_CONFIG_CACHEPATH_DIR', 'Geçici dosya dizini mevcut değil. Lütfen oluşturun'); 93 | define('LANG_CONFIG_CACHEPATH_KO', 'Geçici dosya dizine yazma iznine sahip değilsiniz, lütfen yazma izni verin.'); 94 | define('LANG_CONFIG_REFERERS', 'Bu sunucuda kayıt altına alınacak alan adları (virgül ile ayrılmış)'); 95 | define('LANG_CONFIG_GROUPS', 'Bu sunucuda kayıt altına alınacak grup adları (virgül ile ayrılmış)'); 96 | define('LANG_CONFIG_FILESIZE', 'Bir grupta tutulacak olan kayıtların azami kayıt dosyası boyutu (KB olarak) (1000 tık yaklaşık 25KB, 0 = sınırsız)'); 97 | define('LANG_CONFIG_CHECK', 'Ayarları denetle'); 98 | define('LANG_CONFIG_MEMORY', 'Hafıza sınırı (varsayılan php.ini değeri: %dMB, sınırlar: %d dan %dMB a kadar, fakat yüksek değerlere dikkat edin.)'); 99 | define('LANG_CONFIG_MEMORY_KO', 'lütfen belirtilen aralığı kullanın'); 100 | define('LANG_CONFIG_STEP', 'Tıklamalar X*X pixele göre gruplandırılıyor\' alan (Sıcaklık haritası(Heatmap) gösterim hızını arttırın)'); 101 | define('LANG_CONFIG_STEP_KO', 'alanlar 1x1 pixel boyutundan küçük olamaz'); 102 | define('LANG_CONFIG_DOT', 'Sıcaklık haritası(Heatmap) nokta boyutu (pixel olarak)'); 103 | define('LANG_CONFIG_DOT_KO', 'nokta boyutu sıfır olamaz'); 104 | define('LANG_CONFIG_PALETTE', 'Sıcaklık haritasında(Heatmap) kırmızı kareler görmek istiyorsanız işaretleyin'); 105 | define('LANG_CONFIG_HEATMAP', 'Sıcaklık haritası(Heatmap) göster'); 106 | define('LANG_CONFIG_FLASHES', '<Flash> nesneleri gizle'); 107 | define('LANG_CONFIG_IFRAMES', '<iframe> çerçevelerini gizle'); 108 | define('LANG_CONFIG_YESTERDAY', 'Düne ait istatistikleri göster (bügüne tercihen)'); 109 | define('LANG_CONFIG_ALPHA', 'Şeffaflık değeri (0 => 100)'); 110 | define('LANG_CONFIG_FLUSH', 'X günden daha eski kayıtları sil (0 = tüm değerleri kayıtlı olarak tutar, önerilmez)'); 111 | define('LANG_CONFIG_START', 'Haftanın ilk günü'); 112 | define('LANG_CONFIG_START_M', 'Pazartesi'); 113 | define('LANG_CONFIG_START_S', 'Pazar'); 114 | define('LANG_CONFIG_ADMIN_LOGIN', 'Yönetici kullanıcı adı'); 115 | define('LANG_CONFIG_ADMIN_PASS', 'Yönetici şifresi (iki defa girin)'); 116 | define('LANG_CONFIG_VIEWER_LOGIN', 'Ziyaretçi kullanıcı adı (boş bırakılırsa ziyaretçi hesabı etkin olmayacaktır)'); 117 | define('LANG_CONFIG_VIEWER_PASS', 'Ziyaretçi şifresi (iki defa girin)'); 118 | define('LANG_CONFIG_LOGIN', 'kullanıcı adı en az 4 karakterden oluşmalıdır'); 119 | define('LANG_CONFIG_PASS', 'şifre kısmı boş'); 120 | define('LANG_CONFIG_MATCH', 'şifre eşleşmiyor'); 121 | define('LANG_CONFIG_SAVE', 'Ayarları kaydet'); 122 | define('LANG_CLEANER_RUNNING', 'Temizleme işlemi sürüyor...'); 123 | define('LANG_CLEANER_RUN', 'Temizleme işlemi sona erdi: %d dosya ve %d dizin silindi'); 124 | define('LANG_CANCEL', 'İptal'); 125 | define('LANG_UPGRADE', 'Güncelle'); 126 | define('LANG_UPGRADE_NEXT', 'Ayarlarınızı denetleyin ve güncellemeyi bitirmek için kayıt edin'); 127 | ?> 128 | -------------------------------------------------------------------------------- /lang/cz.json: -------------------------------------------------------------------------------- 1 | { 2 | "ClickHeat": { 3 | "LANG_USER" : "Uživatel", 4 | "LANG_PASSWORD" : "Heslo", 5 | "LANG_LOGIN" : "Přihlášení", 6 | "LANG_LOGIN_ERROR" : "Chyba přihlášení, špatné uživatelské jméno nebo heslo", 7 | "LANG_LOGOUT" : "Odhlášení", 8 | "LANG_UNKNOWN_DIR" : "Není možné nastavit tento adresář, prosím, kontaktujte nás", 9 | "LANG_DAYS" : "P,Ú,S,Č,P,S,N", 10 | "LANG_RANGE" : "Den,Týden,Měsíc", 11 | "LANG_MONTHS" : "0,Leden,Únor,Březen,Duben,Květen,Červen,Červenec,Srpen,Září,Říjen,Listopad,Prosinec", 12 | "LANG_SITE" : "Webová stránka", 13 | "LANG_GROUP" : "Skupina", 14 | "LANG_BROWSER" : "Prohlížeč", 15 | "LANG_ALL" : "Vše", 16 | "LANG_UNKNOWN" : "Ostatní/neurčeno", 17 | "LANG_EXAMPLE_URL" : "Www adresa", 18 | "LANG_LAYOUT" : "Rozvržení skupiny", 19 | "LANG_LAYOUT_FIXED" : "Fixní obsah/menu", 20 | "LANG_LAYOUT_LIQUID" : "Plovoucí obsah/menu (automatické rozmístění podle volného místa)", 21 | "LANG_LAYOUT_NONE" : "Okraje (bez obsahu), plovoucí", 22 | "LANG_LAYOUT_0" : "Plovoucí obsah a menu", 23 | "LANG_LAYOUT_1" : "Fixní levé menu, plovoucí obsah", 24 | "LANG_LAYOUT_2" : "Fixní vycentrovaný obsah (automatický levý a pravý okraj)", 25 | "LANG_LAYOUT_3" : "Fixní obsah přilepený vlevo (automatický pravý okraj)", 26 | "LANG_LAYOUT_4" : "Fixní pravé menu, plovoucí obsah", 27 | "LANG_LAYOUT_5" : "Fixní levé a pravé menu, plovoucí obsah", 28 | "LANG_LAYOUT_6" : "Fixní obsah přilepený vpravo (automatický levý okraj)", 29 | "LANG_LAYOUT_LEFT" : "Fixní levá šířka (v pixelech)", 30 | "LANG_LAYOUT_CENTER" : "Fixní šířka prostřední části (v pixelech)", 31 | "LANG_LAYOUT_RIGHT" : "Fixní šířka pravé části (v pixelech)", 32 | "LANG_SCREENSIZE" : "Velikost obrazovky", 33 | "LANG_HEATMAP" : "Teplotní mapa a její průhlednost", 34 | "LANG_LATEST_CHECK" : "Aktualizace", 35 | "LANG_LATEST_KO" : "Nemohu nalézt automaticky nejnovější verzi, vaše je %s, nejnovější naleznete přímo na stránkách Dugwood", 36 | "LANG_LATEST_OK" : "Máte poslední dostupnou verzi (%s)", 37 | "LANG_LATEST_NO" : "Vaše verze (%s) není nejnovější (%s). Můžete si stáhnout novější z naší stránky:", 38 | "LANG_LOG_MY_CLICKS" : "Započítávat mé kliknutí?", 39 | "LANG_JAVASCRIPT_ADMIN_COOKIE" : "Pokud se chcete vyvarovat zkreslení při počítání vaší statistiky, \\nzvolte nezapočítávat vaše kliknutí do záznamu\\n\\nOK = započítávat mé kliknutí\\nZrušit = nezapočítávat mé kliknutí", 40 | "LANG_JAVASCRIPT" : "Javascriptový kód pro vložení do stránky, kterou chcete sledovat", 41 | "LANG_JAVASCRIPT_IMAGE" : "Zobrazovat ClickHeat logo na sledované stránce: ", 42 | "LANG_JAVASCRIPT_SHORT" : "Kompaktní kód (pouhé 3 řádky)", 43 | "LANG_JAVASCRIPT_QUOTA" : "Maximální počet kliknutí na stránku od návštěvníka, další kliknutí nebude uloženo (0 = žádné omezení, 3 je dobrá volba)", 44 | "LANG_JAVASCRIPT_SITE" : "Název webové stránky (povolené znaky: A-Z, a-z, 0-9, podtržítko, spojovník - pomlčka, tečka)", 45 | "LANG_JAVASCRIPT_GROUP" : "Název skupiny pro seskupení podobných stránek pro jednodušší analýzu", 46 | "LANG_JAVASCRIPT_GROUP0" : "použít klíčové slovo", 47 | "LANG_JAVASCRIPT_GROUP1" : "povolené znaky: A-Z, a-z, 0-9, podtržítko, spojovník - pomlčka, tečka", 48 | "LANG_JAVASCRIPT_GROUP2" : "použít titulek stránky (nedoporučujeme)", 49 | "LANG_JAVASCRIPT_GROUP3" : "použít adresu stránky (nedoporučujeme)", 50 | "LANG_JAVASCRIPT_PASTE" : "Zkopírujte a vložte kód zde dole do své stránky, před samotný konec stránky (před značku </body>):", 51 | "LANG_JAVASCRIPT_DEBUG" : "Jakmile je vložíte do vašich stránek kód, nezapoměňte vyzkoušet zdali kód pracuje správně, zavoláním vaší stránky s parametrem debugclickheat. Například http://www.site.com/index.html zavolejte takto: http://www.site.com/index.html?debugclickheat. Měl byste vidět zprávu o stavu Clickheatu. Pokud narazíte na nějaký problém, nebojte se nás kontaktovat", 52 | "LANG_NO_CLICK_BELOW" : "Leave below this line in English please", 53 | "LANG_NO_CLICK_BELOW" : "No clicks recorded beneath this line", 54 | "LANG_ERROR_GROUP" : "Neznámá skupina. _JAVASCRIPT_", 55 | "LANG_ERROR_DATA" : "Žádné záznamy pro zvolené období (zkuste zrušit nastavení filtrů: prohlížeč, velikost obrazovky). _JAVASCRIPT_", 56 | "LANG_ERROR_JAVASCRIPT" : "Máte správně vložený Javascriptový kód do vašich webových stránek?", 57 | "LANG_ERROR_FILE" : "Nemohu otevřít soubor se záznamem", 58 | "LANG_ERROR_SCREEN" : "Nestandartní velikost obrazovky", 59 | "LANG_ERROR_LOADING" : "Vytvářím obrázek, prosím čekejte...", 60 | "LANG_ERROR_FIXED" : "Všechny šířky jsou fixní, to není vhodné. Prosím, změňte jedno z vašich rozvržení šířky nahoře.", 61 | "LANG_DEFAULT" : "výchozí", 62 | "LANG_CHECKS" : "Předběžná kontrola", 63 | "LANG_CHECK_WRITABLE" : "Práva k zápisu do adresáře s nastavením", 64 | "LANG_CHECK_NOT_WRITABLE" : "PHP nemá práva k zápisu do adresáře s nastavením", 65 | "LANG_CHECK_GD" : "GD grafická knihovna", 66 | "LANG_CHECK_GD_IMG" : "funkce imagecreatetruecolor() je nedostupná, nemohu vytvářet obrázky (v dobré kvalitě), zkontrolujte zdali je nainstalována GD", 67 | "LANG_CHECK_GD_ALPHA" : "funkce imagecolorallocatealpha() není dostupná, nemohu vytvářet průhledné obrázky (můžete to ignorovat, ale průhlednost opravdu doporučujeme)", 68 | "LANG_CHECK_GD_PNG" : "funkce imagepng() není dostupná, nemohu vytvářet obrázky ve formátu PNG, promiňte", 69 | "LANG_CHECKS_OK" : "Další krok: nastavení", 70 | "LANG_CHECKS_KO" : "Jeden nebo více testů neuspěl. Prosím opravte příčinu a obnovte tuto stránku.", 71 | "LANG_CONFIG" : "Nastavení", 72 | "LANG_CONFIG_HEADER_HEATMAP" : "Teplotní mapa je vytvořena", 73 | "LANG_CONFIG_HEADER_DISPLAY" : "Hlavní zobrazení", 74 | "LANG_CONFIG_HEADER_SECURITY" : "Bezpečnost", 75 | "LANG_CONFIG_HEADER_LOGIN" : "Nastavení přihlašování", 76 | "LANG_CONFIG_LOGPATH" : "Adresář pro záznamy", 77 | "LANG_CONFIG_LOGPATH_DIR" : "Adresář pro záznamy neexistuje. Prosím, vytvořte ho", 78 | "LANG_CONFIG_LOGPATH_KO" : "Adresář pro záznamy nemá povolena práva pro zápis, prosím nastavte práva pro uživatele PHP", 79 | "LANG_CONFIG_CACHEPATH" : "Adresář pro dočasné soubory", 80 | "LANG_CONFIG_CACHEPATH_DIR" : "Adresář pro dočasné soubory neexistuje. Prosím, vytvořte ho.", 81 | "LANG_CONFIG_CACHEPATH_KO" : "Adresář pro dočasné soubory nemá povolena práva pro zápis, prosím nastavte práva pro uživatele PHP", 82 | "LANG_CONFIG_REFERERS" : "Názvy domén (oddělené čárkou) které mají povolení ukládat zápisy na tomto serveru", 83 | "LANG_CONFIG_GROUPS" : "Jména skupin (oddělená čárkou), které mají povolení ukládat zápisy na tomto serveru", 84 | "LANG_CONFIG_FILESIZE" : "Maximální velikost souboru se záznamem (v KB) za skupinu přes den (1000 kliknutí je zhruba 25KB, 0 = žádné omezení velikosti)", 85 | "LANG_CONFIG_CHECK" : "Zkontrolovat nastavení", 86 | "LANG_CONFIG_MEMORY" : "Limit paměti (výchozí hodnota z php.ini je: %dMB, limity: od %d do %dMB, ale buďte opatrní při zadávání vyšších hodnot)", 87 | "LANG_CONFIG_MEMORY_KO" : "prosím dodržte předepsaný rozsah", 88 | "LANG_CONFIG_STEP" : "Kliknutí seskupit do zón po X*X pixelech (pro zrychlení zobrazování teplotní mapy)", 89 | "LANG_CONFIG_STEP_KO" : "zóny nemohou být menší než 1x1 pixelů", 90 | "LANG_CONFIG_DOT" : "Velikost bodu na teplotní mapě (v pixelech)", 91 | "LANG_CONFIG_DOT_KO" : "velikosts tečky nesmí být nula", 92 | "LANG_CONFIG_PALETTE" : "Pokud vidíte červené čtverečky na teplotní mapě, zaškrtněte tuto volbu", 93 | "LANG_CONFIG_HEATMAP" : "Zobrazit teplotní mapu (spíše než mapu kliknutí)", 94 | "LANG_CONFIG_FLASHES" : "Skrýt <Flash> objekty", 95 | "LANG_CONFIG_IFRAMES" : "Skrýt <iframe> rámy", 96 | "LANG_CONFIG_YESTERDAY" : "Zobrazit včerejší statistiky při startu (spíše než dnešní)", 97 | "LANG_CONFIG_ALPHA" : "Stupeň průhlednosti (0 => 100)", 98 | "LANG_CONFIG_FLUSH" : "Automaticky smazat statistiky starší než X dnů (0 = zachovat všechny soubory, nedoporučujeme)", 99 | "LANG_CONFIG_START" : "První den týdne", 100 | "LANG_CONFIG_START_M" : "Pondělí", 101 | "LANG_CONFIG_START_S" : "Neděle", 102 | "LANG_CONFIG_ADMIN_LOGIN" : "Identifikátor správce", 103 | "LANG_CONFIG_ADMIN_PASS" : "Heslo správce (zapište dvakrát)", 104 | "LANG_CONFIG_VIEWER_LOGIN" : "Identifikátor návštěvníka (pokud ho nezadáte, bude tato možnost vypnuta)", 105 | "LANG_CONFIG_VIEWER_PASS" : "Heslo pro návštevy (zadejte dvakrát)", 106 | "LANG_CONFIG_LOGIN" : "identifikátor musí mít alespoň 4 znaky", 107 | "LANG_CONFIG_PASS" : "heslo je prázdné", 108 | "LANG_CONFIG_MATCH" : "hesla se neshodují", 109 | "LANG_CONFIG_SAVE" : "Uložit nastavení", 110 | "LANG_CLEANER_RUNNING" : "Probíhá čištění...", 111 | "LANG_CLEANER_RUN" : "čištění dokončeno: %d souborů a %d adresářů bylo vymazáno", 112 | "LANG_CANCEL" : "Zrušit", 113 | "LANG_UPGRADE" : "Aktualizace", 114 | "LANG_UPGRADE_NEXT" : "Zkontrolujte vaše nastavení, a pak uložte pro dokončení aktualizace" 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /libs/languages/bg.php: -------------------------------------------------------------------------------- 1 | непрепорачителноно)'); 62 | define('LANG_JAVASCRIPT_GROUP3', 'използван адрес на страницата(непрепорачително)'); 63 | define('LANG_JAVASCRIPT_PASTE', 'Copy and paste кода в долната част на вашата страницата, точно преди краят на страницата (преди </body> tag):'); 64 | define('LANG_JAVASCRIPT_DEBUG', 'веднаж поставен кода във вашата страница, незабравяите да тествате дали работи, извикваики вашата страница с паранетри debugclickheat. За принер http://www.site.com/index.html извиква http://www.site.com/index.html?debugclickheat. Трябва да видите съобщенир от мястото на Clickheat. Ако има проблем, свържете се с наз'); 65 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please 66 | define('LANG_ERROR_GROUP', 'Непозната група. _JAVASCRIPT_'); 67 | define('LANG_ERROR_DATA', 'няма логове за избрания период (първо махнете филтрите: браузера, ширината на монитора). _JAVASCRIPT_'); 68 | define('LANG_ERROR_JAVASCRIPT', 'Правилни ли инсталирахте Javascript кода на вашият сайт?'); 69 | define('LANG_ERROR_FILE', 'неможе да отвори лог файла'); 70 | define('LANG_ERROR_SCREEN', 'нестандартен размер на екрана'); 71 | define('LANG_ERROR_LOADING', 'Генерира изображение, моля изчакаите...'); 72 | define('LANG_ERROR_FIXED', 'цялата ширина е зададена, това не е възможно. Моля сменете оформлението на ширината си.'); 73 | define('LANG_DEFAULT', 'автоматично'); 74 | define('LANG_CHECKS', 'Първичен контрол'); 75 | define('LANG_CHECK_WRITABLE', 'Задайте разрешение на конфигурационната директория'); 76 | define('LANG_CHECK_NOT_WRITABLE', 'PHP няма зададено разрешение на конфигурационната директория'); 77 | define('LANG_CHECK_GD', 'GD графична библиотека'); 78 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor() недостъпна, неможе да създаде изображение (с добро качество), проверете че GD е инсталирана'); 79 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha() недостъпна, неможе да създаде прозрачно изображение (можете да игнорирате това, но прозрачноста е препоръчителна)'); 80 | define('LANG_CHECK_GD_PNG', 'imagepng() недостъпна, неможе да създаде PNG изображение'); 81 | define('LANG_CHECKS_OK', 'Следваща стъпка: конфигурация'); 82 | define('LANG_CHECKS_KO', 'Един или повече тестове баха провалени. Моля оправете проблемите и рефрешнете страницата.'); 83 | define('LANG_CONFIG', 'конфигурация'); 84 | define('LANG_CONFIG_HEADER_HEATMAP', 'Heatmap интерпретира'); 85 | define('LANG_CONFIG_HEADER_DISPLAY', 'Главен дисплей'); 86 | define('LANG_CONFIG_HEADER_SECURITY', 'сигурност'); 87 | define('LANG_CONFIG_HEADER_LOGIN', 'Потребителска информация'); 88 | define('LANG_CONFIG_LOGPATH', 'Директория за логовете'); 89 | define('LANG_CONFIG_LOGPATH_DIR', 'Директория за логовете не съществува. Моля създаите я'); 90 | define('LANG_CONFIG_LOGPATH_KO', 'Директория за логовете няма правилно разрешение, моля задаите правилно разрешение за PHP потрепител'); 91 | define('LANG_CONFIG_CACHEPATH', 'Директория за времените филове'); 92 | define('LANG_CONFIG_CACHEPATH_DIR', 'Директория за времените филове не съществува. Моля създайте я'); 93 | define('LANG_CONFIG_CACHEPATH_KO', 'Директория за времените файлове няма правилно разрешение, моля задаите правилно разрешение за PHP потрепител'); 94 | define('LANG_CONFIG_REFERERS', 'имена на домейните (разделете със запетая) разреши лог кликване на този сервър'); 95 | define('LANG_CONFIG_GROUPS', 'имена на групата (разделете със запетая) разреши лог кликване на този сервър'); 96 | define('LANG_CONFIG_FILESIZE', 'максимален размер на лог файла (в KB) на групата през ден (1000 кликвания са около 25KB, 0 = няма лимит на размера)'); 97 | define('LANG_CONFIG_CHECK', 'провери конфигурацията'); 98 | define('LANG_CONFIG_MEMORY', 'ограничения запаметта (автоматично php.ini стойност: %dMB, лимит: от %d до %dMB, но бъдете внимателни с големи стойности)'); 99 | define('LANG_CONFIG_MEMORY_KO', 'моля ограничете се с размера на спецификациите'); 100 | define('LANG_CONFIG_STEP', 'Групиране на X*X pixels\' зона (увеличаване на скороста на heatmaps)'); 101 | define('LANG_CONFIG_STEP_KO', 'зоната неможе да бъде под 1x1 pixels'); 102 | define('LANG_CONFIG_DOT', 'Heatmaps\' няма размер (pixels)'); 103 | define('LANG_CONFIG_DOT_KO', 'размера на точката неможе да е нула'); 104 | define('LANG_CONFIG_PALETTE', 'ако видите червен квадрат на heatmaps проверете тази кутия'); 105 | define('LANG_CONFIG_HEATMAP', 'покажи heatmap (освен карта на кликовете)'); 106 | define('LANG_CONFIG_FLASHES', 'скрива <Flash> обекти'); 107 | define('LANG_CONFIG_IFRAMES', 'скрива <iframe> рамката'); 108 | define('LANG_CONFIG_YESTERDAY', 'показва вчерашната статистика при старта (освен днес)'); 109 | define('LANG_CONFIG_ALPHA', 'ниво на прозрачността (0 => 100)'); 110 | define('LANG_CONFIG_FLUSH', 'Автоматично изчистване на статистиката от преди Х дена (0 = запазва всички файлове, не е препорачително)'); 111 | define('LANG_CONFIG_START', 'първият ден от седмицата'); 112 | define('LANG_CONFIG_START_M', 'понедекник'); 113 | define('LANG_CONFIG_START_S', 'неделя'); 114 | define('LANG_CONFIG_ADMIN_LOGIN', 'Администратор'); 115 | define('LANG_CONFIG_ADMIN_PASS', 'парола (въвежда се двапъти)'); 116 | define('LANG_CONFIG_VIEWER_LOGIN', 'посетител (ако е празно, акаунта е недостъпен)'); 117 | define('LANG_CONFIG_VIEWER_PASS', 'парола (въвежда се двапъти)'); 118 | define('LANG_CONFIG_LOGIN', 'идентификатра не трябва де е под 4 символа'); 119 | define('LANG_CONFIG_PASS', 'паролата е празна'); 120 | define('LANG_CONFIG_MATCH', 'паролата не е избрана'); 121 | define('LANG_CONFIG_SAVE', 'запази конфигурацията'); 122 | define('LANG_CLEANER_RUNNING', 'В процес на изчистване...'); 123 | define('LANG_CLEANER_RUN', 'Изчистването е завършено: %d файложете и %d директориите бяха премахнати'); 124 | define('LANG_CANCEL', 'Отмяна'); 125 | define('LANG_UPGRADE', 'Надгради'); 126 | define('LANG_UPGRADE_NEXT', 'Проверете вашата конфигурация и я запазете за да завършите хадграждането'); 127 | ?> 128 | -------------------------------------------------------------------------------- /libs/languages/sr.php: -------------------------------------------------------------------------------- 1 | није препоручено)'); 61 | define('LANG_JAVASCRIPT_GROUP3', 'користи линк веб странице (није препоручено)'); 62 | define('LANG_JAVASCRIPT_PASTE', 'Копирајте и ставите доњи код на ваше странице, пре самог краја стране (пре </body> елемента):'); 63 | define('LANG_JAVASCRIPT_DEBUG', 'Пошто је код стављен на ваше стране, не заборавите да тестирате да ли код ради добро, позивајући вашу страну са параметром debugclickheat. На пример за http://www.site.com/index.html позовите http://www.site.com/index.html?debugclickheat. Требали би видети поруку која показује стање Clickheatа. Ако се сусретнете са неким проблемом, молимо контактирајте нас'); 64 | define('LANG_NO_CLICK_BELOW', 'No clicks recorded beneath this line'); // Leave this line in English please 65 | define('LANG_ERROR_GROUP', 'Непозната група. _JAVASCRIPT_'); 66 | define('LANG_ERROR_DATA', 'Нема логова за изабрани период (прво пробајте да уклоните филтере: претраживач, величина екрана). _JAVASCRIPT_'); 67 | define('LANG_ERROR_JAVASCRIPT', 'Да ли сте добро инсталирали Јаваскрипт код на вашим веб странама?'); 68 | define('LANG_ERROR_FILE', 'Не могу отворити лог фајл'); 69 | define('LANG_ERROR_SCREEN', 'Нестандардна величина екрана'); 70 | define('LANG_ERROR_LOADING', 'Слика се генерише, молимо сачекајте...'); 71 | define('LANG_ERROR_FIXED', 'Све ширине су фиксне, то није могуће. Молимо промените торе једну од ширина презентације.'); 72 | define('LANG_DEFAULT', 'стандардни'); 73 | define('LANG_CHECKS', 'Прелиминарне провере'); 74 | define('LANG_CHECK_WRITABLE', 'Дозволе записа у директоријуму конфигурација'); 75 | define('LANG_CHECK_NOT_WRITABLE', 'PHP нема дозволе записа у директоријуму конфигурација'); 76 | define('LANG_CHECK_GD', 'GD графичка библиотека'); 77 | define('LANG_CHECK_GD_IMG', 'imagecreatetruecolor() није доступна, не могу направити слике (доброг квалитета), проверите да ли је инсталиран GD'); 78 | define('LANG_CHECK_GD_ALPHA', 'imagecolorallocatealpha() није доступна, не могу направити транспарентне слике (можете да игноришите ово, али се транспарентност заиста препоручује)'); 79 | define('LANG_CHECK_GD_PNG', 'imagepng() није доступна, не могу направити PNG слике, жао ми је'); 80 | define('LANG_CHECKS_OK', 'Следећи корак: конфигурација'); 81 | define('LANG_CHECKS_KO', 'Један или више тестова није успело. Молимо исправите проблем и освежите страницу.'); 82 | define('LANG_CONFIG', 'Конфигурација'); 83 | define('LANG_CONFIG_HEADER_HEATMAP', 'Исцртавање топлотне карте'); 84 | define('LANG_CONFIG_HEADER_DISPLAY', 'Главни дисплеј'); 85 | define('LANG_CONFIG_HEADER_SECURITY', 'Сигурност'); 86 | define('LANG_CONFIG_HEADER_LOGIN', 'Параметри за улоговање'); 87 | define('LANG_CONFIG_LOGPATH', 'Директоријум лог фајлова'); 88 | define('LANG_CONFIG_LOGPATH_DIR', 'Директоријум лог фајлова не постоји. Молимо направите та'); 89 | define('LANG_CONFIG_LOGPATH_KO', 'Директоријум лог фајлова нема дозволу писања, молимо дајте дозволу писања кориснику PHP-a'); 90 | define('LANG_CONFIG_CACHEPATH', 'Директоријум привремених фајлова'); 91 | define('LANG_CONFIG_CACHEPATH_DIR', 'Директоријум привремених фајлова не постоји. Молимо направите та'); 92 | define('LANG_CONFIG_CACHEPATH_KO', 'Директоријум привремених фајлова нема дозволу писања, молимо дајте дозволу писања кориснику PHP-a'); 93 | define('LANG_CONFIG_REFERERS', 'Имена домена (раздовљени зарезима) којима је дозвољено да логују кликове на овом серверу'); 94 | define('LANG_CONFIG_GROUPS', 'Имена група (раздовљени зарезима) којима је дозвољено да логују кликове на овом серверу'); 95 | define('LANG_CONFIG_FILESIZE', 'Максимална величина лог фајла (у килобајтима) за групу у току дана (1000 кликова је око 25KB, 0 = нема лимита величине)'); 96 | define('LANG_CONFIG_CHECK', 'Проверите конфигурацију'); 97 | define('LANG_CONFIG_MEMORY', 'Лимит меморије (стандардна php.ini вредност: %dMB, лимити: од %d до %dMB, али будите опрезни са великим вредностима)'); 98 | define('LANG_CONFIG_MEMORY_KO', 'молимо останите унутар специфицираног опсега'); 99 | define('LANG_CONFIG_STEP', 'Груписање кликова по X*X пикселним зонама (убрзава презентацију топлотних мапа)'); 100 | define('LANG_CONFIG_STEP_KO', 'зоне не могу бити мање од 1x1 пиксела'); 101 | define('LANG_CONFIG_DOT', 'Величина у пикселима топлотне мапе'); 102 | define('LANG_CONFIG_DOT_KO', 'Величина у пикселима не може бити нула'); 103 | define('LANG_CONFIG_PALETTE', 'Ако видите црвене квадрате на топлотним мапама кликните на ову кутијицу'); 104 | define('LANG_CONFIG_HEATMAP', 'Прикажите топлотну мапу (уместо мапе кликова)'); 105 | define('LANG_CONFIG_FLASHES', 'Сакрите <Flash> објекте'); 106 | define('LANG_CONFIG_IFRAMES', 'Сакрите <iframe> рамове'); 107 | define('LANG_CONFIG_YESTERDAY', 'Прикажи јучерашњу статистику на почетку (а не данашњу)'); 108 | define('LANG_CONFIG_ALPHA', 'Ниво транспарентности (0 => 100)'); 109 | define('LANG_CONFIG_FLUSH', 'Аутоматско брисање статистике старије од X дана (0 = сачуфај све фајлове, није препоручено)'); 110 | define('LANG_CONFIG_START', 'Први дан у недељи'); 111 | define('LANG_CONFIG_START_M', 'Понедељак'); 112 | define('LANG_CONFIG_START_S', 'Недеља'); 113 | define('LANG_CONFIG_ADMIN_LOGIN', 'Идентификатор администратора'); 114 | define('LANG_CONFIG_ADMIN_PASS', 'Шифра администратора (укуцајте је два пута)'); 115 | define('LANG_CONFIG_VIEWER_LOGIN', 'Идентификатор посетиоца (ако је празан, налог је онемогућен)'); 116 | define('LANG_CONFIG_VIEWER_PASS', 'Шифра посетиоца (укуцајте је два пута)'); 117 | define('LANG_CONFIG_LOGIN', 'идентификатор мора имати барем 4 карактера'); 118 | define('LANG_CONFIG_PASS', 'шифра је празна'); 119 | define('LANG_CONFIG_MATCH', 'шифре нису исте'); 120 | define('LANG_CONFIG_SAVE', 'Сачувајте конфигурацију'); 121 | define('LANG_CLEANER_RUNNING', 'Чишћење је у прогресу...'); 122 | define('LANG_CLEANER_RUN', 'Чишћење завршено: %d фајлова и %d директоријума је обрисано'); 123 | define('LANG_CANCEL', 'Поништи'); 124 | define('LANG_UPGRADE', 'Надгради'); 125 | define('LANG_UPGRADE_NEXT', 'Проверите конфигурацију, онда је сачувајте да наставите са надградњом'); 126 | ?> 127 | --------------------------------------------------------------------------------