Fixing base controller, updating notebook bundle

1.10.x
Julio Montoya 11 years ago
parent 818e4b4970
commit e3df5c252c
  1. 2
      composer.json
  2. 6
      src/Chamilo/CoreBundle/Controller/Admin/AdminController.php
  3. 9
      src/Chamilo/CoreBundle/Controller/Admin/Administrator/UpgradeController.php
  4. 4
      src/Chamilo/CoreBundle/Controller/Admin/JuryMember/JuryMemberController.php
  5. 16
      src/Chamilo/CoreBundle/Controller/Admin/QuestionManager/QuestionManagerController.php
  6. 3
      src/Chamilo/CoreBundle/Controller/App/Certificate/CertificateController.php
  7. 3
      src/Chamilo/CoreBundle/Controller/App/News/NewsController.php
  8. 23
      src/Chamilo/CoreBundle/Controller/BaseController.php
  9. 224
      src/Chamilo/CoreBundle/Controller/BaseResourceController.php
  10. 5
      src/Chamilo/CoreBundle/Controller/BranchAdminController.php
  11. 2
      src/Chamilo/CoreBundle/Controller/IndexController.php
  12. 3
      src/Chamilo/CoreBundle/Controller/User/UserController.php
  13. 3
      src/Chamilo/CoreBundle/Entity/Resource/AbstractResource.php
  14. 1
      src/Chamilo/CoreBundle/EventListener/LegacyListener.php
  15. 3
      src/Chamilo/CoreBundle/EventListener/LoginSuccessHandler.php
  16. 1
      src/Chamilo/CoreBundle/Menu/CourseMenuBuilder.php
  17. 1
      src/Chamilo/CoreBundle/Menu/SimpleMenuBuilder.php
  18. 4
      src/Chamilo/CourseBundle/Controller/CourseInfoController.php
  19. 4
      src/Chamilo/CourseBundle/Controller/Curriculum/CurriculumController.php
  20. 25
      src/Chamilo/CourseBundle/Controller/Home/HomeController.php
  21. 8
      src/Chamilo/CourseBundle/Controller/Introduction/IntroductionController.php
  22. 6
      src/Chamilo/CourseBundle/Controller/LearningPath/LearningPathController.php
  23. 38
      src/Chamilo/CourseBundle/Controller/ToolBaseController.php
  24. 220
      src/Chamilo/CourseBundle/Controller/ToolBaseCrudController.php
  25. 36
      src/Chamilo/CourseBundle/Controller/ToolInterface.php
  26. 2
      src/Chamilo/CourseBundle/Event/CourseAccess.php
  27. 4
      src/Chamilo/CourseBundle/EventListener/CourseAccessListener.php
  28. 12
      src/Chamilo/CourseBundle/EventListener/CourseListener.php
  29. 6
      src/Chamilo/NotebookBundle/Admin/CNotebookAdmin.php
  30. 66
      src/Chamilo/NotebookBundle/Controller/CNotebookController.php
  31. 18
      src/Chamilo/NotebookBundle/Entity/CNotebookRepository.php
  32. 6
      src/Chamilo/NotebookBundle/Form/Type/CNotebookType.php
  33. 5
      src/Chamilo/NotebookBundle/Resources/config/routing.yml
  34. 2
      web/app.php

@ -154,7 +154,7 @@
"patchwork/utf8": "dev-master",
"vich/uploader-bundle": "~0.11",
"tilleuls/ckeditor-sonata-media-bundle": "dev-master",
"egeloen/ckeditor-bundle": "2.*"
"egeloen/ckeditor-bundle": "~2.0"
},
"require-dev": {
"akeneo/crowdin-api": "1.0.*@dev",

@ -3,6 +3,7 @@
namespace Chamilo\CoreBundle\Controller\Admin;
use Symfony\Component\HttpFoundation\Request;
use Chamilo\CoreBundle\Controller\BaseController;
use Symfony\Component\HttpFoundation\Response;
use Entity;
@ -22,15 +23,14 @@ class AdminController extends BaseController
*
* @return Response
*/
public function indexAction()
public function indexAction(Request $request)
{
$security = $this->getSecurity();
// Already filter by the router
/*if (!$security->isGranted('ROLE_ADMIN')) {
return $this->abort(403, 'Access denied');
}*/
if ($security->isGranted('ROLE_ADMIN')) {
if ($this->isGranted('ROLE_ADMIN')) {
return $this->loadAdminMenu();
}
}

@ -4,7 +4,8 @@
namespace Chamilo\CoreBundle\Controller\Admin\Administrator;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Validator\Constraints\FormValidator;
use Chamilo\CoreBundle\Component\Console\Output\BufferedOutput;
@ -26,12 +27,10 @@ class UpgradeController extends BaseController
* @Route("/")
* @Method({"GET"})
*/
public function indexAction()
public function indexAction(Request $request)
{
//$version = api_http_request('version.chamilo.org', 80, '/version.php');
$version = '11';
$request = $this->getRequest();
$version = '2';
$builder = $this->createFormBuilder();
$builder->add('upgrade_chamilo', 'submit');
$form = $builder->getForm();

@ -184,10 +184,8 @@ class JuryMemberController
$this->createNotFoundException('You are not assigned to this user.');
}
$security = $this->getSecurity();
// Setting member only for president.
if ($security->isGranted('ROLE_JURY_PRESIDENT')) {
if ($this->isGranted('ROLE_JURY_PRESIDENT')) {
// Relating user with president
if ($member) {
$this->getManager()->getRepository('Chamilo\CoreBundle\Entity\JuryMembers')->assignUserToJuryMember(

@ -4,7 +4,7 @@
namespace Chamilo\CoreBundle\Controller\Admin\QuestionManager;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
@ -24,7 +24,7 @@ class QuestionManagerController extends BaseController
* @Method({"GET"})
* @return Response
*/
public function indexAction()
public function indexAction(Request $request)
{
$response = $this->renderTemplate('questionmanager.tpl');
@ -67,7 +67,7 @@ class QuestionManagerController extends BaseController
$this->getTemplate()->assign('question', $question);
$this->getTemplate()->assign('form', $form->toHtml());
} else {
$this->addMessage(get_lang('ThereAreNotExtrafieldsAvailable'), 'warning');
$this->addFlash('warning', get_lang('ThereAreNotExtrafieldsAvailable'));
}
// If form was submitted.
@ -76,7 +76,7 @@ class QuestionManagerController extends BaseController
$params = $form->exportValues();
$params['question_id'] = $id;
$field_value->save_field_values($params);
$this->addMessage(get_lang('ItemUpdated'), 'success');
$this->addFlash('success', get_lang('ItemUpdated'));
$url = $this->generateControllerUrl('editQuestionAction', array('id' => $id));
return $this->redirect($url);
@ -327,13 +327,13 @@ class QuestionManagerController extends BaseController
$categoryId = $category->addCategoryInBDD();
if ($categoryId) {
$this->addMessage(get_lang('AddCategoryDone'), 'confirmation');
$this->addFlash('confirmation', get_lang('AddCategoryDone'));
//$message = \Display::return_message(get_lang('AddCategoryDone'), 'confirmation');
//$url = $this->generateUrl('admin_category_show', array('id' => $categoryId));
$url = $this->generateUrl('question_manager.controller:indexAction');
return $this->redirect($url);
} else {
$this->addMessage(get_lang('AddCategoryNameAlreadyExists'), 'warning');
$this->addFlash('warning', get_lang('AddCategoryNameAlreadyExists'));
}
}
$this->getTemplate()->assign('form', $form->toHtml());
@ -372,9 +372,9 @@ class QuestionManagerController extends BaseController
'global'
);
if ($objcat->modifyCategory()) {
$this->addMessage(get_lang('MofidfyCategoryDone'), 'confirmation');
$this->addFlash('confirmation', get_lang('MofidfyCategoryDone'));
} else {
$this->addMessage(get_lang('ModifyCategoryError'), 'warning');
$this->addFlash('warning', get_lang('ModifyCategoryError'));
}
$url = $this->generateUrl('admin_questions');
return $this->redirect($url);

@ -6,6 +6,7 @@ namespace Chamilo\CoreBundle\Controller\App\Certificate;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
/**
* Class CertificateController
@ -18,7 +19,7 @@ class CertificateController extends BaseController
* @param $id
* @return string
*/
public function indexAction($id)
public function showCertificateAction($id)
{
$certificate = new \Certificate($id);

@ -5,6 +5,7 @@ namespace Chamilo\CoreBundle\Controller\App\News;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
@ -22,7 +23,7 @@ class NewsController extends BaseController
* @Method({"GET"})
* @return Response
*/
public function indexAction()
public function indexAction(Request $request)
{
if (api_is_anonymous()) {
$visibility = \SystemAnnouncementManager::VISIBLE_GUEST;

@ -33,14 +33,6 @@ abstract class BaseController extends Controller
return $this->container->get('security.context');
}
/**
* @return \Symfony\Component\HttpFoundation\Session\SessionInterface
*/
public function getSessionHandler()
{
return $this->getRequest()->getSession();
}
/**
* @return object
*/
@ -57,18 +49,6 @@ abstract class BaseController extends Controller
return new NotFoundHttpException();
}
/**
* @param string $message
* @param string $class
*/
public function addMessage($message, $class)
{
$this->get('session')->getFlashBag()->add(
$class,
$message
);
}
/**
* Converts string 'Chamilo\CoreBundle\Controller\Admin\QuestionManager' into
* 'admin/question_manager'
@ -244,7 +224,6 @@ abstract class BaseController extends Controller
*/
public function getCourse()
{
return $this->getSessionHandler()->get('course');
return $this->getRequest()->getSession()->get('course');
}
}

@ -0,0 +1,224 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Knp\Menu\Matcher\Matcher;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\DependencyInjection\Container;
use Knp\Menu\FactoryInterface as MenuFactoryInterface;
use Knp\Menu\ItemInterface as MenuItemInterface;
use Knp\Menu\Renderer\ListRenderer;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
/**
* Each entity controller must extends this class.
*
* @abstract
*/
abstract class BaseResourceController extends ResourceController
{
/**
* @return \Symfony\Component\Security\Core\SecurityContextInterface
*/
public function getSecurity()
{
return $this->container->get('security.context');
}
/**
* @return object
*/
public function getTemplate()
{
return $this->container->get('templating');
}
/**
* @return NotFoundHttpException
*/
public function abort()
{
return new NotFoundHttpException();
}
/**
* Converts string 'Chamilo\CoreBundle\Controller\Admin\QuestionManager' into
* 'admin/question_manager'
*/
public function getTemplatePath()
{
$parts = $this->classParts;
$newPath = array();
foreach ($parts as $part) {
if (in_array($part, array('chamilo_lms', 'controller'))
//strpos($part, '_controller') > 0
) {
continue;
}
$newPath[] = $part;
}
$template = implode('/', $newPath);
return str_replace('_controller', '', $template);
}
/**
* Transforms 'QuestionManagerController' to 'question_manager.controller'
* @return string
*/
public function getControllerAlias()
{
$parts = $this->classParts;
$parts = array_reverse($parts);
$alias = str_replace('_controller', '.controller', $parts[0]);
return $alias;
}
/**
* Translator shortcut
* @param string $variable
* @return string
*/
public function trans($variable)
{
return $this->container->get('translator')->trans($variable);
}
/**
* Returns the class name label
* @example RoleController -> Role
*
* @return string the class name label
*/
public function getClassNameLabel()
{
return $this->classNameLabel;
}
/**
* @return MenuFactoryInterface
*/
public function getMenuFactory()
{
return $this->container->get('knp_menu.factory');
}
/**
* @param string $action
* @return MenuItemInterface
*/
protected function getBreadcrumbs($action)
{
$breadcrumbs = $this->buildBreadcrumbs($action);
return $breadcrumbs;
}
/** Main home URL
* @return MenuItemInterface
*/
protected function getHomeBreadCrumb()
{
$menu = $this->getMenuFactory()->createItem(
'root',
array(
'childrenAttributes' => array(
'class' => 'breadcrumb',
'currentClass' => 'active'
)
)
);
$menu->addChild(
$this->trans('Home'),
array('uri' => $this->generateUrl('home'))
);
return $menu;
}
/**
* @param $action
* @param MenuItemInterface $menu
* @return MenuItemInterface
*/
public function buildBreadcrumbs($action, MenuItemInterface $menu = null)
{
if (!$menu) {
$menu = $this->getHomeBreadCrumb();
}
$menu->addChild(
$this->trans($this->getClassnameLabel().'List'),
array('uri' => $this->generateControllerUrl('listingAction'))
);
$action = str_replace(
array($this->getControllerAlias().':', 'Action'),
'',
$action
);
switch ($action) {
case 'add':
case 'edit':
$menu->addChild(
$this->trans($this->getClassnameLabel().ucfirst($action))
//array('uri' => $this->generateControllerUrl($action.'Action'))
);
break;
}
return $menu;
}
/**
* @param array $breadCrumbList
* @return string
*/
protected function parseLegacyBreadCrumb($breadCrumbList = array())
{
$menu = $this->getHomeBreadCrumb();
foreach ($breadCrumbList as $item) {
$menu->addChild(
$this->trans($item['title']),
array('uri' => $item['url'])
);
}
$renderer = new ListRenderer(new \Knp\Menu\Matcher\Matcher());
$result = $renderer->render($menu);
return $result;
}
/**
* Renders the current controller template
* @param string $name
* @param array $elements
* @return mixed
*/
public function renderTemplate($name, $elements = array())
{
$name = $this->getTemplatePath().'/'.$name;
$renderer = new ListRenderer(new \Knp\Menu\Matcher\Matcher());
$action = $this->getRequest()->get('_route');
$result = $renderer->render($this->getBreadcrumbs($action));
$elements['new_breadcrumb'] = $result;
return $this->getTemplate()->renderTemplate($name, $elements);
}
}

@ -239,9 +239,10 @@ class BranchAdminController extends Controller
if (count($children) == 0) {
return parent::deleteAction($id);
} else {
$this->addMessage(
$this->addFlash(
'warning',
'Please remove all children of this node before you try to delete it.',
'warning'
);
$url = $this->generateControllerUrl('listingAction');
return $this->redirect($url);

@ -179,7 +179,7 @@ class IndexController extends BaseController
$pageController->returnSkillsLinks();
// Deleting the session_id.
$this->getSessionHandler()->remove('session_id');
$request->getSession()->remove('session_id');
return $this->render(
'ChamiloCoreBundle:Index:userportal.html.twig',

@ -3,6 +3,7 @@
namespace Chamilo\CoreBundle\Controller\User;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Chamilo\CoreBundle\Controller\BaseController;
use Symfony\Component\Routing\Annotation\Route;
@ -20,7 +21,7 @@ class UserController extends BaseController
* @Route("/me")
* @Method({"GET"})
*/
public function indexAction()
public function indexAction(Request $request)
{
$userInfo = api_get_user_info($this->getUser()->getUserId());

@ -6,7 +6,6 @@ namespace Chamilo\CoreBundle\Entity\Resource;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
use Chamilo\UserBundle\Entity\User;
use Gedmo\Mapping\Annotation as Gedmo;
/**
@ -27,7 +26,7 @@ abstract class AbstractResource
*
* @ORM\Column(name="name", type="string", length=255, precision=0, scale=0, nullable=false, unique=false)
*/
private $name;
protected $name;
/**
* Returns the resource id.

@ -91,7 +91,6 @@ class LegacyListener
define('DEFAULT_DOCUMENT_QUOTA', $default_quota);
}
// Access URL (multiple URL)
/** @var \Sonata\PageBundle\Model\SnapshotPageProxy $page */
$page = $request->get('page');

@ -21,7 +21,7 @@ class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
protected $security;
/**
* @param Router $urlGenerator
* @param UrlGeneratorInterface $urlGenerator
* @param SecurityContext $security
*/
public function __construct(UrlGeneratorInterface $urlGenerator, SecurityContext $security)
@ -49,7 +49,6 @@ class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface
$ip = $request->getClientIp();
// Setting user info.
$request->getSession()->set('_user', $userInfo);

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Menu;

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Menu;

@ -30,8 +30,10 @@ class CourseInfoController extends ToolBaseController
* @Template
* @return Response
*/
public function indexAction(Request $request, Course $course)
public function indexAction(Request $request)
{
$course = $this->getCourse();
$form = $this->createFormBuilder($course)
->add('title', 'text')
->add('description', 'textarea')

@ -4,13 +4,13 @@
namespace Chamilo\CourseBundle\Controller\Curriculum;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\Form\Extension\Validator\Constraints\FormValidator;
use Symfony\Component\HttpFoundation\Response;
use Entity;
use Chamilo\CoreBundle\Form\CurriculumItemType;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
/**
* Class CurriculumController
@ -25,7 +25,7 @@ class CurriculumController extends BaseController
* @Route("/")
* @Method({"GET"})
*/
public function indexAction()
public function indexAction(Request $request)
{
// Redirecting to curriculum user
// @todo Fix redirection

@ -12,9 +12,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Chamilo\CoreBundle\Entity\CTool;
use Display;
use CourseHome;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Symfony\Component\HttpFoundation\Request;
use Chamilo\CourseBundle\Event\CourseAccess;
use Chamilo\CourseBundle\Event\SessionAccess;
@ -33,15 +31,15 @@ class HomeController extends ToolBaseController
* @return Response
*/
public function indexAction()
public function indexAction(Request $request)
{
$course = $this->getCourse();
$session= $this->getSession();
$session = $this->getSession();
$courseCode = api_get_course_id();
$courseCode = $course->getId();
$sessionId = api_get_session_id();
$coursesAlreadyVisited = $this->getSessionHandler()->get('coursesAlreadyVisited');
$sessionHandler = $request->getSession();
$coursesAlreadyVisited = $sessionHandler->get('coursesAlreadyVisited');
$result = $this->autolaunch();
@ -49,11 +47,11 @@ class HomeController extends ToolBaseController
$showAutoLaunchExerciseWarning = $result['show_autolaunch_exercise_warning'];
if ($showAutoLaunchLpWarning) {
$this->addMessage('TheLPAutoLaunchSettingIsONStudentsWillBeRedirectToAnSpecificLP', 'warning');
$this->addFlash('warning', 'TheLPAutoLaunchSettingIsONStudentsWillBeRedirectToAnSpecificLP');
}
if ($showAutoLaunchExerciseWarning) {
$this->addMessage('TheExerciseAutoLaunchSettingIsONStudentsWillBeRedirectToAnSpecificExercise', 'warning');
$this->addFlash('warning', 'TheExerciseAutoLaunchSettingIsONStudentsWillBeRedirectToAnSpecificExercise');
}
if (true) {
@ -89,13 +87,12 @@ class HomeController extends ToolBaseController
new SessionAccess($this->getUser(), $course, $session)
);
}
$coursesAlreadyVisited[$courseCode] = 1;
$this->getSessionHandler()->set('coursesAlreadyVisited', $coursesAlreadyVisited);
$sessionHandler->set('coursesAlreadyVisited', $coursesAlreadyVisited);
}
$this->getSessionHandler()->remove('toolgroup');
$this->getSessionHandler()->remove('_gid');
$sessionHandler->remove('toolgroup');
$sessionHandler->remove('_gid');
$isSpecialCourse = \CourseManager::is_special_course($courseCode);

@ -9,6 +9,7 @@ use Symfony\Component\HttpFoundation\Response;
use Chamilo\CoreBundle\Controller\CrudController;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\HttpFoundation\Request;
/**
* Class IntroductionToolController
@ -41,7 +42,7 @@ class IntroductionController extends ToolBaseController
array('tool' => $tool, 'course' => api_get_course_id())
);
$form = $this->getForm($url, $tool);
$form = $this->getFormValidator($url, $tool);
if ($form->validate()) {
$values = $form->exportValues();
@ -87,8 +88,9 @@ class IntroductionController extends ToolBaseController
* @param string $tool
* @return Response
*/
public function deleteAction($tool)
public function deleteAction(Request $request)
{
//$tool
$request = $this->getRequest();
$courseId = $request->get('courseId');
$sessionId = $request->get('sessionId');
@ -114,7 +116,7 @@ class IntroductionController extends ToolBaseController
* @param string
* @return \FormValidator
*/
private function getForm($url, $tool)
public function getFormValidator($url, $tool)
{
$toolbar_set = 'IntroductionTool';
$width = '100%';

@ -5,6 +5,7 @@ namespace Chamilo\CourseBundle\Controller\LearningPath;
use Chamilo\CoreBundle\Controller\BaseController;
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
@ -24,9 +25,10 @@ class LearningPathController extends BaseController
*
* @return Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/
public function indexAction(Application $app, $lpId)
public function indexAction(Request $request)
{
$request = $app['request'];
///$lpId
$courseId = api_get_course_int_id();

@ -10,20 +10,20 @@ use Knp\Menu\Renderer\ListRenderer;
use Symfony\Component\HttpFoundation\Request;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CourseBundle\Controller\ToolInterface;
/**
* Each entity controller must extends this class.
*
* @abstract
*/
abstract class ToolBaseController extends BaseController
abstract class ToolBaseController extends BaseController implements ToolInterface
{
protected $course;
protected $session;
/**
* This function is set in the CourseListener.php
* @param Course $course
* @inheritdoc
*/
public function setCourse(Course $course)
{
@ -31,7 +31,7 @@ abstract class ToolBaseController extends BaseController
}
/**
* @return Course
* @inheritdoc
*/
public function getCourse()
{
@ -39,8 +39,8 @@ abstract class ToolBaseController extends BaseController
}
/**
* This function is set in the CourseListener.php
* @param Session $session
*
* @inheritdoc
*/
public function setSession(Session $session)
{
@ -128,8 +128,8 @@ abstract class ToolBaseController extends BaseController
public function before(Request $request)
{
$cidReset = $this->get('cidReset');
$cidReq = $request->get('cidReq');
$sessionHandler = $request->getSession();
if (empty($cidReq)) {
$cidReq = $request->get('courseCode');
@ -151,7 +151,7 @@ abstract class ToolBaseController extends BaseController
$courseReset = true;
}
$this->getSessionHandler()->set('courseReset', $courseReset);
$sessionHandler->set('courseReset', $courseReset);
$groupReset = false;
if ($tempGroupId != $groupId || empty($tempGroupId)) {
@ -172,17 +172,17 @@ abstract class ToolBaseController extends BaseController
$courseCode = $courseInfo['code'];
$courseId = $courseInfo['real_id'];
$this->getSessionHandler()->set('_real_cid', $courseId);
$this->getSessionHandler()->set('_cid', $courseCode);
$this->getSessionHandler()->set('_course', $courseInfo);
$sessionHandler->set('_real_cid', $courseId);
$sessionHandler->set('_cid', $courseCode);
$sessionHandler->set('_course', $courseInfo);
} else {
$this->abort(404, $this->trans('Course not available'));
}
} else {
$this->getSessionHandler()->remove('_real_cid');
$this->getSessionHandler()->remove('_cid');
$this->getSessionHandler()->remove('_course');
$sessionHandler->remove('_real_cid');
$sessionHandler->remove('_cid');
$sessionHandler->remove('_course');
}
}
@ -196,23 +196,23 @@ abstract class ToolBaseController extends BaseController
}
if ($sessionReset) {
$this->getSessionHandler()->remove('session_name');
$this->getSessionHandler()->remove('id_session');
$sessionHandler->remove('session_name');
$sessionHandler->remove('id_session');
if (!empty($sessionId)) {
$sessionInfo = api_get_session_info($sessionId);
if (empty($sessionInfo)) {
$this->abort(404, $this->trans('Session not available'));
} else {
$this->getSessionHandler()->set('id_session', $sessionId);
$sessionHandler->set('id_session', $sessionId);
}
}
}
if ($groupReset) {
$this->getSessionHandler()->remove('_gid');
$sessionHandler->remove('_gid');
if (!empty($groupId)) {
$this->getSessionHandler()->set('_gid', $groupId);
$sessionHandler->set('_gid', $groupId);
}
}
}

@ -0,0 +1,220 @@
<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CourseBundle\Controller;
use Chamilo\CoreBundle\Controller\BaseController;
use Chamilo\CoreBundle\Controller\BaseResourceController;
use Knp\Menu\FactoryInterface as MenuFactoryInterface;
use Knp\Menu\ItemInterface as MenuItemInterface;
use Knp\Menu\Renderer\ListRenderer;
use Symfony\Component\HttpFoundation\Request;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CourseBundle\Controller\ToolInterface;
/**
* Each entity controller must extends this class.
*
* @abstract
*/
abstract class ToolBaseCrudController extends BaseResourceController implements ToolInterface
{
protected $course;
protected $session;
/**
* @inheritdoc
*/
public function setCourse(Course $course)
{
$this->course = $course;
}
/**
* @inheritdoc
*/
public function getCourse()
{
return $this->course;
}
/**
* @inheritdoc
*/
public function setSession(Session $session)
{
$this->session = $session;
}
/**
* @inheritdoc
*/
public function getSession()
{
return $this->session;
}
/**
* @param $action
* @param MenuItemInterface $menu
* @return MenuItemInterface
*/
public function buildBreadcrumbs($action, MenuItemInterface $menu = null)
{
if (!$menu) {
$menu = $this->getHomeBreadCrumb();
}
// Tool home
$menu->addChild(
$this->trans($this->getClassnameLabel()),
array(
'uri' => $this->generateControllerUrl(
'indexAction',
array(
'courseCode' => $this->getCourse()->getCode()
)
)
)
);
$action = str_replace(
array($this->getControllerAlias().':', 'Action'),
'',
$action
);
switch ($action) {
case 'add':
case 'edit':
$menu->addChild(
$this->trans($this->getClassnameLabel().ucfirst($action))
//array('uri' => $this->generateControllerUrl($action.'Action'))
);
break;
}
return $menu;
}
/**
* Converts string 'Chamilo\CourseBundle\Controller\CourseHome\CourseHomeController' into
* 'tool/course_home'
*/
public function getTemplatePath()
{
$parts = $this->getClassParts();
$newPath = array();
foreach ($parts as $part) {
if (in_array($part, array('chamilo', 'controller')) ||
strpos($part, '_controller') > 0
) {
continue;
}
$newPath[] = $part;
}
$template = implode('/', $newPath);
return str_replace('_controller', '', $template);
}
/**
* Before middleware for the ToolBaseController
*
* @param Request $request
*/
public function before(Request $request)
{
$cidReset = $this->get('cidReset');
$cidReq = $request->get('cidReq');
$sessionHandler = $request->getSession();
if (empty($cidReq)) {
$cidReq = $request->get('courseCode');
}
$sessionId = $request->get('id_session');
$groupId = $request->get('gidReq');
$tempCourseId = api_get_course_id();
$tempGroupId = api_get_group_id();
$tempSessionId = api_get_session_id();
$courseReset = false;
if ((!empty($cidReq) && $tempCourseId != $cidReq) || empty($tempCourseId) || empty($tempCourseId) == -1) {
$courseReset = true;
}
if (isset($cidReset) && $cidReset == 1) {
$courseReset = true;
}
$sessionHandler->set('courseReset', $courseReset);
$groupReset = false;
if ($tempGroupId != $groupId || empty($tempGroupId)) {
$groupReset = true;
}
$sessionReset = false;
if ($tempSessionId != $sessionId || empty($tempSessionId)) {
$sessionReset = true;
}
if ($courseReset) {
if (!empty($cidReq) && $cidReq != -1) {
$courseInfo = api_get_course_info($cidReq, true, true);
if (!empty($courseInfo)) {
$courseCode = $courseInfo['code'];
$courseId = $courseInfo['real_id'];
$sessionHandler->set('_real_cid', $courseId);
$sessionHandler->set('_cid', $courseCode);
$sessionHandler->set('_course', $courseInfo);
} else {
$this->abort(404, $this->trans('Course not available'));
}
} else {
$sessionHandler->remove('_real_cid');
$sessionHandler->remove('_cid');
$sessionHandler->remove('_course');
}
}
$courseCode = api_get_course_id();
if (!empty($courseCode) && $courseCode != -1) {
//$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$time = api_get_utc_datetime();
$sql = "UPDATE course SET last_visit= '$time' WHERE code='$courseCode'";
$this->getDatabase()->query($sql);
}
if ($sessionReset) {
$sessionHandler->remove('session_name');
$sessionHandler->remove('id_session');
if (!empty($sessionId)) {
$sessionInfo = api_get_session_info($sessionId);
if (empty($sessionInfo)) {
$this->abort(404, $this->trans('Session not available'));
} else {
$sessionHandler->set('id_session', $sessionId);
}
}
}
if ($groupReset) {
$sessionHandler->remove('_gid');
if (!empty($groupId)) {
$sessionHandler->set('_gid', $groupId);
}
}
}
}

@ -0,0 +1,36 @@
<?php
namespace Chamilo\CourseBundle\Controller;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
/**
* Interface ToolInterface
* This functions are loaded in the CourseListener.php
* @package Chamilo\CourseBundle\Controller
*/
interface ToolInterface
{
/**
* @param Course $course
* @return mixed
*/
public function setCourse(Course $course);
/**
* @param Session $session
* @return mixed
*/
public function setSession(Session $session);
/**
* @return Course
*/
public function getCourse();
/**
* @return Session
*/
public function getSession();
}

@ -4,6 +4,8 @@
namespace Chamilo\CourseBundle\Event;
use Symfony\Component\EventDispatcher\Event;
use Chamilo\UserBundle\Entity\User;
use Chamilo\CoreBundle\Entity\Course;
/**
* Class CourseAccess

@ -7,6 +7,10 @@ use Chamilo\CourseBundle\Event\CourseAccess;
use Doctrine\ORM\EntityManager;
use Chamilo\CoreBundle\Entity\TrackEAccess;
/**
* Class CourseAccessListener
* @package Chamilo\CourseBundle\EventListener
*/
class CourseAccessListener
{
protected $em;

@ -8,10 +8,14 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Chamilo\CourseBundle\Controller\ToolBaseController;
use Chamilo\CourseBundle\Controller\ToolInterface;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
/**
* Class CourseListener
* @package Chamilo\CourseBundle\EventListener
*/
class CourseListener
{
/** @var ContainerInterface */
@ -51,7 +55,9 @@ class CourseListener
return;
}
if ($controller[0] instanceof ToolBaseController) {
// This controller implements ToolInterface? Then set the course/session
if ($controller[0] instanceof ToolInterface) {
//if ($controller[0] instanceof ToolBaseController) {
//$token = $event->getRequest()->query->get('token');
$kernel = $event->getKernel();
$request = $event->getRequest();
@ -93,7 +99,7 @@ class CourseListener
if (!empty($sessionId)) {
$session = $em->getRepository('ChamiloCoreBundle:Session')->find($sessionId);
if (!empty($session)) {
$controller[0]->setSession($session);
//$controller[0]->setSession($session);
}
}
}

@ -27,11 +27,7 @@ class CNotebookAdmin extends Admin
{
$formMapper
->add('name', 'text')
->add(
'description',
'textarea',
array('attr' => array('class' => 'ckeditor'))
)
->add('description', 'ckeditor')
;
}

@ -15,17 +15,17 @@ use APY\DataGridBundle\Grid\Export\PHPExcelPDFExport;
use APY\DataGridBundle\Grid\Action\MassAction;
use APY\DataGridBundle\Grid\Action\RowAction;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
use Symfony\Component\HttpFoundation\Request;
use Chamilo\NotebookBundle\Entity\CNotebookRepository;
use Chamilo\NotebookBundle\Entity\CNotebookManager;
use Chamilo\NotebookBundle\Entity\CNotebook;
use Chamilo\CourseBundle\Controller\ToolBaseCrudController;
/**
* Class CNotebookController
* @package Chamilo\NotebookBundle\Controller
*/
class CNotebookController extends ResourceController
class CNotebookController extends ToolBaseCrudController
{
/**
* @Route("/")
@ -56,25 +56,60 @@ class CNotebookController extends ResourceController
);*/
//$deleteMassAction = new MassAction('Delete', 'ChamiloNotebookBundle:CNotebook:deleteMass');
$deleteMassAction = new MassAction('Delete', 'chamilo.controller.notebook:deleteMassAction', true, array('course' => $request->get('course')));
$deleteMassAction = new MassAction(
'Delete',
'chamilo.controller.notebook:deleteMassAction',
true,
array('course' => $request->get('course'))
);
$grid->addMassAction($deleteMassAction);
$myRowAction = new RowAction('View', 'chamilo_notebook_show', false, '_self', array('class' => 'btn btn-default'));
$myRowAction = new RowAction(
'View',
'chamilo_notebook_show',
false,
'_self',
array('class' => 'btn btn-default')
);
$myRowAction->setRouteParameters(array('course' => $courseCode, 'id'));
$grid->addRowAction($myRowAction);
$myRowAction = new RowAction('Edit', 'chamilo_notebook_edit', false, '_self', array('class' => 'btn btn-info'));
$myRowAction = new RowAction(
'Edit',
'chamilo_notebook_edit',
false,
'_self',
array('class' => 'btn btn-info')
);
$myRowAction->setRouteParameters(array('course' => $courseCode, 'id'));
$grid->addRowAction($myRowAction);
$myRowAction = new RowAction('Delete', 'chamilo_notebook_delete', false, '_self', array('class' => 'btn btn-danger', 'form_delete' => true));
$myRowAction = new RowAction(
'Delete',
'chamilo_notebook_delete',
false,
'_self',
array('class' => 'btn btn-danger', 'form_delete' => true)
);
$myRowAction->setRouteParameters(array('course' => $courseCode, 'id'));
$grid->addRowAction($myRowAction);
$grid->addExport(new CSVExport('CSV Export', 'export', array('course' => $courseCode)));
$grid->addExport(new ExcelExport('Excel Export', 'export', array('course' => $courseCode)));
return $grid->getGridResponse('ChamiloNotebookBundle:Notebook:index.html.twig');
$grid->addExport(
new CSVExport(
'CSV Export', 'export', array('course' => $courseCode)
)
);
$grid->addExport(
new ExcelExport(
'Excel Export',
'export',
array('course' => $courseCode)
)
);
return $grid->getGridResponse(
'ChamiloNotebookBundle:Notebook:index.html.twig'
);
}
/**
@ -102,7 +137,10 @@ class CNotebookController extends ResourceController
$this->domainManager->delete($resource);
}
}
return $this->routeRedirectView('chamilo_notebook_index', array('course' => $request->get('course')));
return $this->routeRedirectView(
'chamilo_notebook_index',
array('course' => $request->get('course'))
);
}
/**
@ -114,9 +152,11 @@ class CNotebookController extends ResourceController
$courseCode = $request->get('course');
$course = $this->get('chamilo_core.manager.course')->findOneByCode($courseCode);
/** @var CNotebook $notebook */
$notebook = $this->getNotebookRepository()->createNewWithCourse($this->getUser(), $course);
$notebook = $this->getNotebookRepository()->createNewWithCourse(
$this->getUser(),
$course
);
//$notebook->setSession();
return $notebook;
}

@ -21,6 +21,7 @@ use Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository;
class CNotebookRepository extends EntityRepository
{
/**
* @param User $user
* @param Course $course
* @return mixed
*/
@ -38,6 +39,11 @@ class CNotebookRepository extends EntityRepository
//var_dump($course);
}
/**
* @param AbstractResource $resource
* @param User $creator
* @return ResourceNode
*/
public function addResource(AbstractResource $resource, User $creator)
{
$resourceNode = new ResourceNode();
@ -65,6 +71,12 @@ class CNotebookRepository extends EntityRepository
return $resourceLink;
}
/**
* @param AbstractResource $resource
* @param User $user
* @param Course $course
* @return ResourceLink
*/
public function addResourceToCourse(AbstractResource $resource, User $user, Course $course)
{
$resourceNode = $this->addResource($resource, $user);
@ -78,6 +90,12 @@ class CNotebookRepository extends EntityRepository
return $resourceLink;
}
/**
* @param AbstractResource $resource
* @param User $user
* @param Course $course
* @param Session $session
*/
public function addResourceToSession(AbstractResource $resource, User $user, Course $course, Session $session)
{
$resourceLink = $this->addResourceToCourse($resource, $user, $course);

@ -13,11 +13,7 @@ class CNotebookType extends AbstractType
{
$builder
->add('name')
->add(
'description',
'textarea',
array('attr' => array('class' => 'ckeditor'))
)
->add('description', 'ckeditor')
/*->add('cId')
->add('notebookId')
->add('userId')

@ -1,3 +1,8 @@
#chamilo_notebook:
# resource: "@ChamiloNotebookBundle/Controller/CNotebookController.php"
# type: annotation
# prefix: courses/{course}/notebook/
chamilo_notebook_index:
pattern: courses/{course}/notebook
methods: [GET, POST, HEAD, DELETE]

@ -27,7 +27,7 @@ use Sonata\PageBundle\Request\RequestFactory;
$request = RequestFactory::createFromGlobals('host_with_path_by_locale');
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request->enableHttpMethodParameterOverride();
$kernel = new AppKernel('prod', false);
$response = $kernel->handle($request);

Loading…
Cancel
Save