]> git.agnieray.net Git - galette.git/blobdiff - galette/lib/Galette/Controllers/Crud/DynamicFieldsController.php
Fix redirection when dynamic file does not exists
[galette.git] / galette / lib / Galette / Controllers / Crud / DynamicFieldsController.php
index 757d91d344ec19dc4a0e62cc0e340080ed2b3baf..76b9522df70ce6c453f72636b26e15cc2a9006f1 100644 (file)
@@ -36,6 +36,7 @@
 
 namespace Galette\Controllers\Crud;
 
+use Galette\Core\Galette;
 use Galette\IO\File;
 use Galette\Repository\DynamicFieldsSet;
 use Throwable;
@@ -132,7 +133,7 @@ class DynamicFieldsController extends CrudController
                 $e->getMessage(),
                 Analog::ERROR
             );
-            if (GALETTE_MODE == 'DEV') {
+            if (Galette::isDebugEnabled()) {
                 throw $e;
             }
             $error_detected[] = _T('An error occurred adding dynamic field :(');
@@ -234,7 +235,10 @@ class DynamicFieldsController extends CrudController
             'fields_list'       => $fields_list,
             'form_name'         => $form_name,
             'form_title'        => DynamicField::getFormTitle($form_name),
-            'page_title'        => _T("Dynamic fields configuration")
+            'page_title'        => _T("Dynamic fields configuration"),
+            'html_editor'       => true,
+            'html_editor_active' => $this->preferences->pref_editor_enabled
+
         ];
 
         $tpl = 'pages/configuration_dynamic_fields.html.twig';
@@ -307,10 +311,11 @@ class DynamicFieldsController extends CrudController
             ->disableAllDeps()
             ->enableDep('dynamics')
             ->load($id);
+        $fields = $object->getDynamicFields()->getFields();
+        $field = $fields[$fid] ?? null;
 
         $denied = null;
         if (!$object->canShow($this->login)) {
-            $fields = $object->getDynamicFields()->getFields();
             if (!isset($fields[$fid])) {
                 //field does not exist or access is forbidden
                 $denied = true;
@@ -328,7 +333,7 @@ class DynamicFieldsController extends CrudController
             $route_name = 'member';
             if ($form_name == 'contrib') {
                 $route_name = 'contribution';
-            } elseif ($route_name == 'trans') {
+            } elseif ($form_name == 'trans') {
                 $route_name = 'transaction';
             }
             return $response
@@ -341,42 +346,11 @@ class DynamicFieldsController extends CrudController
                 );
         }
 
-        if ($form_name === 'adh') {
-            $form_name = 'member'; //for compatibility with existing files
-        }
-        $filename = str_replace(
-            [
-                '%form',
-                '%oid',
-                '%fid',
-                '%pos'
-            ],
-            [
-                $form_name,
-                $id,
-                $fid,
-                $pos
-            ],
-            '%form_%oid_field_%fid_value_%pos'
-        );
+        $filename = $field->getFileName($id, $pos);
 
         if ($form_name !== 'member' && !file_exists(GALETTE_FILES_PATH . $filename)) {
             //handle old names for non adh dynamic files
-            $test_filename = str_replace(
-                [
-                    '%form',
-                    '%oid',
-                    '%fid',
-                    '%pos'
-                ],
-                [
-                    'member',
-                    $id,
-                    $fid,
-                    $pos
-                ],
-                '%form_%oid_field_%fid_value_%pos'
-            );
+            $test_filename = $field->getFileName($id, $pos, 'member');
             if (file_exists(GALETTE_FILES_PATH . $test_filename)) {
                 //rename old file to new name
                 rename(GALETTE_FILES_PATH . $test_filename, GALETTE_FILES_PATH . $filename);
@@ -412,10 +386,17 @@ class DynamicFieldsController extends CrudController
                 _T("The file does not exists or cannot be read :(")
             );
 
+            $route_name = 'member';
+            if ($form_name == 'contrib') {
+                $route_name = 'contribution';
+            } elseif ($form_name == 'trans') {
+                $route_name = 'transaction';
+            }
+
             return $response
                 ->withHeader(
                     'Location',
-                    $this->routeparser->urlFor('member', ['id' => $id])
+                    $this->routeparser->urlFor($route_name, ['id' => (string)$id])
                 );
         }
     }
@@ -458,7 +439,9 @@ class DynamicFieldsController extends CrudController
             'form_name'     => $form_name,
             'perm_names'    => DynamicField::getPermsNames(),
             'mode'          => (($request->getHeaderLine('X-Requested-With') === 'XMLHttpRequest') ? 'ajax' : ''),
-            'df'            => $df
+            'df'            => $df,
+            'html_editor'   => true,
+            'html_editor_active' => $this->preferences->pref_editor_enabled
         ];
 
         // display page
@@ -508,7 +491,7 @@ class DynamicFieldsController extends CrudController
                 $e->getMessage(),
                 Analog::ERROR
             );
-            if (GALETTE_MODE == 'DEV') {
+            if (Galette::isDebugEnabled()) {
                 throw $e;
             }
             $error_detected[] = _T('An error occurred editing dynamic field :(');