Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/src/CoreBundle/Controller/EditorController.php

239 lines
7.2 KiB

<?php
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Controller;
use Chamilo\CoreBundle\Component\Editor\CkEditor\CkEditor;
use Chamilo\CoreBundle\Component\Editor\Connector;
use Chamilo\CoreBundle\Component\Editor\Finder;
use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
use Chamilo\CourseBundle\Entity\CDocument;
use Chamilo\CourseBundle\Repository\CDocumentRepository;
use Chamilo\SettingsBundle\Manager\SettingsManager;
use DocumentManager;
use FM\ElfinderBundle\Connector\ElFinderConnector;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* Class EditorController.
*
* @Route("/editor")
*
* @deprecated not used for now
*
* @package Chamilo\CoreBundle\Controller
*/
class EditorController extends BaseController
{
/**
* Get templates (left column when creating a document).
*
* @Route("/templates", methods={"GET"}, name="editor_templates")
*
* @param TranslatorInterface $translator
* @param RouterInterface $router
*
* @return Response
*/
public function editorTemplatesAction(TranslatorInterface $translator, RouterInterface $router)
{
$editor = new CkEditor(
$translator,
$router
);
$templates = $editor->simpleFormatTemplates();
return $this->render(
'@ChamiloTheme/Editor/templates.html.twig',
['templates' => $templates]
);
}
/**
* @Route("/myfilemanager", methods={"GET"}, name="editor_myfiles")
*
* @return Response
*/
public function editorFileManager(): Response
{
\Chat::setDisableChat();
$params = [
'course_condition' => '?'.$this->getCourseUrlQuery(),
];
return $this->render('@ChamiloTheme/Editor/elfinder.html.twig', $params);
}
/**
* @Route("/filemanager/{parentId}", methods={"GET"}, name="editor_filemanager")
*
* @param int $parentId
* @param CDocumentRepository $documentRepository
*
* @return Response
*/
public function customEditorFileManager($parentId = 0, CDocumentRepository $documentRepository): Response
{
$courseInfo = api_get_course_info();
$params = [
'table' => '',
'parent_id' => -1,
'allow_course' => false,
];
if (!empty($courseInfo)) {
$groupIid = api_get_group_id();
$isAllowedToEdit = api_is_allowed_to_edit();
$groupMemberWithUploadRights = false;
$path = '/';
$oldParentId = -1;
if (!empty($parentId)) {
/** @var CDocument $doc */
$doc = $this->getDoctrine()->getRepository('ChamiloCourseBundle:CDocument')->find($parentId);
$path = $doc->getPath();
$parent = $documentRepository->getParent($doc);
$oldParentId = 0;
if (!empty($parent)) {
$oldParentId = $parent->getId();
}
}
$documentAndFolders = DocumentManager::getAllDocumentData(
$courseInfo,
$path,
$groupIid,
null,
$isAllowedToEdit || $groupMemberWithUploadRights,
false,
0,
null,
$parentId
);
$url = $this->generateUrl('editor_filemanager');
$data = DocumentManager::processDocumentAndFolders(
$documentAndFolders,
$courseInfo,
false,
$groupMemberWithUploadRights,
$path,
true,
$url
);
$show = [1, 1, 1, 1];
if ($isAllowedToEdit) {
$show = [0, 1, 1, 1, 1];
}
$table = new \SortableTableFromArrayConfig(
$data,
2,
20,
'documents',
$show,
[],
'ASC',
true
);
$column = 1;
if ($isAllowedToEdit) {
$table->set_header($column++, '', false, ['style' => 'width:12px;']);
}
$table->set_header($column++, get_lang('Type'), false, ['style' => 'width:30px;']);
$table->set_header($column++, get_lang('Name'));
$table->set_header($column++, get_lang('Size'), false, ['style' => 'width:50px;']);
$table->set_header($column, get_lang('Date'), false, ['style' => 'width:150px;']);
$params = [
'table' => $table->return_table(),
'parent_id' => $oldParentId,
'allow_course' => true,
];
}
return $this->render('@ChamiloTheme/Editor/custom.html.twig', $params);
}
/**
* @Route("/connector", methods={"GET", "POST"}, name="editor_connector")
*
* @param TranslatorInterface $translator
* @param RouterInterface $router
*
* @return Response
*/
public function editorConnector(TranslatorInterface $translator, RouterInterface $router)
{
$course = $this->getCourse();
$session = $this->getCourseSession();
/** @var Connector $connector */
$connector = new Connector(
$this->getDoctrine()->getManager(),
[],
$router,
$translator,
$this->container->get('security.authorization_checker'),
$this->getUser(),
$course,
$session
);
$driverList = [
'PersonalDriver',
//'CourseDriver',
//'CourseUserDriver',
//'HomeDriver'
];
$connector->setDriverList($driverList);
$operations = $connector->getOperations();
// Run elFinder
ob_start();
$finder = new Finder($operations);
$elFinderConnector = new ElFinderConnector($finder);
$elFinderConnector->run();
$content = ob_get_contents();
return $this->render(
'@ChamiloTheme/layout_empty.html.twig',
['content' => $content]
);
}
/**
* @Route("/config", methods={"GET"}, name="config_editor")
*
* @param SettingsManager $settingsManager
*
* @return Response
*/
public function configEditorAction(SettingsManager $settingsManager)
{
$moreButtonsInMaximizedMode = false;
//$settingsManager = $this->get('chamilo.settings.manager');
if ($settingsManager->getSetting('editor.more_buttons_maximized_mode') === 'true') {
$moreButtonsInMaximizedMode = true;
}
return $this->render(
'@ChamiloTheme/Editor/config_js.html.twig',
[
// @todo replace api_get_bootstrap_and_font_awesome
'bootstrap_css' => api_get_bootstrap_and_font_awesome(true),
'css_editor' => ChamiloApi::getEditorBlockStylePath(),
'more_buttons_in_max_mode' => $moreButtonsInMaximizedMode,
]
);
}
}