From 8ceb29f164f8fba66df023268fafe0eba45328b1 Mon Sep 17 00:00:00 2001
From: Sebastian Castro <sebastian.castro@protonmail.com>
Date: Thu, 28 Jan 2021 14:42:10 +0100
Subject: [PATCH] import: fix saving sourceType

---
 assets/js/admin/element-import/element-import.js               | 1 +
 src/Controller/Admin/ImportAdminController.php                 | 2 +-
 src/Document/Import.php                                        | 2 +-
 .../admin/core_custom/custom-fields/element-import.html.twig   | 3 ++-
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/assets/js/admin/element-import/element-import.js b/assets/js/admin/element-import/element-import.js
index caacb6f03..dacf5c5d3 100644
--- a/assets/js/admin/element-import/element-import.js
+++ b/assets/js/admin/element-import/element-import.js
@@ -28,6 +28,7 @@ document.addEventListener('DOMContentLoaded', function() {
             mounted() {
                 for(let key in importObject) this[key] = importObject[key]
                 this.osmQueriesJson = JSON.parse(this.osmQueriesJson)
+                this.sourceType = sourceType;
                 this.formName = formName
                 $(`#sonata-ba-field-container-${formName}_file`).appendTo('.file-container')
             }
diff --git a/src/Controller/Admin/ImportAdminController.php b/src/Controller/Admin/ImportAdminController.php
index f3a21bfaa..a8e4d2fb5 100755
--- a/src/Controller/Admin/ImportAdminController.php
+++ b/src/Controller/Admin/ImportAdminController.php
@@ -120,7 +120,7 @@ class ImportAdminController extends Controller
             if ($isFormValid) {
                 try {
                     $dm = $this->container->get('doctrine_mongodb')->getManager();
-                    
+                    $object->setSourceType($request->get('sourceType'));
                     
                     $ontology = $request->get('ontology');
                     // Fix ontology mapping for elements fields with reverse value      
diff --git a/src/Document/Import.php b/src/Document/Import.php
index e0f92830e..91b7b63a3 100644
--- a/src/Document/Import.php
+++ b/src/Document/Import.php
@@ -209,7 +209,7 @@ class Import extends AbstractFile
     }
     public function getSourceType()
     {
-        if ($this->sourceType) return $this->sourceType;
+        if (isset($this->sourceType)) return $this->sourceType;
         if (isset($this->osmQueriesJson)) return 'openstreetmap';
         if ($this->url) return 'json';
         if ($this->file) return 'csv';
diff --git a/templates/admin/core_custom/custom-fields/element-import.html.twig b/templates/admin/core_custom/custom-fields/element-import.html.twig
index b435d0867..5cec14076 100644
--- a/templates/admin/core_custom/custom-fields/element-import.html.twig
+++ b/templates/admin/core_custom/custom-fields/element-import.html.twig
@@ -1,7 +1,7 @@
 {% set formName = form.vars.full_name|split('[')|first %}
 
 <div id="element-import">  
-    <select class="source-type form-control" data-sonata-select2="false" v-model="sourceType" :name="`${formName}[sourceType]`">
+    <select class="source-type form-control" data-sonata-select2="false" v-model="sourceType" name="sourceType">
         <option></option>
         <option value="csv">Fichier CSV</option>
         <option value="json">API Json</option>
@@ -31,6 +31,7 @@
 
 <script>
     var importObject = {{ form.vars.sonata_admin.admin.subject|json_encode|raw }}
+    var sourceType = "{{ form.vars.sonata_admin.admin.subject.getSourceType() }}"
     var formName = {{ form.vars.full_name|split('[')|first|json_encode|raw }}
     // See element-import.js Vue Component
 </script>
-- 
GitLab