[11/06/2024] Les premières modifs + installation de quelques modules indispensables

This commit is contained in:
2024-06-11 14:57:59 +02:00
parent 5ac5653ae5
commit 77cf2c7cc6
1626 changed files with 171457 additions and 131 deletions

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<loops>
<!-- sample definition
<loop name="MySuperLoop" class="WebProfiler\Loop\MySuperLoop" />
-->
</loops>
<forms>
<!--
<form name="MyFormName" class="WebProfiler\Form\MySuperForm" />
-->
</forms>
<commands>
<!--
<command class="WebProfiler\Command\MySuperCommand" />
-->
</commands>
<!--
<services>
</services>
-->
<!--
<hooks>
<hook id="webprofiler.hook" class="WebProfiler\Hook\MySuperHook">
<tag name="hook.event_listener" event="main.body.bottom" type="front|back|pdf|email" method="onMainBodyBottom" />
</hook>
</hooks>
-->
<!--
<exports>
</exports>
-->
<!--
<imports>
</imports>
-->
</config>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<loops>
<!-- sample definition
<loop name="MySuperLoop" class="WebProfiler\Loop\MySuperLoop" />
-->
</loops>
<forms>
<!--
<form name="MyFormName" class="WebProfiler\Form\MySuperForm" />
-->
</forms>
<commands>
<!--
<command class="WebProfiler\Command\MySuperCommand" />
-->
</commands>
<!--
<services>
</services>
-->
<!--
<hooks>
<hook id="webprofiler.hook" class="WebProfiler\Hook\MySuperHook">
<tag name="hook.event_listener" event="main.body.bottom" type="front|back|pdf|email" method="onMainBodyBottom" />
</hook>
</hooks>
-->
<!--
<exports>
</exports>
-->
<!--
<imports>
</imports>
-->
</config>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<loops>
<!-- sample definition
<loop name="MySuperLoop" class="WebProfiler\Loop\MySuperLoop" />
-->
</loops>
<forms>
<!--
<form name="MyFormName" class="WebProfiler\Form\MySuperForm" />
-->
</forms>
<commands>
<!--
<command class="WebProfiler\Command\MySuperCommand" />
-->
</commands>
<!--
<services>
</services>
-->
<!--
<hooks>
<hook id="webprofiler.hook" class="WebProfiler\Hook\MySuperHook">
<tag name="hook.event_listener" event="main.body.bottom" type="front|back|pdf|email" method="onMainBodyBottom" />
</hook>
</hooks>
-->
<!--
<exports>
</exports>
-->
<!--
<imports>
</imports>
-->
</config>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<loops>
<!-- sample definition
<loop name="MySuperLoop" class="WebProfiler\Loop\MySuperLoop" />
-->
</loops>
<forms>
<!--
<form name="MyFormName" class="WebProfiler\Form\MySuperForm" />
-->
</forms>
<commands>
<!--
<command class="WebProfiler\Command\MySuperCommand" />
-->
</commands>
<!--
<services>
</services>
-->
<!--
<hooks>
<hook id="webprofiler.hook" class="WebProfiler\Hook\MySuperHook">
<tag name="hook.event_listener" event="main.body.bottom" type="front|back|pdf|email" method="onMainBodyBottom" />
</hook>
</hooks>
-->
<!--
<exports>
</exports>
-->
<!--
<imports>
</imports>
-->
</config>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://thelia.net/schema/dic/module"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_2.xsd">
<fullnamespace>WebProfiler\WebProfiler</fullnamespace>
<descriptive locale="en_US">
<title>Add thelia specific data to web profiler</title>
<!--
<subtitle></subtitle>
<description></description>
<postscriptum></postscriptum>
-->
</descriptive>
<descriptive locale="fr_FR">
<title>Ajoute des données spécifique a thelia dans le web profiler</title>
</descriptive>
<!-- <logo></logo> -->
<!--<images-folder>images</images-folder>-->
<languages>
<language>en_US</language>
<language>fr_FR</language>
</languages>
<version>2.5.4</version>
<authors>
<author>
<name></name>
<email></email>
</author>
</authors>
<type>classic</type>
<!--
module dependencies
<required>
<module version="&gt;=0.1">Front</module>
<module version="~1.0">HookCart</module>
<module version="&gt;0.2">HookSearch</module>
</required>
-->
<thelia>2.5.4</thelia>
<stability>other</stability>
<mandatory>0</mandatory>
<hidden>1</hidden>
</module>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<!--
if a /admin/module/webprofiler/ route is provided, a "Configuration" button will be displayed
for the module in the module list. Clicking this button will invoke this route.
<route id="my_route_id" path="/admin/module/webprofiler">
<default key="_controller">WebProfiler\Full\Class\Name\Of\YourConfigurationController::methodName</default>
</route>
<route id="my_route_id" path="/admin/module/webprofiler/route-name">
<default key="_controller">WebProfiler\Full\Class\Name\Of\YourAdminController::methodName</default>
</route>
<route id="my_route_id" path="/my/route/name">
<default key="_controller">WebProfiler\Full\Class\Name\Of\YourOtherController::methodName</default>
</route>
...add as many routes as required.
<route>
...
</route>
-->
</routes>

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<database defaultIdMethod="native" name="TheliaMain"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../vendor/thelia/propel/resources/xsd/database.xsd" >
<!--
See propel documentation on http://propelorm.org for all information about schema file
<table name="product_rel" namespace="WebProfiler\Model">
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
<column defaultValue="0" name="visible" required="true" type="TINYINT" />
<column defaultValue="0" name="position" required="true" type="INTEGER" />
<column name="title" size="255" type="VARCHAR" />
<column name="description" type="CLOB" />
<column name="chapo" type="LONGVARCHAR" />
<column name="postscriptum" type="LONGVARCHAR" />
<foreign-key foreignTable="product" name="fk_product_id" onDelete="CASCADE" onUpdate="RESTRICT">
<reference foreign="id" local="product_id" />
</foreign-key>
<behavior name="timestampable" />
<behavior name="i18n">
<parameter name="i18n_columns" value="title, description, chapo, postscriptum" />
</behavior>
</table>
-->
</database>

View File

@@ -0,0 +1,58 @@
<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace WebProfiler\DataCollector;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
use TheliaSmarty\Template\DataCollectorSmartyParser;
class SmartyDataCollector extends DataCollector
{
private $smartyParser;
public function __construct(DataCollectorSmartyParser $smartyParser)
{
$this->smartyParser = $smartyParser;
}
public function collect(Request $request, Response $response, \Throwable $exception = null): void
{
$this->data['templates'] = $this->smartyParser->getCollectedTemplates();
}
public function getTemplates()
{
return $this->data['templates'];
}
public function getTemplateCount()
{
return \count($this->data['templates']);
}
public function getTotalExecutionTime()
{
return array_reduce($this->data['templates'], function ($carry, $template) { return $carry + $template['executionTime']; }, 0);
}
public function getName()
{
return 'smarty';
}
public function reset(): void
{
$this->data['templates'] = [];
}
}

View File

@@ -0,0 +1,38 @@
<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace WebProfiler\DataCollector;
use Symfony\Bundle\FrameworkBundle\DataCollector\AbstractDataCollector;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Thelia\Core\Thelia;
class TheliaCollector extends AbstractDataCollector
{
public function collect(Request $request, Response $response, \Throwable $exception = null): void
{
$this->data = [
'theliaVersion' => Thelia::THELIA_VERSION,
];
}
public function getTheliaVersion()
{
return $this->data['theliaVersion'];
}
public static function getTemplate(): ?string
{
return '@WebProfilerModule/debug/dataCollector/thelia.html.twig';
}
}

View File

@@ -0,0 +1,15 @@
<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// 'an english string' => 'The displayed english string',
];

View File

@@ -0,0 +1,15 @@
<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
// 'an english string' => 'La traduction française de la chaine',
];

View File

@@ -0,0 +1,55 @@
# Web Profiler
Add a short description here. You can also add a screenshot if needed.
## Installation
### Manually
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the module is WebProfiler.
* Activate it in your thelia administration panel
### Composer
Add it in your main thelia composer.json file
```
composer require your-vendor/web-profiler-module:~1.0
```
## Usage
Explain here how to use your module, how to configure it, etc.
## Hook
If your module use one or more hook, fill this part. Explain which hooks are used.
## Loop
If your module declare one or more loop, describe them here like this :
[loop name]
### Input arguments
|Argument |Description |
|--- |--- |
|**arg1** | describe arg1 with an exemple. |
|**arg2** | describe arg2 with an exemple. |
### Output arguments
|Variable |Description |
|--- |--- |
|$VAR1 | describe $VAR1 variable |
|$VAR2 | describe $VAR2 variable |
### Exemple
Add a complete exemple of your loop
## Other ?
If you have other think to put, feel free to complete your readme as you want.

View File

@@ -0,0 +1,62 @@
<?php
/*
* This file is part of the Thelia package.
* http://www.thelia.net
*
* (c) OpenStudio <info@thelia.net>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace WebProfiler;
use Symfony\Component\DependencyInjection\Loader\Configurator\ServicesConfigurator;
use Thelia\Module\BaseModule;
use TheliaSmarty\Template\DataCollectorSmartyParser;
use WebProfiler\DataCollector\SmartyDataCollector;
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
class WebProfiler extends BaseModule
{
/** @var string */
public const DOMAIN_NAME = 'webprofiler';
/*
* You may now override BaseModuleInterface methods, such as:
* install, destroy, preActivation, postActivation, preDeactivation, postDeactivation
*
* Have fun !
*/
/**
* Defines how services are loaded in your modules.
*/
public static function configureServices(ServicesConfigurator $servicesConfigurator): void
{
$servicesConfigurator->load(self::getModuleCode().'\\', __DIR__)
->exclude(
[
THELIA_MODULE_DIR.ucfirst(self::getModuleCode()).'/I18n/*',
THELIA_MODULE_DIR.ucfirst(self::getModuleCode()).'/DataCollector/SmartyDataCollector',
]
)
->autowire(true)
->autoconfigure(true);
$servicesConfigurator->set('data_collector.smarty', SmartyDataCollector::class)
->args([
service(DataCollectorSmartyParser::class)->ignoreOnInvalid(),
])
->tag(
'data_collector',
[
'template' => '@WebProfilerModule/debug/dataCollector/smarty.html.twig',
'id' => 'smarty',
'priority' => 42,
]
);
}
}

View File

@@ -0,0 +1,12 @@
{
"name": "your-vendor/web-profiler-module",
"description": "WebProfiler module for Thelia",
"license": "LGPL-3.0-or-later",
"type": "thelia-module",
"require": {
"thelia/installer": "~1.1"
},
"extra": {
"installer-name": "WebProfiler"
}
}

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="{{ _charset }}" />
<meta name="robots" content="noindex,nofollow" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>{% block title %}Thelia Profiler{% endblock %}</title>
<link rel="shortcut icon" href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgd2lkdGg9IjIxLjU1MTE5MyIKICAgaGVpZ2h0PSIyMS41NTExNTUiCiAgIHZpZXdCb3g9IjAgMCA1LjcwMjE1NzIgNS43MDIyODk5IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc5MTMiPgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTkxNyI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczkwMyI+CiAgICA8cGF0aAogICAgICAgaWQ9ImEiCiAgICAgICBkPSJtIDE3Ljc4MSwxMDYuMzAzIGggMTcyLjQ0NiB2IDU3LjU4IEggMTcuNzgxIFoiIC8+CiAgPC9kZWZzPgogIDxnCiAgICAgYXJpYS1sYWJlbD0idGhlbGlhIgogICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuNzc3MTU3MTMsMCwwLDAuNzczMTE4NywtMjcuNjEzNTE1LC04NS44NjAwODYpIgogICAgIGlkPSJ0ZXh0OTExIgogICAgIHN0eWxlPSJmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjEyLjdweDtsaW5lLWhlaWdodDoxLjE1O2ZvbnQtZmFtaWx5OlJFWjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlJFWjt3aGl0ZS1zcGFjZTpwcmU7c2hhcGUtaW5zaWRlOnVybCgjYSkiPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMzkuMjA2MDk0LDExMS44OTM1IHEgMC41OTY5LDAgMS4xMDQ5LDAuMjI4NiAwLjUyMDcsMC4yMTU5IDAuOTAxNywwLjYwOTU5IDAuMzkzNywwLjM4MSAwLjYwOTYsMC45MDE3IDAuMjI4NiwwLjUwOCAwLjIyODYsMS4xMDQ5IHYgMi44NTc1IGggLTIuODQ0OCBxIC0wLjU4NDIsMCAtMS4xMDQ5LC0wLjIxNTkgLTAuNTIwNywtMC4yMjg2IC0wLjkxNDQsLTAuNjIyMyAtMC4zOTM3LC0wLjM5MzcgLTAuNjIyMywtMC45MTQ0IC0wLjIxNTksLTAuNTIwNyAtMC4yMTU5LC0xLjEwNDkgMCwtMC41OTY5IDAuMjE1OSwtMS4xMDQ5IDAuMjI4NiwtMC41MjA3IDAuNjIyMywtMC45MDE3IDAuMzkzNywtMC4zOTM2OSAwLjkxNDQsLTAuNjA5NTkgMC41MjA3LC0wLjIyODYgMS4xMDQ5LC0wLjIyODYgeiBtIDEuNzE0NSw0LjU3MTk5IHYgLTEuNzI3MiBxIDAsLTAuMzU1NiAtMC4xMzk3LC0wLjY2MDQgLTAuMTI3LC0wLjMxNzUgLTAuMzY4MywtMC41NDYxIC0wLjIyODYsLTAuMjQxMyAtMC41NDYxLC0wLjM2ODMgLTAuMzA0OCwtMC4xMzk3IC0wLjY2MDQsLTAuMTM5NyAtMC4zNTU2LDAgLTAuNjczMSwwLjEzOTcgLTAuMzE3NSwwLjEyNyAtMC41NTg4LDAuMzY4MyAtMC4yMjg2LDAuMjI4NiAtMC4zNjgzLDAuNTQ2MSAtMC4xMjcsMC4zMDQ4IC0wLjEyNywwLjY2MDQgMCwwLjM1NTYgMC4xMjcsMC42NzMxIDAuMTM5NywwLjMxNzUgMC4zNjgzLDAuNTU4OCAwLjI0MTMsMC4yMjg2IDAuNTU4OCwwLjM2ODMgMC4zMTc1LDAuMTI3IDAuNjczMSwwLjEyNyB6IgogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MC4zNDM5NzE7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGlkPSJwYXRoOTI5IiAvPgogIDwvZz4KPC9zdmc+Cg==" />
{% block head %}
<style>
{{ include('@WebProfiler/Profiler/profiler.css.twig') }}
</style>
{% endblock %}
</head>
<body>
<script>
document.body.classList.add(
localStorage.getItem('symfony/profiler/theme') || (matchMedia('(prefers-color-scheme: dark)').matches ? 'theme-dark' : 'theme-light'),
localStorage.getItem('symfony/profiler/width') || 'width-normal'
);
</script>
{% block body '' %}
</body>
</html>

View File

@@ -0,0 +1,5 @@
<div id="header">
<div class="container">
<h1>{{ include('@WebProfilerModule/debug/dataCollector/Icon/thelia.svg') }} <span>Profiler</span></h1>
</div>
</div>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="512px"
height="512px"
viewBox="0 0 512 512"
enable-background="new 0 0 512 512"
xml:space="preserve"
sodipodi:docname="smarty.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="985"
id="namedview5"
showgrid="false"
inkscape:zoom="1.53125"
inkscape:cx="256"
inkscape:cy="256"
inkscape:window-x="1920"
inkscape:window-y="26"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<path
d="M384,192c0,64-64,127-64,192H192c0-63-64-128-64-192c0-70.688,57.313-128,128-128S384,121.313,384,192z M304,448h-96 c-8.844,0-16,7.156-16,16s7.156,16,16,16h2.938c6.594,18.625,24.188,32,45.063,32s38.469-13.375,45.063-32H304 c8.844,0,16-7.156,16-16S312.844,448,304,448z M304,400h-96c-8.844,0-16,7.156-16,16s7.156,16,16,16h96c8.844,0,16-7.156,16-16 S312.844,400,304,400z M81.719,109.875l28.719,16.563c4.438-9.813,9.844-19,16.094-27.656L97.719,82.125L81.719,109.875z M272,33.625V0h-32v33.625C245.344,33.063,250.5,32,256,32S266.656,33.063,272,33.625z M190.438,46.438l-16.563-28.719l-27.75,16 l16.656,28.813C171.438,56.281,180.625,50.875,190.438,46.438z M430.281,109.875l-16-27.75l-28.813,16.656 c6.25,8.656,11.688,17.844,16.125,27.656L430.281,109.875z M365.844,33.719l-27.688-16l-16.563,28.719 c9.781,4.438,19,9.844,27.625,16.063L365.844,33.719z M96,192c0-5.5,1.063-10.656,1.625-16H64v32h33.688 C97.063,202.688,96,197.438,96,192z M414.375,176c0.563,5.344,1.625,10.5,1.625,16c0,5.438-1.063,10.688-1.688,16H448v-32H414.375z M388.094,286.719l26.188,15.125l16-27.719l-29.063-16.75C397.188,267.313,392.813,277.063,388.094,286.719z M81.719,274.125 l16,27.719l25.969-14.969c-4.688-9.688-9.063-19.5-13.031-29.438L81.719,274.125z"
id="path2"
style="fill:#aaaaaa;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#FFD15C;" d="M314.667,391.467c6.4-21.333,19.2-40.533,36.267-55.467c32-26.667,52.267-67.2,52.267-112
c0-83.2-69.333-151.467-154.667-147.2C172.8,80,110.933,144,108.8,219.733C107.733,266.667,128,308.267,161.067,336
C179.2,350.933,192,370.133,198.4,391.467L314.667,391.467L314.667,391.467z"/>
<path style="fill:#FFFFFF;" d="M242.133,393.6h9.6l-42.667-158.933c1.067,0,2.133,0,3.2,0c5.333,0,10.667-2.133,14.933-6.4
c2.133-2.133,4.267-3.2,7.467-3.2c3.2,0,5.333,1.067,7.467,3.2c7.467,8.533,20.267,8.533,27.733,0c2.133-2.133,4.267-3.2,7.467-3.2
c2.133,0,5.333,1.067,7.467,3.2c4.267,4.267,8.533,6.4,14.933,6.4c1.067,0,2.133,0,3.2,0l-41.6,158.933h9.6l43.733-166.4
c0-2.133,0-4.267-2.133-5.333c-2.133-1.067-4.267,0-5.333,1.067c-2.133,2.133-4.267,3.2-6.4,3.2c-3.2,0-5.333-1.067-8.533-3.2
c-4.267-4.267-8.533-6.4-13.867-6.4s-9.6,2.133-13.867,6.4s-10.667,4.267-14.933,0c-3.2-4.267-8.533-6.4-13.867-6.4l0,0
c-5.333,0-10.667,2.133-13.867,6.4c-2.133,2.133-5.333,3.2-8.533,3.2c-2.133,0-5.333-1.067-6.4-3.2
c-1.067-1.067-3.2-2.133-5.333-1.067c-2.133,1.067-3.2,3.2-2.133,5.333L242.133,393.6z"/>
<g>
<path style="fill:#344A5E;" d="M222.933,489.6C228.267,502.4,241.067,512,256,512c14.933,0,27.733-9.6,33.067-22.4H222.933z"/>
<path style="fill:#344A5E;" d="M295.467,490.667H217.6c-10.667,0-19.2-8.533-19.2-19.2V390.4h116.267v81.067
C314.667,482.133,306.133,490.667,295.467,490.667z"/>
</g>
<g>
<path style="fill:#415A6B;" d="M313.6,430.933H198.4c-6.4,0-11.733-5.333-11.733-11.733l0,0c0-6.4,5.333-11.733,11.733-11.733
h115.2c6.4,0,11.733,5.333,11.733,11.733l0,0C325.333,425.6,320,430.933,313.6,430.933z"/>
<path style="fill:#415A6B;" d="M313.6,468.267H198.4c-6.4,0-11.733-5.333-11.733-11.733l0,0c0-6.4,5.333-11.733,11.733-11.733
h115.2c6.4,0,11.733,5.333,11.733,11.733l0,0C325.333,462.933,320,468.267,313.6,468.267z"/>
</g>
<g>
<path style="fill:#FFD15C;" d="M256,0c-5.333,0-10.667,4.267-10.667,10.667v36.267c0,5.333,4.267,10.667,10.667,10.667
c6.4,0,10.667-4.267,10.667-10.667V10.667C266.667,4.267,261.333,0,256,0z"/>
<path style="fill:#FFD15C;" d="M113.067,65.067c-4.267-4.267-10.667-4.267-14.933,0s-4.267,10.667,0,14.933l25.6,25.6
c4.267,4.267,10.667,4.267,14.933,0s4.267-10.667,0-14.933L113.067,65.067z"/>
<path style="fill:#FFD15C;" d="M80,212.267H43.733c-5.333,0-10.667,4.267-10.667,10.667l0,0c0,5.333,4.267,10.667,10.667,10.667H80
c5.333,0,10.667-4.267,10.667-10.667l0,0C90.667,217.6,85.333,212.267,80,212.267z"/>
<path style="fill:#FFD15C;" d="M123.733,340.267l-25.6,25.6c-4.267,4.267-4.267,10.667,0,14.933s10.667,4.267,14.933,0l25.6-25.6
c4.267-4.267,4.267-10.667,0-14.933S128,336,123.733,340.267z"/>
<path style="fill:#FFD15C;" d="M388.267,340.267C384,336,377.6,336,373.333,340.267c-4.267,4.267-4.267,10.667,0,14.933l25.6,25.6
c4.267,4.267,10.667,4.267,14.933,0s4.267-10.667,0-14.933L388.267,340.267z"/>
<path style="fill:#FFD15C;" d="M468.267,212.267H432c-5.333,0-10.667,4.267-10.667,10.667l0,0c0,5.333,4.267,10.667,10.667,10.667
h36.267c5.333,0,10.667-4.267,10.667-10.667l0,0C478.933,217.6,474.667,212.267,468.267,212.267z"/>
<path style="fill:#FFD15C;" d="M398.933,65.067l-25.6,25.6c-4.267,4.267-4.267,10.667,0,14.933c4.267,4.267,10.667,4.267,14.933,0
l25.6-25.6c4.267-4.267,4.267-10.667,0-14.933S403.2,60.8,398.933,65.067z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="21.551193"
height="21.551155"
viewBox="0 0 5.7021572 5.7022899"
version="1.1"
id="svg913"
sodipodi:docname="thelia.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<metadata
id="metadata917">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1011"
id="namedview915"
showgrid="false"
inkscape:zoom="9.9424389"
inkscape:cx="-24.311257"
inkscape:cy="6.5024337"
inkscape:window-x="17"
inkscape:window-y="1080"
inkscape:window-maximized="1"
inkscape:current-layer="svg913"
inkscape:document-rotation="0" />
<defs
id="defs903">
<path
id="a"
d="m 17.781,106.303 h 172.446 v 57.58 H 17.781 Z" />
</defs>
<g
aria-label="thelia"
transform="translate(-36.348898,-111.8935)"
id="text911"
style="font-weight:400;font-size:12.7px;line-height:1.15;font-family:REZ;-inkscape-font-specification:REZ;white-space:pre;shape-inside:url(#a)">
<path
d="m 39.206094,111.8935 q 0.5969,0 1.1049,0.2286 0.5207,0.2159 0.9017,0.60959 0.3937,0.381 0.6096,0.9017 0.2286,0.508 0.2286,1.1049 v 2.8575 h -2.8448 q -0.5842,0 -1.1049,-0.2159 -0.5207,-0.2286 -0.9144,-0.6223 -0.3937,-0.3937 -0.6223,-0.9144 -0.2159,-0.5207 -0.2159,-1.1049 0,-0.5969 0.2159,-1.1049 0.2286,-0.5207 0.6223,-0.9017 0.3937,-0.39369 0.9144,-0.60959 0.5207,-0.2286 1.1049,-0.2286 z m 1.7145,4.57199 v -1.7272 q 0,-0.3556 -0.1397,-0.6604 -0.127,-0.3175 -0.3683,-0.5461 -0.2286,-0.2413 -0.5461,-0.3683 -0.3048,-0.1397 -0.6604,-0.1397 -0.3556,0 -0.6731,0.1397 -0.3175,0.127 -0.5588,0.3683 -0.2286,0.2286 -0.3683,0.5461 -0.127,0.3048 -0.127,0.6604 0,0.3556 0.127,0.6731 0.1397,0.3175 0.3683,0.5588 0.2413,0.2286 0.5588,0.3683 0.3175,0.127 0.6731,0.127 z"
style="fill:#ee8126"
id="path929" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="21.551193"
height="21.551155"
viewBox="0 0 5.7021572 5.7022899"
version="1.1"
id="svg913">
<metadata
id="metadata917">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs903">
<path
id="a"
d="m 17.781,106.303 h 172.446 v 57.58 H 17.781 Z" />
</defs>
<g
aria-label="thelia"
transform="matrix(0.77715713,0,0,0.7731187,-27.613515,-85.860086)"
id="text911"
style="font-weight:400;font-size:12.7px;line-height:1.15;font-family:REZ;-inkscape-font-specification:REZ;white-space:pre;shape-inside:url(#a)">
<path
d="m 39.206094,111.8935 q 0.5969,0 1.1049,0.2286 0.5207,0.2159 0.9017,0.60959 0.3937,0.381 0.6096,0.9017 0.2286,0.508 0.2286,1.1049 v 2.8575 h -2.8448 q -0.5842,0 -1.1049,-0.2159 -0.5207,-0.2286 -0.9144,-0.6223 -0.3937,-0.3937 -0.6223,-0.9144 -0.2159,-0.5207 -0.2159,-1.1049 0,-0.5969 0.2159,-1.1049 0.2286,-0.5207 0.6223,-0.9017 0.3937,-0.39369 0.9144,-0.60959 0.5207,-0.2286 1.1049,-0.2286 z m 1.7145,4.57199 v -1.7272 q 0,-0.3556 -0.1397,-0.6604 -0.127,-0.3175 -0.3683,-0.5461 -0.2286,-0.2413 -0.5461,-0.3683 -0.3048,-0.1397 -0.6604,-0.1397 -0.3556,0 -0.6731,0.1397 -0.3175,0.127 -0.5588,0.3683 -0.2286,0.2286 -0.3683,0.5461 -0.127,0.3048 -0.127,0.6604 0,0.3556 0.127,0.6731 0.1397,0.3175 0.3683,0.5588 0.2413,0.2286 0.5588,0.3683 0.3175,0.127 0.6731,0.127 z"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.343971;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path929" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,94 @@
{% extends '@WebProfiler/Profiler/layout.html.twig' %}
{% block toolbar %}
{% set icon %}
<span class="sf-toolbar-label">
{{ include('@WebProfilerModule/debug/dataCollector/Icon/smarty.svg') }}
</span>
<span class="sf-toolbar-value">{{ collector.totalExecutionTime is defined ? collector.totalExecutionTime : 'n/a' }} </span>
<span class="sf-toolbar-label">ms</span>
{% set text %}
<div class="sf-toolbar-info-piece">
<b>Render Time</b>
<span>{{ collector.totalExecutionTime is defined ? collector.totalExecutionTime : 'n/a' }} ms</span>
</div>
<div class="sf-toolbar-info-piece">
<b>Template Calls</b>
<span class="sf-toolbar-status">{{ collector.templatecount }}</span>
</div>
{% endset %}
{% endset %}
{{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: true, name: 'smarty', status: '', block_attrs: 'title=""' }) }}
{% endblock %}
{% block menu %}
<span class="label {{ 0 == collector.templateCount ? 'disabled' }}">
<span class="icon">{{ include('@WebProfilerModule/debug/dataCollector/Icon/smarty.svg') }}</span>
<strong>Smarty</strong>
</span>
{% endblock %}
{% block panel %}
{% if collector.templatecount == 0 %}
<h2>Smarty</h2>
<div class="empty">
<p>No smarty templates were rendered for this request.</p>
</div>
{% else %}
<h2>Smarty Metrics</h2>
<div class="metrics">
<div class="metric">
<span class="value">{{ collector.totalExecutionTime is defined ? collector.totalExecutionTime : 'n/a' }} <span class="unit">ms</span></span>
<span class="label">Render time</span>
</div>
<div class="metric">
<span class="value">{{ collector.templatecount }}</span>
<span class="label">Template calls</span>
</div>
</div>
<p class="help">
Render time includes sub-requests rendering time (if any).
</p>
<h2>Rendered Templates</h2>
<table id="twig-table">
<thead>
<tr>
<th scope="col">Template Name &amp; Path</th>
<th scope="col">Render time</th>
</tr>
</thead>
<tbody>
{% for template in collector.templates %}
{%- set file = template.name -%}
{%- set link = file ? file|file_link(1) : false -%}
<tr>
<td>
<span class="sf-icon icon-twig">{{ include('@WebProfilerModule/debug/dataCollector/Icon/smartyColor.svg') }}</span>
{% if link %}
<a href="{{ link }}" title="{{ file }}">{{ template.name }}</a>
<div>
<a class="text-muted" href="{{ link }}" title="{{ file }}">
{{ file|file_relative|default(file) }}
</a>
</div>
{% else %}
{{ template.name }}
{% endif %}
</td>
<td>
{{ template.executionTime }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,12 @@
{% extends '@WebProfiler/Profiler/layout.html.twig' %}
{% block toolbar %}
{% set icon %}
<span class="sf-toolbar-label">
{{ include('@WebProfilerModule/debug/dataCollector/Icon/thelia.svg') }}
</span>
<span class="sf-toolbar-value" style="margin-left: 5px">{{ collector.theliaVersion is defined ? collector.theliaVersion : 'n/a' }}</span>
{% endset %}
{{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: false, name: 'thelia', status: '', additional_classes: 'sf-toolbar-block-right', block_attrs: 'title=""' }) }}
{% endblock %}