154 lines
8.0 KiB
Twig
154 lines
8.0 KiB
Twig
{% extends '@WebProfiler/Profiler/base.html.twig' %}
|
|
|
|
{% block body %}
|
|
{{ include('@WebProfiler/Profiler/header.html.twig', with_context = false) }}
|
|
|
|
<div id="summary">
|
|
{% block summary %}
|
|
{% if profile is defined %}
|
|
{% set request_collector = profile.collectors.request|default(false) %}
|
|
{% set status_code = request_collector ? request_collector.statuscode|default(0) : 0 %}
|
|
{% set css_class = status_code > 399 ? 'status-error' : status_code > 299 ? 'status-warning' : 'status-success' %}
|
|
|
|
<div class="status {{ css_class }}">
|
|
<div class="container">
|
|
<h2 class="break-long-words">
|
|
{% if profile.method|upper in ['GET', 'HEAD'] %}
|
|
<a href="{{ profile.url }}">{{ profile.url }}</a>
|
|
{% else %}
|
|
{{ profile.url }}
|
|
{% set referer = request_collector ? request_collector.requestheaders.get('referer') : null %}
|
|
{% if referer %}
|
|
<a href="{{ referer }}" class="referer">Return to referer URL</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
</h2>
|
|
|
|
{% if request_collector and request_collector.redirect -%}
|
|
{%- set redirect = request_collector.redirect -%}
|
|
{%- set controller = redirect.controller -%}
|
|
{%- set redirect_route = '@' ~ redirect.route %}
|
|
<dl class="metadata">
|
|
<dt>
|
|
<span class="label">{{ redirect.status_code }}</span>
|
|
Redirect from
|
|
</dt>
|
|
<dd>
|
|
{{ 'GET' != redirect.method ? redirect.method }}
|
|
{% if redirect.controller.class is defined -%}
|
|
{%- set link = controller.file|file_link(controller.line) -%}
|
|
{% if link %}<a href="{{ link }}" title="{{ controller.file }}">{% endif -%}
|
|
{{ redirect_route }}
|
|
{%- if link %}</a>{% endif -%}
|
|
{%- else -%}
|
|
{{ redirect_route }}
|
|
{%- endif %}
|
|
(<a href="{{ path('_profiler', { token: redirect.token, panel: request.query.get('panel', 'request') }) }}">{{ redirect.token }}</a>)
|
|
</dd>
|
|
</dl>
|
|
{%- endif %}
|
|
|
|
{% if request_collector and request_collector.forwardtoken -%}
|
|
{% set forward_profile = profile.childByToken(request_collector.forwardtoken) %}
|
|
{% set controller = forward_profile ? forward_profile.collector('request').controller : 'n/a' %}
|
|
<dl class="metadata">
|
|
<dt>Forwarded to</dt>
|
|
<dd>
|
|
{% set link = controller.file is defined ? controller.file|file_link(controller.line) : null -%}
|
|
{%- if link %}<a href="{{ link }}" title="{{ controller.file }}">{% endif -%}
|
|
{% if controller.class is defined %}
|
|
{{- controller.class|abbr_class|striptags -}}
|
|
{{- controller.method ? ' :: ' ~ controller.method -}}
|
|
{% else %}
|
|
{{- controller -}}
|
|
{% endif %}
|
|
{%- if link %}</a>{% endif %}
|
|
(<a href="{{ path('_profiler', { token: request_collector.forwardtoken }) }}">{{ request_collector.forwardtoken }}</a>)
|
|
</dd>
|
|
</dl>
|
|
{%- endif %}
|
|
|
|
<dl class="metadata">
|
|
<dt>Method</dt>
|
|
<dd>{{ profile.method|upper }}</dd>
|
|
|
|
<dt>HTTP Status</dt>
|
|
<dd>{{ status_code }}</dd>
|
|
|
|
<dt>IP</dt>
|
|
<dd>
|
|
<a href="{{ path('_profiler_search_results', { token: token, limit: 10, ip: profile.ip }) }}">{{ profile.ip }}</a>
|
|
</dd>
|
|
|
|
<dt>Profiled on</dt>
|
|
<dd><time datetime="{{ profile.time|date('c') }}">{{ profile.time|date('r') }}</time></dd>
|
|
|
|
<dt>Token</dt>
|
|
<dd>{{ profile.token }}</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% endblock %}
|
|
</div>
|
|
|
|
<div id="content" class="container">
|
|
<div id="main">
|
|
<div id="sidebar">
|
|
<div id="sidebar-shortcuts">
|
|
<div class="shortcuts">
|
|
<a href="#" id="sidebarShortcutsMenu" class="visible-small">
|
|
<span class="icon">{{ include('@WebProfiler/Icon/menu.svg') }}</span>
|
|
</a>
|
|
|
|
<a class="btn btn-sm" href="{{ path('_profiler_search', { limit: 10 }) }}">Last 10</a>
|
|
<a class="btn btn-sm" href="{{ path('_profiler', { token: 'latest' }|merge(request.query.all)) }}">Latest</a>
|
|
|
|
<a class="sf-toggle btn btn-sm" data-toggle-selector="#sidebar-search" {% if tokens is defined or about is defined %}data-toggle-initial="display"{% endif %}>
|
|
{{ include('@WebProfiler/Icon/search.svg') }} <span class="hidden-small">Search</span>
|
|
</a>
|
|
|
|
{{ render(controller('web_profiler.controller.profiler::searchBarAction', request.query.all)) }}
|
|
</div>
|
|
</div>
|
|
|
|
{% if templates is defined %}
|
|
<ul id="menu-profiler">
|
|
{% for name, template in templates %}
|
|
{% set menu -%}
|
|
{%- if block('menu', template) is defined -%}
|
|
{% with { collector: profile.getcollector(name), profiler_markup_version: profiler_markup_version } %}
|
|
{{- block('menu', template) -}}
|
|
{% endwith %}
|
|
{%- endif -%}
|
|
{%- endset %}
|
|
{% if menu is not empty %}
|
|
<li class="{{ name }} {{ name == panel ? 'selected' }}">
|
|
<a href="{{ path('_profiler', { token: token, panel: name }) }}">{{ menu|raw }}</a>
|
|
</li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</ul>
|
|
{% endif %}
|
|
|
|
{{ include('@WebProfiler/Profiler/settings.html.twig') }}
|
|
</div>
|
|
|
|
<div id="collector-wrapper">
|
|
<div id="collector-content">
|
|
{{ include('@WebProfiler/Profiler/base_js.html.twig') }}
|
|
{% block panel '' %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function () {
|
|
Sfjs.addEventListener(document.getElementById('sidebarShortcutsMenu'), 'click', function (event) {
|
|
event.preventDefault();
|
|
Sfjs.toggleClass(document.getElementById('sidebar'), 'expanded');
|
|
})
|
|
}());
|
|
</script>
|
|
{% endblock %}
|