Browse Source

Handle course settings with a SettingsManager class

jmontoyaa 8 years ago
parent
commit
900c33f389

+ 8 - 2
src/Chamilo/CourseBundle/Controller/SettingsController.php

@@ -3,6 +3,7 @@
 
 namespace Chamilo\CourseBundle\Controller;
 
+use Chamilo\CourseBundle\Manager\SettingsManager;
 use Sylius\Bundle\SettingsBundle\Form\Factory\SettingsFormFactoryInterface;
 use Sylius\Bundle\SettingsBundle\Manager\SettingsManagerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@@ -31,11 +32,12 @@ class SettingsController extends Controller
     public function updateAction(Request $request, $namespace, $course)
     {
         $manager = $this->getSettingsManager();
+        $schemaAlias = $manager->convertNameSpaceToService($namespace);
         $settings = $manager->load($namespace);
 
         $form = $this
             ->getSettingsFormFactory()
-            ->create($namespace);
+            ->create($schemaAlias);
 
         $form->setData($settings);
 
@@ -66,6 +68,7 @@ class SettingsController extends Controller
                 return $this->redirect($request->headers->get('referer'));
             }
         }
+        $schemas = $manager->getSchemas();
 
         return $this->render(
             $request->attributes->get(
@@ -73,8 +76,11 @@ class SettingsController extends Controller
                 'ChamiloCourseBundle:Settings:update.html.twig'
             ),
             array(
+                'schemas' => $schemas,
                 'settings' => $settings,
                 'form' => $form->createView(),
+                'keyword' => '',
+                'search_form' => '',
             )
         );
     }
@@ -82,7 +88,7 @@ class SettingsController extends Controller
     /**
      * Get settings manager.
      *
-     * @return SettingsManagerInterface
+     * @return SettingsManager
      */
     protected function getSettingsManager()
     {

+ 17 - 3
src/Chamilo/CourseBundle/Manager/SettingsManager.php

@@ -54,6 +54,7 @@ class SettingsManager extends ChamiloSettingsManager
         course_maintenance //maintenance
         course_setting settings*/
 
+        $schemaAliasNoPrefix = $schemaAlias;
         $schemaAlias = 'chamilo_course.settings.'.$schemaAlias;
 
         /** @var SchemaInterface $schema */
@@ -71,7 +72,8 @@ class SettingsManager extends ChamiloSettingsManager
         }
 
          // We need to get a plain parameters array since we use the options resolver on it
-        $parameters = $settings->getParameters();
+        //$parameters = $settings->getParameters();
+        $parameters = $this->getParameters($schemaAliasNoPrefix);
 
         $settingsBuilder = new SettingsBuilder();
         $schema->buildSettings($settingsBuilder);
@@ -146,7 +148,7 @@ class SettingsManager extends ChamiloSettingsManager
                 $parameter
                     ->setTitle($name)
                     ->setVariable($name)
-                    ->setCategory($namespace)
+                    ->setCategory($simpleCategoryName)
                     ->setValue($value)
                     ->setCId($this->getCourse()->getId())
                 ;
@@ -227,7 +229,19 @@ class SettingsManager extends ChamiloSettingsManager
         $repo = $this->manager->getRepository('ChamiloCourseBundle:CCourseSetting');
         $parameters = [];
         foreach ($repo->findBy(array('category' => $namespace)) as $parameter) {
-            $parameters[$parameter->getName()] = $parameter->getValue();
+            $parameters[$parameter->getTitle()] = $parameter->getValue();
         }
+
+        return $parameters;
+    }
+
+
+    /**
+     * @param string $category
+     * @return string
+     */
+    public function convertNameSpaceToService($category)
+    {
+        return 'chamilo_course.settings.'.$category;
     }
 }

+ 2 - 8
src/Chamilo/CourseBundle/Resources/config/services.yml

@@ -58,16 +58,10 @@ services:
         calls:
           - [setContainer, ['@service_container']]
 
-    chamilo_course.settings.schema_registry:
-        class: Sylius\Component\Registry\ServiceRegistry
-        arguments:
-            - Sylius\Bundle\SettingsBundle\Schema\SchemaInterface
-            - 'course_settings'
-
     chamilo_course.settings.form_factory:
-        class: %chamilo_course.settings.form_factory.class%
+        class: Sylius\Bundle\SettingsBundle\Form\Factory\SettingsFormFactory
         arguments:
-            - '@chamilo_course.settings.schema_registry'
+            - '@chamilo_course.registry.settings_schema'
             - '@form.factory'
 
     chamilo_course.repository.parameter:

+ 37 - 0
src/Chamilo/CourseBundle/Resources/views/Settings/default.html.twig

@@ -0,0 +1,37 @@
+{% extends "@ChamiloTheme/Layout/layout_one_col.html.twig" %}
+{% from 'SyliusResourceBundle:Macros:actions.html.twig' import update %}
+
+{% set namespace = app.request.get('namespace') %}
+
+{% block content %}
+
+    <div class="row">
+        <div class="col-xs-3 col-md-3">
+        {% include '@ChamiloCore/Admin/Settings/menu.html.twig' %}
+        </div>
+        <div class="col-xs-9 col-md-9">
+            <div class="page-header">
+                <h3>{{ namespace }} {{ 'Settings' | trans }}</h3>
+            </div>
+
+            <div class="row">
+                <div class="col-md-12">
+                    <div class="box box-primary">
+                        <div class="box-body">
+                            {{ form_errors(form) }}
+                            <form
+                                class="form-horizontal"
+                                action="{{ path('chamilo_platform_settings', { 'namespace': namespace , 'keyword': keyword } ) }}"
+                                method="post"
+                                novalidate
+                            >
+                                {{ form_rest(form) }}
+                                {{ update() }}
+                            </form>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+{% endblock %}

+ 18 - 0
src/Chamilo/CourseBundle/Resources/views/Settings/index.html.twig

@@ -0,0 +1,18 @@
+{% extends "@ChamiloTheme/Layout/layout_one_col.html.twig" %}
+
+{% block page_title %}
+    {{ 'Settings' | trans }}
+{% endblock %}
+
+{% block page_subtitle %}
+{% endblock %}
+
+{% block page_content %}
+    <div class="row">
+        <div class="col-xs-3 col-md-3">
+        {% include '@ChamiloCore/Admin/Settings/menu.html.twig' %}
+        </div>
+        <div class="col-xs-9 col-md-9">
+        </div>
+    </div>
+{% endblock%}

+ 12 - 0
src/Chamilo/CourseBundle/Resources/views/Settings/menu.html.twig

@@ -0,0 +1,12 @@
+<ul class="nav nav-pills nav-stacked">
+{% set current_namespace = app.request.get('namespace') %}
+{% for namespace in schemas|keys %}
+    {% set namespace = namespace | replace({'chamilo_core.settings.' : ''}) %}
+    <li class="{% if (current_namespace ==  namespace)  %} active {% endif %}">
+        <a href="{{ path('chamilo_platform_settings', { 'namespace': namespace }) }}">
+            <img src="{{ asset('img/icons/32/' ~ namespace ~'.png') }}" />
+            {{ namespace | capitalize | trans }}
+        </a>
+    </li>
+{% endfor %}
+</ul>

+ 31 - 0
src/Chamilo/CourseBundle/Resources/views/Settings/plugins.html.twig

@@ -0,0 +1,31 @@
+{% extends "::layout.html.twig" %}
+
+{% block page_title %}
+    {{ 'Plugins' | trans }}
+{% endblock %}
+
+{% block page_subtitle %}
+{% endblock %}
+
+{% block page_content %}
+
+<a href="{{ url('chamilo_core_admin_plugins_pluginsadd') }}">
+    Add
+</a>
+
+<form class="form-horizontal" name="plugins" method="post" action="'.api_get_self().'?category='.Security::remove_XSS($_GET['category']).'&sec_token=' . $token . '">
+    <table class="data_table">
+        <tr>
+            <th>Action</th>
+            <th>Plugin</th>
+            <th>Description</th>
+        </tr>
+        {% for plugin in plugins %}
+            <tr>
+                <td>{{ plugin | var_dump }}</td>
+                <td>Description</td>
+            </tr>
+
+        {% endfor %}
+    </table>
+{% endblock%}

+ 21 - 0
src/Chamilo/CourseBundle/Resources/views/Settings/pluginsAdd.html.twig

@@ -0,0 +1,21 @@
+{% extends "::layout.html.twig" %}
+
+{% block page_title %}
+    {{ 'Settings' | trans }}
+{% endblock %}
+
+{% block page_subtitle %}
+{% endblock %}
+
+{% block page_content %}
+    <div>
+    {% for plugin in plugins %}
+        <div class="panel panel-default">
+            <div class="panel-heading">{{ plugin | var_dump }} </div>
+            <div class="panel-body">
+            </div>
+        </div>
+
+    {% endfor %}
+    </div>
+{% endblock%}

+ 0 - 1
src/Chamilo/ThemeBundle/Resources/views/Layout/base-layout.html.twig

@@ -197,7 +197,6 @@
                             </div>
                         </div>
                     </nav>
-
                     {#{% include "@template_style/layout/menu.html.twig" %}#}
                 {% endblock %}
             </section>

+ 1 - 1
src/Chamilo/ThemeBundle/Resources/views/Layout/layout_two_col.html.twig

@@ -16,7 +16,7 @@
     <div class="col-md-3">
         {% if plugin_menu_top %}
         <div id="plugin_menu_top">
-            {{plugin_menu_top}}
+            {{ plugin_menu_top }}
         </div>
         {% endif %}