From 50f8580e273e7c665eb125973206a327db7e0229 Mon Sep 17 00:00:00 2001 From: aina-esokia Date: Wed, 18 Jul 2018 18:07:25 +0400 Subject: [PATCH] add searchengine step in graphic installer --- .../Phrasea/Controller/SetupController.php | 29 +++++++ templates/web/setup/step2.html.twig | 77 +++++++++++++++++-- 2 files changed, 100 insertions(+), 6 deletions(-) diff --git a/lib/Alchemy/Phrasea/Controller/SetupController.php b/lib/Alchemy/Phrasea/Controller/SetupController.php index 494973d879..1c4de9b218 100644 --- a/lib/Alchemy/Phrasea/Controller/SetupController.php +++ b/lib/Alchemy/Phrasea/Controller/SetupController.php @@ -12,6 +12,7 @@ namespace Alchemy\Phrasea\Controller; use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Core\Configuration\StructureTemplate; +use Alchemy\Phrasea\SearchEngine\Elastic\ElasticsearchOptions; use Alchemy\Phrasea\Setup\RequirementCollectionInterface; use Alchemy\Phrasea\Setup\Requirements\BinariesRequirements; use Alchemy\Phrasea\Setup\Requirements\FilesystemRequirements; @@ -82,6 +83,7 @@ class SetupController extends Controller 'locale' => $this->app['locale'], 'available_locales' => Application::getAvailableLanguages(), 'available_templates' => $st->getNames(), + 'elasticOptions' => ElasticsearchOptions::fromArray([]), 'warnings' => $warnings, 'error' => $request->query->get('error'), 'current_servername' => $request->getScheme() . '://' . $request->getHttpHost() . '/', @@ -106,6 +108,20 @@ class SetupController extends Controller $appbox_name = $request->request->get('ab_name'); $databox_name = $request->request->get('db_name'); + $elastic_settings = $request->request->get('elasticsearch_settings'); + + $elastic_settings = [ + 'host' => (string) $elastic_settings['host'], + 'port' => (int) $elastic_settings['port'], + 'index' => (string) (isset($elastic_settings['index_name']) ? $elastic_settings['index_name'] : $this->generateElasticIndex()), + 'shards' => (int) $elastic_settings['shards'], + 'replicas' => (int) $elastic_settings['replicas'], + 'minScore' => (int) $elastic_settings['min_score'], + 'highlight' => (bool) (isset($elastic_settings['highlight']) ? $elastic_settings['highlight'] : false) + ]; + + $elastic_settings = ElasticsearchOptions::fromArray($elastic_settings); + try { $abInfo = [ 'host' => $database_host, @@ -181,6 +197,8 @@ class SetupController extends Controller $this->app->getAuthenticator()->openAccount($user); + $this->app['conf']->set(['main', 'search-engine', 'options'], $elastic_settings->toArray()); + return $this->app->redirectPath('admin', [ 'section' => 'taskmanager', 'notice' => 'install_success', @@ -191,4 +209,15 @@ class SetupController extends Controller ]); } } + + /** + * @return string + */ + private function generateElasticIndex() + { + return strtolower(sprintf('phraseanet_%s', str_replace( + array('/', '.'), array('', ''), + $this->app['random.medium']->generateString(16) + ))); + } } diff --git a/templates/web/setup/step2.html.twig b/templates/web/setup/step2.html.twig index 45aec11464..594fc799c3 100644 --- a/templates/web/setup/step2.html.twig +++ b/templates/web/setup/step2.html.twig @@ -375,7 +375,7 @@

- 1/5 {{ 'Executables externes' | trans }} + 1/6 {{ 'Executables externes' | trans }}

@@ -440,7 +440,7 @@
-

2/5 +

2/6 {{ 'Creation de votre compte' | trans }}

@@ -536,7 +536,7 @@

- 3/5 + 3/6 {% trans %}setup::Configuration de la base de compte ApplicationBox{% endtrans %}

@@ -637,13 +637,78 @@
+
+
+
+
+

4/6 + {{ 'SearchEngine settings' | trans }} +

+
+
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + +
+ + + +
+
+
-

4/5 +

5/6 {{ 'setup::Configuration des repertoires de stockage' | trans }}

@@ -702,7 +767,7 @@
-

5/5 +

6/6 {% trans %}setup::Configuration de la base de stockage DataBox{% endtrans %}

@@ -739,7 +804,7 @@