ソースを参照

Fix load/save chamilo settings

Julio 7 年 前
コミット
ca139c6ac9

+ 1 - 2
src/CoreBundle/Settings/CourseSettingsSchema.php

@@ -75,7 +75,7 @@ class CourseSettingsSchema extends AbstractSettingsSchema
             ->setDefaults(
                 array(
                     'homepage_view' => 'activity_big',
-                    'show_tool_shortcuts' => '', //?
+                    'show_tool_shortcuts' => 'false', // @todo check default value?
                     'active_tools_on_create' => $tools,
                     'display_coursecode_in_courselist' => 'false',
                     'display_teacher_in_courselist' => 'true',
@@ -125,7 +125,6 @@ class CourseSettingsSchema extends AbstractSettingsSchema
 
         $allowedTypes = array(
             'homepage_view' => array('string'),
-            'show_tool_shortcuts' => array('string'),
             'active_tools_on_create' => array('array'),
             'course_hide_tools' => array('array'),
             'display_coursecode_in_courselist' => array('string'),

+ 18 - 10
src/CoreBundle/Settings/DocumentSettingsSchema.php

@@ -47,7 +47,15 @@ class DocumentSettingsSchema extends AbstractSettingsSchema
                     'show_documents_preview' => 'false',
                     'enable_wami_record' => 'false',
                     'enable_webcam_clip' => 'false',
-                    'tool_visible_by_default_at_creation' => [],
+                    'tool_visible_by_default_at_creation' => [
+                        'documents',
+                        'learning_path',
+                        'links',
+                        'announcements',
+                        'forums',
+                        'quiz',
+                        'gradebook'
+                    ],
                     'documents_default_visibility_defined_in_course' => 'false', // ?
                     'allow_personal_user_files' => '', // ?
                     'if_file_exists_option' => 'rename'
@@ -60,9 +68,9 @@ class DocumentSettingsSchema extends AbstractSettingsSchema
         ;
 
         $allowedTypes = array(
+            'tool_visible_by_default_at_creation' => array('array'),
             'default_document_quotum' => array('string'),
-            'default_group_quotum' => array('string'),
-            'permanently_remove_deleted_files' => array('string'),
+            'default_group_quotum' => array('string')
         );
         $this->setMultipleAllowedTypes($allowedTypes, $builder);
     }
@@ -122,13 +130,13 @@ class DocumentSettingsSchema extends AbstractSettingsSchema
                 [
                     'multiple' => true,
                     'choices' => [
-                        'documents' => 'Documents',
-                        'learning_path' => 'LearningPath',
-                        'links' => 'Links',
-                        'announcements' => 'Announcements',
-                        'forums' => 'Forums',
-                        'quiz' => 'Quiz',
-                        'gradebook' => 'Gradebook'
+                        'Documents' => 'documents',
+                        'LearningPath' => 'learning_path',
+                        'Links' => 'links',
+                        'Announcements' => 'announcements',
+                        'Forums' => 'forums',
+                        'Quiz' => 'quiz',
+                        'Gradebook' => 'gradebook'
                     ]
                 ]
             )

+ 15 - 8
src/SettingsBundle/Manager/SettingsManager.php

@@ -689,7 +689,6 @@ class SettingsManager implements SettingsManagerInterface
         }
 
          // We need to get a plain parameters array since we use the options resolver on it
-        //$parameters = $settings->getParameters();
         $parameters = $this->getParameters($schemaAliasNoPrefix);
 
         $settingsBuilder = new SettingsBuilder();
@@ -704,6 +703,11 @@ class SettingsManager implements SettingsManagerInterface
             }
         }
 
+        foreach ($settingsBuilder->getTransformers() as $parameter => $transformer) {
+            if (array_key_exists($parameter, $parameters)) {
+               $parameters[$parameter] = $transformer->reverseTransform($parameters[$parameter]);
+            }
+        }
         $parameters = $settingsBuilder->resolve($parameters);
         $settings->setParameters($parameters);
 
@@ -723,15 +727,18 @@ class SettingsManager implements SettingsManagerInterface
 
         $settingsBuilder = new SettingsBuilder();
         $schema->buildSettings($settingsBuilder);
-
         $parameters = $settingsBuilder->resolve($settings->getParameters());
-        $settings->setParameters($parameters);
-
-        /*foreach ($settingsBuilder->getTransformers() as $parameter => $transformer) {
+        // Transform value. Example array to string using transformer. Example:
+        // 1. Setting "tool_visible_by_default_at_creation" it's a multiple select
+        // 2. Is defined as an array in class DocumentSettingsSchema
+        // 3. Add transformer for that variable "ArrayToIdentifierTransformer"
+        // 4. Here we recover the transformer and convert the array to string
+        foreach ($settingsBuilder->getTransformers() as $parameter => $transformer) {
             if (array_key_exists($parameter, $parameters)) {
                 $parameters[$parameter] = $transformer->transform($parameters[$parameter]);
             }
-        }*/
+        }
+        $settings->setParameters($parameters);
 
         /*if (isset($this->resolvedSettings[$namespace])) {
             $transformedParameters = $this->transformParameters($settingsBuilder, $parameters);
@@ -739,7 +746,7 @@ class SettingsManager implements SettingsManagerInterface
         }*/
 
         $repo = $this->manager->getRepository('ChamiloCoreBundle:SettingsCurrent');
-        $persistedParameters = $repo->findBy(array('category' => $settings->getSchemaAlias()));
+        $persistedParameters = $repo->findBy(['category' => $settings->getSchemaAlias()]);
         $persistedParametersMap = array();
 
         foreach ($persistedParameters as $parameter) {
@@ -763,7 +770,7 @@ class SettingsManager implements SettingsManagerInterface
                 $persistedParametersMap[$name]->setValue($value);
             } else {
                 $parameter = new SettingsCurrent();
-
+var_dump($name, $value);
                 $parameter
                     ->setVariable($name)
                     ->setCategory($simpleCategoryName)