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

skala
Julio Montoya 12 years ago
parent 58cde3d5e6
commit 2709a1544e
  1. 21
      main/inc/global.inc.php
  2. 1
      main/inc/routes.php
  3. 2
      main/template/default/tool/curriculum/item/add.tpl
  4. 6
      main/template/default/tool/curriculum/item/add_from_category.tpl
  5. 2
      main/template/default/tool/curriculum/item/edit.tpl
  6. 8
      main/template/default/tool/curriculum/item/list.tpl
  7. 2
      main/template/default/tool/curriculum/item/read.tpl
  8. 2
      main/template/default/tool/curriculum/user/add.tpl
  9. 6
      main/template/default/tool/curriculum/user/add_from_category.tpl
  10. 2
      main/template/default/tool/curriculum/user/edit.tpl
  11. 2
      main/template/default/tool/curriculum/user/list.tpl
  12. 2
      main/template/default/tool/curriculum/user/read.tpl
  13. 22
      src/ChamiloLMS/Controller/BaseController.php
  14. 21
      src/ChamiloLMS/Controller/Tool/Curriculum/CurriculumCategoryController.php
  15. 15
      src/ChamiloLMS/Controller/Tool/Curriculum/CurriculumController.php
  16. 6
      src/ChamiloLMS/Form/CurriculumCategoryType.php
  17. 28
      src/ChamiloLMS/Provider/ReflectionControllerProvider.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;
}
}
);

@ -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,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 %}

@ -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,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 %}

@ -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 %}

@ -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,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 %}

@ -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,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 %}

@ -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;
}

@ -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>

@ -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;

@ -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;
}

@ -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)));
}
}

@ -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',

@ -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;
}
}

Loading…
Cancel
Save