From f6ab8888f32a55aed304128b2b38dd8d76a374f6 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Thu, 5 Sep 2013 17:43:12 +0200 Subject: [PATCH 01/37] start creating debugbar --- composer.json | 3 +- composer.lock | 51 ++++++++++++- .../Thelia/DataCollector/PropelCollector.php | 76 +++++++++++++++++++ 3 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 core/lib/Thelia/DataCollector/PropelCollector.php diff --git a/composer.json b/composer.json index 09aa606b5..2fa2e3eb1 100755 --- a/composer.json +++ b/composer.json @@ -41,7 +41,8 @@ }, "require-dev" : { "phpunit/phpunit": "3.7.*", - "fzaninotto/faker": "dev-master" + "fzaninotto/faker": "dev-master", + "maximebf/debugbar": "1.*" }, "minimum-stability": "stable", "config" : { diff --git a/composer.lock b/composer.lock index a54fe3024..116b0700a 100755 --- a/composer.lock +++ b/composer.lock @@ -3,7 +3,7 @@ "This file locks the dependencies of your project to a known state", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], - "hash": "db69990b239a4056558bfd694115d01b", + "hash": "4add17e0d3f6275417122481707e9f52", "packages": [ { "name": "ezyang/htmlpurifier", @@ -1662,6 +1662,55 @@ ], "time": "2013-08-29 19:11:59" }, + { + "name": "maximebf/debugbar", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "37dccc40da52bf9f85571c30cf302da696db0d05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/37dccc40da52bf9f85571c30cf302da696db0d05", + "reference": "37dccc40da52bf9f85571c30cf302da696db0d05", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "require-dev": { + "php": ">=5.3.0" + }, + "suggest": { + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog" + }, + "type": "library", + "autoload": { + "psr-0": { + "DebugBar": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + } + ], + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/maximebf/php-debugbar", + "keywords": [ + "debug" + ], + "time": "2013-08-17 02:02:49" + }, { "name": "phpunit/php-code-coverage", "version": "1.2.12", diff --git a/core/lib/Thelia/DataCollector/PropelCollector.php b/core/lib/Thelia/DataCollector/PropelCollector.php new file mode 100644 index 000000000..778db4c1f --- /dev/null +++ b/core/lib/Thelia/DataCollector/PropelCollector.php @@ -0,0 +1,76 @@ +. */ +/* */ +/*************************************************************************************/ +namespace Thelia\DataCollector; + +use DebugBar\DataCollector\DataCollector; +use DebugBar\DataCollector\Renderable; +use Propel\Runtime\Propel; +use Psr\Log\LoggerInterface; + +/** + * Class PropelCollector + * @author Manuel Raynaud + */ +class PropelCollector extends DataCollector implements Renderable, LoggerInterface { + + public function __construct() + { + $serviceContainer = Propel::getServiceContainer(); + $serviceContainer->setLogger('debugBarLogger', $this); + } + + /** + * Called by the DebugBar when data needs to be collected + * + * @return array Collected data + */ + function collect() + { + // TODO: Implement collect() method. + } + + /** + * Returns the unique name of the collector + * + * @return string + */ + function getName() + { + // TODO: Implement getName() method. + } + + public function getWidgets() + { + return array( + "propel" => array( + "widget" => "PhpDebugBar.Widgets.SQLQueriesWidget", + "map" => "propel 2", + "default" => "[]" + ), + "propel:badge" => array( + "map" => "propel.nb_statements", + "default" => 0 + ) + ); + } +} \ No newline at end of file From 1686d6d87c5c2c28dd3fef63bd0df80336c52e67 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 6 Sep 2013 11:43:37 +0200 Subject: [PATCH 02/37] each module is available in the container with name module.ModuleName --- core/lib/Thelia/Core/Thelia.php | 12 ++++++ core/lib/Thelia/Module/BaseModule.php | 4 +- .../lib/Thelia/Module/BaseModuleInterface.php | 37 +++++++++++++++++++ .../Thelia/Module/DeliveryModuleInterface.php | 36 ++++++++++++++++++ install/insert.sql | 2 - 5 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 core/lib/Thelia/Module/BaseModuleInterface.php create mode 100644 core/lib/Thelia/Module/DeliveryModuleInterface.php diff --git a/core/lib/Thelia/Core/Thelia.php b/core/lib/Thelia/Core/Thelia.php index b28b23156..8c4dd68e0 100755 --- a/core/lib/Thelia/Core/Thelia.php +++ b/core/lib/Thelia/Core/Thelia.php @@ -33,8 +33,10 @@ namespace Thelia\Core; */ use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Config\Loader\LoaderInterface; +use Symfony\Component\Validator\Tests\Fixtures\Reference; use Symfony\Component\Yaml\Yaml; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; @@ -107,6 +109,16 @@ class Thelia extends Kernel foreach ($modules as $module) { try { + + $defintion = new Definition(); + $defintion->setClass($module->getCode() ."\\". ucfirst($module->getCode())); + $defintion->addMethodCall("setContainer", array('service_container')); + + $container->setDefinition( + "module.".$module->getCode(), + $defintion + ); + $loader = new XmlFileLoader($container, new FileLocator(THELIA_MODULE_DIR . "/" . ucfirst($module->getCode()) . "/Config")); $loader->load("config.xml"); } catch (\InvalidArgumentException $e) { diff --git a/core/lib/Thelia/Module/BaseModule.php b/core/lib/Thelia/Module/BaseModule.php index 07cc1d116..89725e33b 100755 --- a/core/lib/Thelia/Module/BaseModule.php +++ b/core/lib/Thelia/Module/BaseModule.php @@ -24,7 +24,9 @@ namespace Thelia\Module; -abstract class BaseModule +use Symfony\Component\DependencyInjection\ContainerAware; + +abstract class BaseModule extends ContainerAware { public function __construct() diff --git a/core/lib/Thelia/Module/BaseModuleInterface.php b/core/lib/Thelia/Module/BaseModuleInterface.php new file mode 100644 index 000000000..2db450830 --- /dev/null +++ b/core/lib/Thelia/Module/BaseModuleInterface.php @@ -0,0 +1,37 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Module; + + +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpFoundation\Request; + +interface BaseModuleInterface { + + public function setRequest(Request $request); + public function getRequest(); + + public function setDispatcher(EventDispatcherInterface $dispatcher); + public function getDispatcher(); +} \ No newline at end of file diff --git a/core/lib/Thelia/Module/DeliveryModuleInterface.php b/core/lib/Thelia/Module/DeliveryModuleInterface.php new file mode 100644 index 000000000..2ef593ee5 --- /dev/null +++ b/core/lib/Thelia/Module/DeliveryModuleInterface.php @@ -0,0 +1,36 @@ +. */ +/* */ +/*************************************************************************************/ + +namespace Thelia\Module; + + +interface DeliveryModuleInterface extends BaseModuleInterface { + + /** + * + * calculate and return delivery price + * + * @return mixed + */ + public function calculate(); +} \ No newline at end of file diff --git a/install/insert.sql b/install/insert.sql index a2e5868e4..f4fe74d4e 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -17,8 +17,6 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat ('currency_rate_update_url', 'http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml', 0, 0, NOW(), NOW()), ('page_not_found_view', '404.html', 0, 0, NOW(), NOW()); -INSERT INTO `module` (`code`, `type`, `activate`, `position`, `created_at`, `updated_at`) VALUES ('test', '1', '1', '1', NOW(), NOW()); - INSERT INTO `customer_title`(`id`, `by_default`, `position`, `created_at`, `updated_at`) VALUES (1, 1, 1, NOW(), NOW()), (2, 0, 2, NOW(), NOW()), From 7e28c92b0b3b8362a6b227d145fb4684524a9d30 Mon Sep 17 00:00:00 2001 From: mespeche Date: Fri, 6 Sep 2013 11:48:24 +0200 Subject: [PATCH 03/37] Working : - Refactor to bootstrap3 --- core/lib/Thelia/Form/ConfigCreationForm.php | 17 +- templates/admin/default/variables.html | 342 ++++++++++---------- 2 files changed, 182 insertions(+), 177 deletions(-) diff --git a/core/lib/Thelia/Form/ConfigCreationForm.php b/core/lib/Thelia/Form/ConfigCreationForm.php index 5594830bc..fc65d3d44 100644 --- a/core/lib/Thelia/Form/ConfigCreationForm.php +++ b/core/lib/Thelia/Form/ConfigCreationForm.php @@ -40,11 +40,19 @@ class ConfigCreationForm extends BaseForm $this->formBuilder ->add("name", "text", array( - "constraints" => $name_constraints + "constraints" => $name_constraints, + "label" => "Name *", + "label_attr" => array( + "for" => "name" + ) )) ->add("title", "text", array( "constraints" => array( new Constraints\NotBlank() + ), + "label" => "Purpose *", + "label_attr" => array( + "for" => "purpose" ) )) ->add("locale", "hidden", array( @@ -52,7 +60,12 @@ class ConfigCreationForm extends BaseForm new Constraints\NotBlank() ) )) - ->add("value", "text", array()) + ->add("value", "text", array( + "label" => "Value *", + "label_attr" => array( + "for" => "value" + ) + )) ->add("hidden", "hidden", array()) ->add("secured", "hidden", array()) ; diff --git a/templates/admin/default/variables.html b/templates/admin/default/variables.html index bbab0ae72..6373618f9 100644 --- a/templates/admin/default/variables.html +++ b/templates/admin/default/variables.html @@ -22,99 +22,105 @@
- - - - + + + - + - {module_include location='variables_table_header'} + - - + {module_include location='variables_table_header'} - {loop name="config" type="config" hidden="0" secured="*" backend_context="1" lang="$lang_id" order="$order"} - + + + + + {loop name="config" type="config" hidden="0" secured="*" backend_context="1" lang="$lang_id" order="$order"} + - + - + - + - {module_include location='variables_table_row'} + {module_include location='variables_table_row'} - - - {/loop} + {loop type="auth" name="can_delete" roles="ADMIN" permissions="admin.configuration.variables.delete"} + + {/loop} + + {else} + + {/if} + + + {/loop} +
+ {intl l='Thelia system variables'} {loop type="auth" name="can_create" roles="ADMIN" permissions="admin.configuration.variables.create"} - - - - +
+ + + + +
{/loop}
- {admin_sortable_header - current_order=$order - order='title' - reverse_order='title_reverse' - path={url path='/admin/configuration/variables'} - label={intl l='Purpose'} - } - - {admin_sortable_header - current_order=$order - order='name' - reverse_order='name_reverse' - path={url path='/admin/configuration/variables'} - label={intl l='Name'} - } -
+ {admin_sortable_header + current_order=$order + order='title' + reverse_order='title_reverse' + path={url path='/admin/configuration/variables'} + label={intl l='Purpose'} + } + - {admin_sortable_header - current_order=$order - order='value' - reverse_order='value_reverse' - path={url path='/admin/configuration/variables'} - label={intl l='Value'} - } - + {admin_sortable_header + current_order=$order + order='name' + reverse_order='name_reverse' + path={url path='/admin/configuration/variables'} + label={intl l='Name'} + } + + {admin_sortable_header + current_order=$order + order='value' + reverse_order='value_reverse' + path={url path='/admin/configuration/variables'} + label={intl l='Value'} + } +  
{intl l='Action'}
{$TITLE}{$TITLE} - {if ! $SECURED} - {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.configuration.variables.change"} - {$NAME} - {/loop} - {elseloop rel="can_change"} - {$NAME} - {/elseloop} - {else} - {$NAME} - {/if} - + {if ! $SECURED} + {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.configuration.variables.change"} + {$NAME} + {/loop} + {elseloop rel="can_change"} + {$NAME} + {/elseloop} + {else} + {$NAME} + {/if} + - {if $SECURED} - {$VALUE} - {else} - - {/if} - + {if $SECURED} + {$VALUE} + {else} + + {/if} + - {if ! $SECURED} -
- +
+ {if ! $SECURED} +
+ - {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.configuration.variables.change"} - - {/loop} + {loop type="auth" name="can_change" roles="ADMIN" permissions="admin.configuration.variables.change"} + + {/loop} - {loop type="auth" name="can_delete" roles="ADMIN" permissions="admin.configuration.variables.delete"} - - {/loop} -
- {else} - - {/if} -
@@ -129,129 +135,115 @@ {* Adding a new variable *} -