webprofiler_loader.html.twig 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <div id="webprofiler{{ token }}" class="sf-toolbar" style="display: none"></div>
  2. <script>
  3. Webprofiler = (function () {
  4. "use strict";
  5. var key = 'webprofiler/profiler/',
  6. getPreference = function (name) {
  7. if (!window.localStorage) {
  8. return null;
  9. }
  10. return localStorage.getItem(key + name);
  11. },
  12. setPreference = function (name, value) {
  13. if (!window.localStorage) {
  14. return null;
  15. }
  16. localStorage.setItem(key + name, value);
  17. return true;
  18. },
  19. load = function () {
  20. ajax('{{ profiler_url }}', function (result) {
  21. var toolbar = document.getElementById('webprofiler{{ token }}');
  22. toolbar.innerHTML = result;
  23. toolbar.style.display = 'block';
  24. if (getPreference('toolbar/displayState') == 'none') {
  25. document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'none';
  26. document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'none';
  27. document.getElementById('sfMiniToolbar-{{ token }}').style.display = 'block';
  28. } else {
  29. document.getElementById('sfToolbarMainContent-{{ token }}').style.display = 'block';
  30. document.getElementById('sfToolbarClearer-{{ token }}').style.display = 'block';
  31. document.getElementById('sfMiniToolbar-{{ token }}').style.display = 'none';
  32. }
  33. var arr = toolbar.getElementsByTagName('script');
  34. for (var n = 0; n < arr.length; n++) {
  35. eval(arr[n].innerHTML);
  36. }
  37. });
  38. },
  39. ajax = function (url, callback, data) {
  40. try {
  41. var x = new (XMLHttpRequest || ActiveXObject)('MSXML2.XMLHTTP.3.0');
  42. x.open(data ? 'POST' : 'GET', url, 1);
  43. x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  44. x.setRequestHeader('Content-type', 'application/json');
  45. x.onreadystatechange = function () {
  46. x.readyState > 3 && x.status === 200 && callback && callback(x.responseText, x);
  47. };
  48. x.send(data);
  49. } catch (e) {
  50. window.console && console.log(e);
  51. }
  52. };
  53. return {
  54. getPreference: getPreference,
  55. setPreference: setPreference,
  56. load: load,
  57. ajax: ajax
  58. }
  59. })();
  60. Webprofiler.load();
  61. </script>