Source for file profiler.phtml
Documentation is available at profiler.phtml
- 1: <?php
- 3: /**
- 4: * Nette Framework - Profiler screen template.
- 5: *
- 11: *
- 14: */
- 18: ?>
- 20: <style type="text/css">
- 21: /* <![CDATA[ */
- 22: #netteProfilerContainer {
- 23: position: fixed;
- 24: _position: absolute;
- 25: right: 5px;
- 26: bottom: 5px;
- 27: z-index: 23178;
- 28: }
- 30: #netteProfiler {
- 31: font: normal normal 11px/1.4 Consolas, Arial;
- 32: position: relative;
- 33: padding: 3px;
- 34: color: black;
- 35: background: #EEE;
- 36: border: 1px dotted gray;
- 37: cursor: move;
- 38: opacity: .70;
- 39: =filter: alpha(opacity=70);
- 40: }
- 42: #netteProfiler * {
- 43: color: inherit;
- 44: background: inherit;
- 45: text-align: inherit;
- 46: }
- 48: #netteProfilerIcon {
- 49: position: absolute;
- 50: right: 0;
- 51: top: 0;
- 52: line-height: 1;
- 53: padding: 2px;
- 54: color: black;
- 55: text-decoration: none;
- 56: }
- 58: #netteProfiler:hover {
- 59: opacity: 1;
- 60: =filter: none;
- 61: }
- 63: #netteProfiler ul {
- 64: margin: 0;
- 65: padding: 0;
- 66: width: 350px;
- 67: }
- 69: #netteProfiler li {
- 70: margin: 0;
- 71: padding: 1px;
- 72: text-align: left;
- 73: list-style: none;
- 74: }
- 76: #netteProfiler span[title] {
- 77: border-bottom: 1px dotted gray;
- 78: cursor: help;
- 79: }
- 81: #netteProfiler strong {
- 82: color: red;
- 83: }
- 84: /* ]]> */
- 85: </style>
- 88: <div id="netteProfilerContainer">
- 89: <div id="netteProfiler">
- 90: <a id="netteProfilerIcon" href="#"><abbr>▼</abbr></a
- 91: ><ul>
- 93: <?php foreach ((array) call_user_func($callback, 'profiler') as $line): ?><li><?php echo $line, "\n" ?></li><?php endforeach ?>
- 95: </ul>
- 96: </div>
- 97: </div>
- 100: <script type="text/javascript">
- 101: /* <![CDATA[ */
- 102: document.getElementById('netteProfiler').onmousedown = function(e) {
- 103: e = e || event;
- 104: this.posX = parseInt(this.style.left + '0');
- 105: this.posY = parseInt(this.style.top + '0');
- 106: this.mouseX = e.clientX;
- 107: this.mouseY = e.clientY;
- 109: var thisObj = this;
- 111: document.documentElement.onmousemove = function(e) {
- 112: e = e || event;
- 113: thisObj.style.left = (e.clientX - thisObj.mouseX + thisObj.posX) + "px";
- 114: thisObj.style.top = (e.clientY - thisObj.mouseY + thisObj.posY) + "px";
- 115: return false;
- 116: };
- 118: document.documentElement.onmouseup = function(e) {
- 119: document.documentElement.onmousemove = null;
- 120: document.documentElement.onmouseup = null;
- 121: document.cookie = 'netteProfilerPosition=' + thisObj.style.left + ':' + thisObj.style.top + '; path=/';
- 122: return false;
- 123: };
- 124: };
- 126: document.getElementById('netteProfilerIcon').onclick = function(e) {
- 127: var arrow = this.getElementsByTagName('abbr')[0];
- 128: var panel = this.nextSibling;
- 129: var collapsed = panel.currentStyle ? panel.currentStyle.display == 'none' : getComputedStyle(panel, null).display == 'none';
- 131: arrow.innerHTML = collapsed ? String.fromCharCode(0x25bc) : 'Profiler ' + String.fromCharCode(0x25ba);
- 132: panel.style.display = collapsed ? 'block' : 'none';
- 133: arrow.parentNode.style.position = collapsed ? 'absolute' : 'static';
- 135: document.cookie = 'netteProfilerVisible=' + collapsed*1 + '; path=/';
- 136: return false;
- 137: }
- 139: document.body.appendChild(document.getElementById('netteProfilerContainer'));
- 141: if (document.cookie.indexOf('netteProfilerVisible=0') > -1) {
- 142: document.getElementById('netteProfilerIcon').onclick();
- 143: }
- 145: var _nettePos = document.cookie.match(/netteProfilerPosition=([0-9-]+px):([0-9-]+px)/);
- 146: if (_nettePos) {
- 147: document.getElementById('netteProfiler').style.left = _nettePos[1];
- 148: document.getElementById('netteProfiler').style.top = _nettePos[2];
- 149: }
- 150: /* ]]> */
- 151: </script>