1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* Panel.php |
4
|
|
|
* |
5
|
|
|
* @copyright More in license.md |
6
|
|
|
* @license https://www.ipublikuj.eu |
7
|
|
|
* @author Adam Kadlec <[email protected]> |
8
|
|
|
* @package iPublikuj:MobileDetect! |
9
|
|
|
* @subpackage Diagnostics |
10
|
|
|
* @since 1.0.0 |
11
|
|
|
* |
12
|
|
|
* @date 21.04.14 |
13
|
|
|
*/ |
14
|
|
|
|
15
|
|
|
declare(strict_types = 1); |
16
|
|
|
|
17
|
|
|
namespace IPub\MobileDetect\Diagnostics; |
18
|
|
|
|
19
|
|
|
use Nette; |
20
|
|
|
|
21
|
|
|
use Tracy; |
22
|
|
|
|
23
|
|
|
use IPub\MobileDetect; |
24
|
|
|
|
25
|
|
|
/** |
26
|
|
|
* Mobile device detect tracy panel |
27
|
|
|
* |
28
|
|
|
* @package iPublikuj:MobileDetect! |
29
|
|
|
* @subpackage Diagnostics |
30
|
|
|
* |
31
|
|
|
* @author Václav Pelíšek <[email protected]> |
32
|
|
|
*/ |
33
|
1 |
|
final class Panel implements Tracy\IBarPanel |
34
|
|
|
{ |
35
|
|
|
/** |
36
|
|
|
* Implement nette smart magic |
37
|
|
|
*/ |
38
|
1 |
|
use Nette\SmartObject; |
39
|
|
|
|
40
|
|
|
/** @var MobileDetect\MobileDetect |
41
|
|
|
*/ |
42
|
|
|
private $mobileDetect; |
43
|
|
|
|
44
|
|
|
/** |
45
|
|
|
* @param MobileDetect\MobileDetect $mobileDetect |
46
|
|
|
* |
47
|
|
|
* @return self |
48
|
|
|
*/ |
49
|
|
|
public function register(MobileDetect\MobileDetect $mobileDetect) : self |
50
|
|
|
{ |
51
|
1 |
|
$this->mobileDetect = $mobileDetect; |
52
|
|
|
|
53
|
1 |
|
Tracy\Debugger::getBar()->addPanel($this, 'ipub.mobileDetect'); |
54
|
|
|
|
55
|
1 |
|
return $this; |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
/** |
59
|
|
|
* Renders HTML code for custom tab |
60
|
|
|
* |
61
|
|
|
* @return string |
62
|
|
|
*/ |
63
|
|
|
public function getTab() |
64
|
|
|
{ |
65
|
|
|
return '<span title="Mobile detect"><img width="16px" height="16px" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAACNCAYAAAAeuFBXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMzg3RTE0RTg0MUYxMUUyQkRDMEVDMzQ5RjcxOEI3OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOUUwNjQ2QTg0MjAxMUUyQkRDMEVDMzQ5RjcxOEI3OCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUzODdFMTRDODQxRjExRTJCREMwRUMzNDlGNzE4Qjc4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUzODdFMTREODQxRjExRTJCREMwRUMzNDlGNzE4Qjc4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kH3WGwAABD9JREFUeNrs3d1uFVUYh/EZw3l7B2zvoHpi1Gh3JZoYY6xX0HrgiRptUROMke6Nn1GQatQDj+AO8AOMgLD9gnhg5A6sdwA3wHKm1AMT7S666ax51+9JFlMSkuZd+z8vz1ozq61TShUQhboNdH30zELz9abpQF9Jx5aH7fXAzt/nm7FoWtB37jIFEGhAoAGBBm6LW4vCut7t34xNEzJh0IyV6YHehTR+amQekQP1xhfDaYGmHChOOYBMWvT0nOrQCIVAQ6ABDg1waIByQKABDg1k59AHZvr9nHzBbfLXSZPZdujZ4eQLMlCOakbKQV1wZ51jrw5tqhAiz3Y5EFI59m8VCvTHoYFQDq1Dg0MDlANaNOUA5QD6qBz7eAsBvXFoeUYohwY6dmhPChEKi0JwaKAMh6Yc6NihKQcox/+6hYA7rhyVPCNShxZEBHFo+9Dg0EDeDl3v3zcEeqQc5hzdYh8aHFqLRhkOLc8I5dASjVDKIc/ouEVbFCJgh7YPDQ4tz4ju0BINDg3k6tAaNPJwaIlGjERbFIJySDRyVQ6LQgTs0B59g0NLNMI7NNCtQ9vlAIeWaJTh0PKMWA4t0cjCoQURlEODRq6LQokGh5ZnRHdoiUa3ifZyEiiHBo3MlcOiEJE6tCAiSIu2Dw0OLdHI3KGdWAHlkGhkh31ocGgNGmU4tESj40RTDgRUjpndQDo0Ijk0EMqh3RjoONH2oUE5gEKUw52BbhNt2w6hEGhwaMqBMhwa6DjRnhSCQwOZO7TOij4Yh207FNmhZ8dWM8amFSECnZ69tw30yLSCQwMcGhBoxFcOE4E+KMeeF4USjRiJphzg0EDmDk050AfjoBygHEDflWO3Lv/5rxPThEyYn4VDL5pHUA6gM+VIyUxAoAGBBvYh0FuVkybDQAvgYj/LOunOVf3ZL+12UHtTzwUpaT09d9+mQJca6E+vth/+S4FKutGMQXr+/usCXdoEfHJl0Fx+D1ja6fTCA6sCXdoEfPzzpIr78Oie9OKD18pbFJYa5o9+Glaxn4Ru7ix2degiit/8sV0IHgxe5tNp7aEzAh298JM/rDWXkwWU+kczFtL6w9cFOmrRH34fbZtuGuN0eHEk0FGLPnH5VHNZKajkG9td+uWlLYGOVvDxSwvN5bcCLet0euWRVYGOVvAH302qct/xXkqvHppELrCobbv6/YvLVdkHFlqPHurQUYp970LrkAersnkmHXn0lED3vdB3z7fdaaPCrfc8Xnss5DZeEcpRv/PtoLmsyfI2cztzMdKh+1rk29+0/8WuyPLfuDu9/viWDt23ML91bijM/0j7nseyDt23At88O6n8KIZ/Yym98cREh+5LmI99vSrMU7v0gg7dh8LGX5X2vsZ/ZT1tPBnmuFbcHzST0loz5rZPtBu7jVE9+nI+ysceVzlu3mz/9DsT98agGSFOtjgki1D8KcAASOpOloXu01cAAAAASUVORK5CYII=" />' |
66
|
|
|
. $this->mobileDetect->view() . ' / ' . $this->mobileDetect->platform() . '</span>'; |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
/** |
70
|
|
|
* Renders HTML code for custom panel |
71
|
|
|
* |
72
|
|
|
* @return string |
73
|
|
|
*/ |
74
|
|
|
public function getPanel() |
75
|
|
|
{ |
76
|
|
|
$h = 'htmlSpecialChars'; |
77
|
|
|
|
78
|
|
|
$panel = []; |
79
|
|
|
|
80
|
|
|
$panel[] = '<h2>Original User agent header</h2>'; |
81
|
|
|
$panel[] = '<p>' . $h($this->mobileDetect->getUserAgent()) . '</p>'; |
82
|
|
|
|
83
|
|
|
$properties = ['view', 'platform', 'platformVersion', 'device', 'browser', 'browserVersion']; |
84
|
|
|
|
85
|
|
|
$panel[] = '<table style="width:100%">'; |
86
|
|
|
foreach ($properties as $property) { |
87
|
|
|
$panel[] = '<tr><th>' . ucfirst($property) . '</th><td>' . $h($this->mobileDetect->{$property}() ?: '') . '</td></tr>'; |
88
|
|
|
} |
89
|
|
|
$panel[] = '</table>'; |
90
|
|
|
|
91
|
|
|
return empty($panel) ? '' : |
92
|
|
|
'<h1>View: ' . $this->mobileDetect->view() . ', OS: ' . $this->mobileDetect->platform() . '</h1>' . |
93
|
|
|
'<div class="nette-inner tracy-inner ipub-MobileDetectPanel" style="min-width:500px">' . implode($panel) . '</div>' . |
94
|
|
|
'<style> |
95
|
|
|
#nette-debug .ipub-MobileDetectPanel h2, |
96
|
|
|
#tracy-debug .ipub-MobileDetectPanel h2 {font-size: 17px;} |
97
|
|
|
</style>'; |
98
|
|
|
} |
99
|
|
|
} |
100
|
|
|
|