From 5dba9f64dd2190a513d6004ed375cc5a86923715 Mon Sep 17 00:00:00 2001 From: aina-esokia Date: Wed, 29 Aug 2018 15:11:04 +0400 Subject: [PATCH] add personalisation logo --- .../Controller/Admin/SetupController.php | 12 ++++ .../ControllerProvider/Admin/Setup.php | 3 + .../Form/Configuration/GeneralFormType.php | 2 +- ...rm.php => PersonalisationLogoFormType.php} | 19 +++--- lib/classes/appbox.php | 17 ++++++ .../web/admin/personalisation_logo.html.twig | 60 ++++++++++++------- templates/web/common/menubar.html.twig | 11 +++- 7 files changed, 91 insertions(+), 33 deletions(-) rename lib/Alchemy/Phrasea/Form/Configuration/{PersonalisationLogoForm.php => PersonalisationLogoFormType.php} (62%) diff --git a/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php b/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php index a8e585d88a..a3557ab6eb 100644 --- a/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php +++ b/lib/Alchemy/Phrasea/Controller/Admin/SetupController.php @@ -14,6 +14,7 @@ use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Core\Configuration\PropertyAccess; use Alchemy\Phrasea\Core\Configuration\RegistryFormManipulator; +use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; class SetupController extends Controller @@ -61,4 +62,15 @@ class SetupController extends Controller 'form' => $form->createView(), ]); } + + public function sendPersonaliseLogo(Request $request) + { + if(null !== $blob = $request->request->get('fileToUpload')){ + $result = $this->app->getApplicationBox()->write_application_logo($this->app['filesystem'], $blob); + + return new JsonResponse($result); + } + + return new JsonResponse('No file send'); + } } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Admin/Setup.php b/lib/Alchemy/Phrasea/ControllerProvider/Admin/Setup.php index 9734c038fd..d5879f2a83 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Admin/Setup.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Admin/Setup.php @@ -47,6 +47,9 @@ class Setup implements ControllerProviderInterface, ServiceProviderInterface ->bind('setup_display_globals') ->method('GET|POST'); + $controllers->post('/send-logo', 'controller.admin.setup:sendPersonaliseLogo') + ->bind('setup_send_personalize_logo'); + return $controllers; } } diff --git a/lib/Alchemy/Phrasea/Form/Configuration/GeneralFormType.php b/lib/Alchemy/Phrasea/Form/Configuration/GeneralFormType.php index 904a261a90..5a1c6a645e 100644 --- a/lib/Alchemy/Phrasea/Form/Configuration/GeneralFormType.php +++ b/lib/Alchemy/Phrasea/Form/Configuration/GeneralFormType.php @@ -56,7 +56,7 @@ class GeneralFormType extends AbstractType 'attr' => ['min' => -1], 'constraints' => new GreaterThanOrEqual(['value' => -1]), ]); - $builder->add('personalize-logo-choice', new PersonalisationLogoForm(), [ + $builder->add('personalize-logo-choice', new PersonalisationLogoFormType(), [ 'label' => 'Design of personalization logo section', 'attr' => [ 'id' => 'personalize-logo-container' diff --git a/lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoForm.php b/lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoFormType.php similarity index 62% rename from lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoForm.php rename to lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoFormType.php index eb9f7eae07..eea4f6e99d 100644 --- a/lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoForm.php +++ b/lib/Alchemy/Phrasea/Form/Configuration/PersonalisationLogoFormType.php @@ -13,28 +13,29 @@ namespace Alchemy\Phrasea\Form\Configuration; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -class PersonalisationLogoForm extends AbstractType +class PersonalisationLogoFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { - $builder->add('originalChoiceInput', 'choice', [ + $builder->add('logoChoice', 'choice', [ 'label' => false, - 'choices' => ['original' => 'original-choice-label'], + 'choices' => [ + 'original' => 'original logo', + 'personalize' => 'personalize logo' + ], 'expanded' => true, + 'multiple' => false, ]); - $builder->add('personaliseChoiceInput', 'choice', [ - 'label' => false, - 'choices' => ['personalise' => 'personalise-choice-label'], - 'expanded' => true, - ]); $builder->add('personalizeLogoInput', 'file', [ 'label' => false, ]); - $builder->add('logoChoice', 'hidden', [ + + $builder->add('personalizeFile', 'hidden', [ 'label' => false, ]); + } public function getName() diff --git a/lib/classes/appbox.php b/lib/classes/appbox.php index c45d21fda3..e6f9307965 100644 --- a/lib/classes/appbox.php +++ b/lib/classes/appbox.php @@ -95,6 +95,23 @@ class appbox extends base return $this; } + public function write_application_logo(Filesystem $filesystem, $blob) + { + $logo_path = $this->app['root.path'] . '/www/custom/minilogos/personalize_logo.png'; + + $data = str_replace('data:image/png;base64,', '', $blob); + $data = str_replace(' ', '+', $data); + $data = base64_decode($data); + + try{ + $filesystem->dumpFile($logo_path, $data); + }catch(\Exception $e){ + return $e->getMessage(); + } + + return 'success'; + } + /** * * @param collection $collection diff --git a/templates/web/admin/personalisation_logo.html.twig b/templates/web/admin/personalisation_logo.html.twig index 9f20d7e6b6..afbe00bc48 100644 --- a/templates/web/admin/personalisation_logo.html.twig +++ b/templates/web/admin/personalisation_logo.html.twig @@ -1,7 +1,8 @@ + {{ form_widget(form.personalizeFile) }} - {{ form_widget(form.logoChoice) }}
- {{ form_widget(form.originalChoiceInput, { 'attr': {'class': 'choice-radio'} }) }} + {{ form_widget(form.logoChoice[0]) }} + {{ form_label(form.logoChoice[0]) }} - {{ form_widget(form.personaliseChoiceInput) }} + {{ form_widget(form.logoChoice[1]) }} + {{ form_label(form.logoChoice[1]) }} +
{{ 'prod::setup: help text' | trans }}
- + {% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %} + + {% endif %}
{{ form_widget(form.personalizeLogoInput) }} @@ -21,8 +26,8 @@ id="select-logo-btn">{{ 'prod::setup: select file' | trans }}
diff --git a/templates/web/common/menubar.html.twig b/templates/web/common/menubar.html.twig index 1e8f07df99..008cfbae04 100644 --- a/templates/web/common/menubar.html.twig +++ b/templates/web/common/menubar.html.twig @@ -4,7 +4,16 @@
  1. - + {% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'logoChoice']) == 'personalize' and + app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %} + + + + {% else %} + + + + {% endif %}