Browse Source

Curriculum tool now belongs to a course c_id is added when saving/updating.

Julio Montoya 11 years ago
parent
commit
2709a1544e

+ 18 - 3
main/inc/global.inc.php

@@ -635,8 +635,6 @@ $app->before(
         $iso = api_get_language_isocode($language);
         $app['translator']->setLocale($iso);
 
-
-
         // From the login page
         $language = $request->get('language');
 
@@ -678,7 +676,7 @@ $app->before(
 
         $languageFilesToAdd = array();
         /* Loading translations depending of the "section" folder after main
-          for example the section is exercice here: web/main/exercice/result.php
+           for example the section is exercice here: web/main/exercice/result.php
         */
         if (!empty($section)) {
             switch($section) {
@@ -775,6 +773,23 @@ $app->before(
                 return $translator;
             }
         }));
+
+        // Setting course entity for controllers.
+
+        // The course parameter is loaded
+        $course = $request->get('course');
+
+        // Check if we are inside a Chamilo course tool
+        $isCourseTool = (strpos($request->getPathInfo(), 'courses/') === false) ? false : true;
+
+        //$controllerName = $request->get('_controller');
+
+        // Setting converts
+        if ($isCourseTool) {
+            // Converting /courses/XXX/ to a Entity/Course object
+            $course = $app['orm.em']->getRepository('Entity\Course')->findOneByCode($course);
+            $app['course'] = $course;
+        }
     }
 );
 

+ 1 - 0
main/inc/routes.php

@@ -654,6 +654,7 @@ $app->match('/ajax', 'model_ajax.controller:indexAction', 'GET')
     ->bind('model_ajax');
 
 if ($alreadyInstalled) {
+
     $app->mount('/admin/administrator/roles', new ChamiloLMS\Provider\ReflectionControllerProvider('role.controller'));
     $app->mount('/admin/administrator/question_scores', new ChamiloLMS\Provider\ReflectionControllerProvider('question_score.controller'));
     $app->mount('/admin/administrator/question_score_names', new ChamiloLMS\Provider\ReflectionControllerProvider('question_score_name.controller'));

+ 1 - 1
main/template/default/tool/curriculum/item/add.tpl

@@ -1,5 +1,5 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
     {% import app.template_style ~ "/crud_macros/course_crud.tpl" as actions %}
-    {{ actions.add(form, links, app.request.get('courseCode')) }}
+    {{ actions.add(form, links, course) }}
 {% endblock %}

+ 3 - 3
main/template/default/tool/curriculum/item/add_from_category.tpl

@@ -1,10 +1,10 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
-    <a href="{{ url(links.list_link, {'courseCode' : app.request.get('courseCode')}) }}">
-        List
+    <a href="{{ url(links.list_link, {'course' : course.code }) }}">
+        {{ 'Listing' |trans }}
     </a>
     <hr />
-    <form action="{{ url(links.add_from_category, {'courseCode' : app.request.get('courseCode'), "id" : parent_id }) }}" method="post" {{ form_enctype(form) }}>
+    <form action="{{ url(links.add_from_category, {'course' : course.code, "id" : parent_id }) }}" method="post" {{ form_enctype(form) }}>
         {{ form_widget(form) }}
     </form>
 {% endblock %}

+ 1 - 1
main/template/default/tool/curriculum/item/edit.tpl

@@ -1,5 +1,5 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
     {% import app.template_style ~ "/crud_macros/course_crud.tpl" as actions %}
-    {{ actions.edit(form, links, app.request.get('courseCode')) }}
+    {{ actions.edit(form, links, course) }}
 {% endblock %}

+ 4 - 4
main/template/default/tool/curriculum/item/list.tpl

@@ -1,19 +1,19 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
-    <a href="{{ url(links.create_link, {'courseCode' : app.request.get('courseCode')}) }}">
+    <a href="{{ url(links.create_link, {'course' : course.code }) }}">
         {{ 'Add' |trans }}
     </a>
     <table class="table">
     {% for item in items %}
         <tr>
             <td>
-                <a href="{{ url(links.read_link, {'courseCode' : app.request.get('courseCode'), id: item.id }) }}">
+                <a href="{{ url(links.read_link, {'course' : course.code, id: item.id }) }}">
                 {{ item.title }}
                 </a>
             </td>
             <td>
-                <a class="btn" href="{{ url(links.update_link, {'courseCode' : app.request.get('courseCode'), id: item.id }) }}"> {{ 'Edit' |trans }}</a>
-                <a class="btn" href="{{ url(links.delete_link, {'courseCode' : app.request.get('courseCode'), id: item.id }) }}"> {{ 'Delete' |trans }}</a>
+                <a class="btn" href="{{ url(links.update_link, {'course' : course.code, id: item.id }) }}"> {{ 'Edit' |trans }}</a>
+                <a class="btn" href="{{ url(links.delete_link, {'course' : course.code, id: item.id }) }}"> {{ 'Delete' |trans }}</a>
             </td>
         </tr>
     {% endfor %}

+ 1 - 1
main/template/default/tool/curriculum/item/read.tpl

@@ -5,7 +5,7 @@
     <ul>
     {% for subitem in subitems %}
         <li>
-            <a href="{{ url(links.question_score_name_read_link, {'courseCode' : app.request.get('courseCode'), id: subitem.id} ) }}">
+            <a href="{{ url(links.question_score_name_read_link, {'course' : course.code, id: subitem.id} ) }}">
                 {{ subitem.name }}
             </a>
         </li>

+ 1 - 1
main/template/default/tool/curriculum/user/add.tpl

@@ -1,5 +1,5 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
     {% import app.template_style ~ "/crud_macros/course_crud.tpl" as actions %}
-    {{ actions.add(form, links, app.request.get('courseCode')) }}
+    {{ actions.add(form, links, course) }}
 {% endblock %}

+ 3 - 3
main/template/default/tool/curriculum/user/add_from_category.tpl

@@ -1,10 +1,10 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
-    <a href="{{ url(links.list_link, {'courseCode' : app.request.get('courseCode')) }}">
-        List
+    <a href="{{ url(links.list_link, {'course' : course.code) }}">
+        {{ 'Listing' |trans }}
     </a>
     <hr />
-    <form action="{{ url(links.add_from_category, {'courseCode' : app.request.get('courseCode'), "id" : parent_id }) }}" method="post" {{ form_enctype(form) }}>
+    <form action="{{ url(links.add_from_category, {'course' : course.code, "id" : parent_id }) }}" method="post" {{ form_enctype(form) }}>
         {{ form_widget(form) }}
     </form>
 {% endblock %}

+ 1 - 1
main/template/default/tool/curriculum/user/edit.tpl

@@ -1,5 +1,5 @@
 {% extends app.template_style ~ "/layout/layout_1_col.tpl" %}
 {% block content %}
     {% import app.template_style ~ "/crud_macros/course_crud.tpl" as actions %}
-    {{ actions.edit(form, links, {'courseCode' : app.request.get('courseCode'))} }}
+    {{ actions.edit(form, links, course} }}
 {% endblock %}

+ 1 - 1
main/template/default/tool/curriculum/user/list.tpl

@@ -83,7 +83,7 @@ function addTagFormDeleteLink($tagFormLi) {
 function save(itemId) {
     var form = $("#"+itemId).parent();
     var serializedForm = form.serialize();
-    $.post('{{ url('curriculum_user.controller:saveUserItemAction', {'courseCode' : app.request.get('courseCode') }) }}', serializedForm);
+    $.post('{{ url('curriculum_user.controller:saveUserItemAction', {'course' : course.code }) }}', serializedForm);
     return false;
 }
 

+ 1 - 1
main/template/default/tool/curriculum/user/read.tpl

@@ -5,7 +5,7 @@
     <ul>
     {% for subitem in subitems %}
         <li>
-            <a href="{{ url(links.question_score_name_read_link, {'courseCode' : app.request.get('courseCode'), id: subitem.id} ) }}">
+            <a href="{{ url(links.question_score_name_read_link, {'course' : course.code, id: subitem.id} ) }}">
                 {{ subitem.name }}
             </a>
         </li>

+ 20 - 2
src/ChamiloLMS/Controller/BaseController.php

@@ -35,6 +35,24 @@ abstract class BaseController extends FlintController
         $this->app = $app;
         // In order to use the Flint Controller
         $this->pimple = $app;
+
+        // Inserting course
+        /** @var \Entity\Course $app['course'] */
+        if (isset($app['course'])) {
+            $template = $this->get('template');
+            $template->assign('course', $app['course']);
+        }
+    }
+
+    /**
+     * @return \Entity\Course
+     */
+    protected function getCourse()
+    {
+        if (isset($this->app['course'])) {
+            return $this->app['course'];
+        }
+        return false;
     }
 
     /**
@@ -104,8 +122,8 @@ abstract class BaseController extends FlintController
     protected function createUrl($label, $params = array())
     {
         $links = $this->generateLinks();
-        $courseCode = $this->getRequest()->get('courseCode');
-        $params['courseCode'] = $courseCode;
+        $courseCode = $this->getRequest()->get('course');
+        $params['course'] = $courseCode;
         if (isset($links) && is_array($links) && isset($links[$label])) {
             $url = $this->generateUrl($links[$label], $params);
             return $url;

+ 7 - 14
src/ChamiloLMS/Controller/Tool/Curriculum/CurriculumCategoryController.php

@@ -19,18 +19,14 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  */
 class CurriculumCategoryController extends CommonController
 {
-    private $course;
-
     /**
      *
      * @Route("/")
      * @Method({"GET"})
      */
-    public function indexAction($course)
+    public function indexAction()
     {
-        $this->course = $course;
-        $template = $this->get('template');
-        $template->assign('course', $course);
+        $course = $this->getCourse();
 
         $options = array(
             'decorate' => true,
@@ -39,7 +35,7 @@ class CurriculumCategoryController extends CommonController
             'childOpen' => '<li>',
             'childClose' => '</li>',
             'nodeDecorator' => function ($row) use ($course) {
-                $courseCode = $course->getId();
+                $courseCode = $course->getCode();
                 $addChildren = null;
                 $items = null;
                 if ($row['lvl'] <= 0) {
@@ -91,7 +87,7 @@ class CurriculumCategoryController extends CommonController
     * @Route("/{id}/show", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function readCategoryAction($courseCode, $id)
+    public function readCategoryAction($id)
     {
         return parent::readAction($id);
     }
@@ -102,9 +98,6 @@ class CurriculumCategoryController extends CommonController
     */
     public function addCategoryAction($course)
     {
-        $this->course = $course;
-        $template = $this->get('template');
-        $template->assign('course', $course);
         return parent::addAction();
     }
 
@@ -151,7 +144,7 @@ class CurriculumCategoryController extends CommonController
     * @Route("/{id}/edit", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function editCategoryAction($courseCode, $id)
+    public function editCategoryAction($id)
     {
         return parent::editAction($id);
     }
@@ -161,7 +154,7 @@ class CurriculumCategoryController extends CommonController
     * @Route("/{id}/delete", requirements={"id" = "\d+"})
     * @Method({"GET"})
     */
-    public function deleteCategoryAction($courseCode, $id)
+    public function deleteCategoryAction($id)
     {
         return parent::deleteAction($id);
     }
@@ -216,7 +209,7 @@ class CurriculumCategoryController extends CommonController
     protected function getDefaultEntity()
     {
         $entity = $this->getNewEntity();
-        $entity->setCourse($this->course);
+        $entity->setCourse($this->getCourse());
         $entity->setSessionId(api_get_session_id());
         return $entity;
     }

+ 2 - 13
src/ChamiloLMS/Controller/Tool/Curriculum/CurriculumController.php

@@ -24,20 +24,9 @@ class CurriculumController extends CommonController
      * @Route("/")
      * @Method({"GET"})
      */
-    public function indexAction($courseCode)
+    public function indexAction($course)
     {
         // Redirecting to curriculum user
-        return $this->redirect($this->generateUrl('curriculum_user.controller:indexAction', array('courseCode' => $courseCode)));
-
-        /*
-        $template = $this->get('template');
-        $response = $template->render_template($this->getTemplatePath().'index.tpl');
-        return new Response($response, 200, array());
-        */
-    }
-
-    protected function getTemplatePath()
-    {
-        return 'tool/curriculum/';
+        return $this->redirect($this->generateUrl('curriculum_user.controller:indexAction', array('course' => $course)));
     }
 }

+ 4 - 2
src/ChamiloLMS/Form/CurriculumCategoryType.php

@@ -27,13 +27,15 @@ class CurriculumCategoryType extends AbstractType
         $builder->add('c_id', 'hidden');
         $builder->add('session_id', 'hidden');
 
+        $course = $entity->getCourse();
+
         $builder->add('parent', 'entity', array(
             'class' => 'Entity\CurriculumCategory',
-            'query_builder' => function($repository) use ($entity) {
+            'query_builder' => function($repository) use ($entity, $course) {
                 return $repository->createQueryBuilder('c')
                     ->where('c.cId = :id')
                     ->andWhere('c.sessionId = :session_id')
-                    ->setParameters(array('id' => $entity->getId(), 'session_id' => $entity->getSessionId()))
+                    ->setParameters(array('id' => $course->getId(), 'session_id' => $entity->getSessionId()))
                     ->orderBy('c.title', 'ASC');
             },
             'property' => 'title',

+ 5 - 23
src/ChamiloLMS/Provider/ReflectionControllerProvider.php

@@ -11,7 +11,7 @@ use Symfony\Component\Routing\Annotation\Route;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
 use Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader;
 use Doctrine\Common\Annotations\AnnotationReader;
-use ChamiloLMS\Middleware;
+use ChamiloLMS\Middleware\CourseMiddleware;
 
 class ReflectionControllerProvider implements ControllerProviderInterface
 {
@@ -35,16 +35,14 @@ class ReflectionControllerProvider implements ControllerProviderInterface
         $controllers = $app['controllers_factory'];
 
         // Routes are already cached using Flint
-        if ($app['debug'] == false) {
-            return $controllers;
+
+        if (file_exists($app['sys_temp_path'].'ProjectUrlMatcher.php')) {
+           return $controllers;
         }
 
         $reflection = new \ReflectionClass($app[$this->controllerName]);
         $className = $reflection->getName();
 
-        // is a Chamilo course tool in order to convert course/{courseCode} into an entity
-        $isCourseTool = (strpos($className, 'ChamiloLMS\Controller\Tool') === false) ? false : true;
-
         // Needed in order to get annotations
         $annotationReader = new AnnotationReader();
         $routeAnnotation = new Route(array());
@@ -98,27 +96,11 @@ class ReflectionControllerProvider implements ControllerProviderInterface
                         }
                     }
 
-                    // Setting converts
-                    if ($isCourseTool) {
-
-                        // Converting /courses/XXX/ to a Entity/Course object
-
-                        $match->convert('course', function ($courseCode) use ($app, $match) {
-                            $course = $app['orm.em']->getRepository('Entity\Course')->findOneByCode($courseCode);
-
-                            // Set course stuff thanks to a before
-                            $match->before(new CourseMiddleware($app, $courseCode));
-                            return $course;
-                        });
-
-
-
-                    }
-
                     $match->bind($controllerName);
                 }
             }
         }
+
         return $controllers;
     }
 }