Add ckeditor when creating a new file.

pull/3064/head
Julio Montoya 5 years ago
parent 55196afe1d
commit 15a37fe67f
  1. 10
      config/packages/fos_ck_editor.yaml
  2. 5
      src/CoreBundle/Controller/EditorController.php
  3. 80
      src/CoreBundle/Controller/ResourceController.php
  4. 10
      src/CoreBundle/Entity/Listener/ResourceListener.php
  5. 4
      src/CoreBundle/Repository/ResourceRepository.php
  6. 2
      src/CourseBundle/Form/Type/CDocumentType.php
  7. 3
      src/ThemeBundle/Resources/views/Resource/new.html.twig

@ -14,10 +14,12 @@ fos_ck_editor:
- [Format, Maximize, Source]
filebrowserBrowseRoute: admin_chamilo_media_media_ckeditor_browser
filebrowserImageBrowseRoute: admin_chamilo_media_media_ckeditor_browser
# Display images by default when clicking the image dialog browse button
filebrowserImageBrowseRouteParameters:
provider: sonata.media.provider.image
# filebrowserImageBrowseRoute: editor_filemanager
# filebrowserImageBrowseRoute: editor_filemanager
# filebrowserImageBrowseRouteParameters:
# provider: sonata.media.provider.image
filebrowserUploadRoute: admin_chamilo_media_media_ckeditor_upload
filebrowserUploadRouteParameters:
provider: sonata.media.provider.file

@ -67,8 +67,9 @@ class EditorController extends BaseController
*
* @param int $parentId
*/
public function customEditorFileManager($parentId = 0, CDocumentRepository $documentRepository): Response
public function customEditorFileManager(\Symfony\Component\HttpFoundation\Request $request, $parentId = 0, CDocumentRepository $documentRepository): Response
{
$id = $request->get('id');
$courseInfo = api_get_course_info();
$params = [
@ -86,7 +87,7 @@ class EditorController extends BaseController
$oldParentId = -1;
if (!empty($parentId)) {
/** @var CDocument $doc */
$doc = $this->getDoctrine()->getRepository('ChamiloCourseBundle:CDocument')->find($parentId);
$doc = $this->getDoctrine()->getRepository('ChamiloCourseBundle:CDocument')->findOneBy(['resourceNode'=> $id]);
$path = $doc->getPath();
$parent = $documentRepository->getParent($doc);

@ -13,6 +13,7 @@ use APY\DataGridBundle\Grid\Source\Entity;
use Chamilo\CoreBundle\Block\BreadcrumbBlockService;
use Chamilo\CoreBundle\Component\Utils\Glide;
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
use Chamilo\CoreBundle\Entity\Resource\ResourceFile;
use Chamilo\CoreBundle\Entity\Resource\ResourceLink;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter;
@ -23,6 +24,7 @@ use Chamilo\CourseBundle\Repository\CDocumentRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\QueryBuilder;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use FOS\RestBundle\View\View;
use League\Flysystem\Filesystem;
use Oneup\UploaderBundle\Uploader\Response\EmptyResponse;
@ -41,6 +43,8 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouterInterface;
use Vich\UploaderBundle\Util\Transliterator;
use ZipStream\Option\Archive;
use ZipStream\ZipStream;
@ -615,7 +619,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
$stream = $fileSystem->readStream($systemName);
//error_log($node->getPathForDisplay());
$fileToDisplay = str_replace($rootNodePath, '', $node->getPathForDisplay());
error_log($fileToDisplay);
$zip->addFileFromStream($fileToDisplay, $stream);
}
//$data = $repo->getDocumentContent($not_deleted_file['id']);
@ -659,47 +662,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
);
}
/**
* @return JsonResponse
*/
public function upload()
{
error_log('upload!!!');
return;
$request = $this->getRequest();
$response = new EmptyResponse();
$files = $this->getFiles($request->files);
$chunked = null !== $request->headers->get('content-range');
try {
/** @var UploadedFile $file */
foreach ($files as $file) {
try {
$file->getFilename();
$type = $request->get('type');
if ($type === 'course') {
$courseCode = $request->get('identifier');
$this->container->get('');
}
$chunked ?
$this->handleChunkedUpload($file, $response, $request) :
$this->handleUpload($file, $response, $request);
} catch (UploadException $e) {
$this->errorHandler->addException($response, $e);
}
}
} catch (UploadException $e) {
// return nothing
return new JsonResponse([]);
}
return $this->createSupportedJsonResponse($response->assemble());
}
/**
* @param Request $request
* @param ResourceNode $resourceNode
@ -784,6 +746,23 @@ class ResourceController extends AbstractResourceController implements CourseCon
$repository = $this->getRepositoryFromRequest($request);
$form = $repository->getForm($this->container->get('form.factory'));
$url = $this->generateUrl('editor_filemanager');
$form->add(
'content',
CKEditorType::class,
[
'mapped' => false,
'config' => [
'filebrowserImageBrowseRoute' => 'editor_filemanager',
'filebrowserImageBrowseRouteParameters' => array(
'tool' => $tool,
'type' => $type,
'cidReq' => $this->getCourse()->getCode(),
'id' => $resourceNodeParentId
)
],
]
);
$course = $this->getCourse();
$session = $this->getSession();
@ -802,15 +781,30 @@ class ResourceController extends AbstractResourceController implements CourseCon
->setSession($session)
->setFiletype($fileType)
//->setTitle($title) // already added in $form->getData()
//->setComment($comment)
->setReadonly(false)
;
$content = $form->get('content')->getViewData();
$fileName = $newResource->getTitle().'.html';
$handle = tmpfile();
fwrite($handle, $content);
$meta = stream_get_meta_data($handle);
$file = new UploadedFile($meta['uri'], $fileName, null, null, true);
$em = $this->getDoctrine()->getManager();
$em->persist($newResource);
$em->flush();
$resourceNode = $repository->addResourceNodeParent($newResource, $this->getUser(), $parentNode);
$resourceNode->setName($fileName);
$resourceFile = new ResourceFile();
$resourceFile->setFile($file);
$resourceFile->setName($fileName);
$em->persist($resourceFile);
$resourceNode->setResourceFile($resourceFile);
$em->persist($resourceNode);
$repository->addResourceNodeToCourse(
$resourceNode,

@ -18,12 +18,15 @@ use Vich\UploaderBundle\Util\FilenameUtils;
class ResourceListener
{
protected $slugify;
protected $mountManager;
public function __construct(SlugifyInterface $slugify, MountManager $mountManager)
/**
* ResourceListener constructor.
*
* @param SlugifyInterface $slugify
*/
public function __construct(SlugifyInterface $slugify)
{
$this->slugify = $slugify;
$this->fileSystem = $mountManager->getFilesystem('resources_fs');
}
/**
@ -45,7 +48,6 @@ class ResourceListener
} else {
$modified = $this->slugify->slugify($name);
}
$node->setName($modified);
$em->persist($node);

@ -165,7 +165,7 @@ class ResourceRepository extends EntityRepository
*
* @return FormInterface
*/
public function getForm(FormFactory $formFactory, AbstractResource $resource = null)
public function getForm(FormFactory $formFactory, AbstractResource $resource = null, $options = [])
{
$className = $this->repository->getClassName();
$shortName = (new \ReflectionClass($className))->getShortName();
@ -176,7 +176,7 @@ class ResourceRepository extends EntityRepository
$resource = new $className;
}
return $formFactory->create($formType, $resource);
return $formFactory->create($formType, $resource, $options);
}
/**

@ -21,10 +21,8 @@ class CDocumentType extends AbstractType
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
///var_dump($options);
$builder
->add('title')
->add('title')
// ->add('comment', CKEditorType::class)
/*->add(
'shared',

@ -8,7 +8,8 @@
<div class="box-body">
{{ form_start(form) }}
{# {{ form_errors(form) }}#}
{{ form_row(form.title) }}
{{ form_row(form.content) }}
{# {{ form_row(form.title) }}#}

Loading…
Cancel
Save