Fix ckeditor filemanager, add translation variables

Use resource node to get folder space, add comments, fix add folder
parent id
pull/2944/head
Julio 6 years ago
parent 28df2ad87a
commit f190649b9a
  1. 5
      main/document/document.php
  2. 9
      main/inc/ajax/document.ajax.php
  3. 10
      main/inc/lib/document.lib.php
  4. 14
      main/inc/lib/fileUpload.lib.php
  5. 18
      src/CoreBundle/Controller/EditorController.php
  6. 7
      src/CoreBundle/Controller/ResourceController.php
  7. 82
      src/CourseBundle/Repository/CDocumentRepository.php
  8. 14
      src/ThemeBundle/Resources/views/Editor/custom.html.twig

@ -1401,7 +1401,10 @@ if ($isAllowedToEdit ||
$base_work_dir,
$dir_name,
$post_dir_name,
$visibility
$visibility,
false,
true,
$document_data
);
if (!empty($newFolderData)) {

@ -4,6 +4,9 @@
/**
* Responses to AJAX calls for the document upload.
*/
use Chamilo\CoreBundle\Framework\Container;
require_once __DIR__.'/../global.inc.php';
$action = $_REQUEST['a'];
@ -12,7 +15,11 @@ switch ($action) {
api_protect_course_script(true);
$path = isset($_GET['path']) ? $_GET['path'] : '';
$isAllowedToEdit = api_is_allowed_to_edit();
$size = DocumentManager::getTotalFolderSize($path, $isAllowedToEdit);
$repo = Container::$container->get('Chamilo\CourseBundle\Repository\CDocumentRepository');
$size = $repo->getFolderSize(api_get_course_int_id(), $path);
//var_dump($size);
//$size = DocumentManager::getTotalFolderSize($path, $isAllowedToEdit);
echo format_file_size($size);
break;
case 'get_document_quota':

@ -3044,6 +3044,8 @@ class DocumentManager
* @param int $group_id (to calculate group document space)
* @param int $session_id
*
* @deprecated use CDocumentRepository::getTotalSpace
*
* @return int total size
*/
public static function documents_total_space($course_id = null, $group_id = null, $session_id = null)
@ -6189,6 +6191,7 @@ class DocumentManager
*
* @param string $path
* @param bool $can_see_invisible
* @deprecated use CDocumentRepository::getFolderSize
*
* @return int Total size
*/
@ -7149,7 +7152,7 @@ class DocumentManager
* @param array $courseInfo
* @param bool $is_certificate_mode
* @param array $groupMemberWithUploadRights
* @param string $curdirpath
* @param string $path
* @param bool $addToEditor
* @param string $editorUrl
*
@ -7160,7 +7163,7 @@ class DocumentManager
$courseInfo,
$is_certificate_mode,
$groupMemberWithUploadRights,
$curdirpath,
$path,
$addToEditor = false,
$editorUrl = ''
) {
@ -7179,7 +7182,6 @@ class DocumentManager
$group_properties = GroupManager::get_group_properties($groupId);
$sortable_data = [];
$count = 1;
foreach ($documentAndFolders as $key => $document_data) {
$row = [];
$row['id'] = $document_data['id'];
@ -7299,7 +7301,7 @@ class DocumentManager
// Admins get an edit column
if ($isAllowedToEdit ||
$groupMemberWithEditRightsCheckDocument ||
self::is_my_shared_folder(api_get_user_id(), $curdirpath, $sessionId)
self::is_my_shared_folder(api_get_user_id(), $path, $sessionId)
) {
$is_template = isset($document_data['is_template']) ? $document_data['is_template'] : false;

@ -1384,6 +1384,7 @@ function search_img_from_html($html_file)
* @param int $visibility (0 for invisible, 1 for visible, 2 for deleted)
* @param bool $generateNewNameIfExists
* @param bool $sendNotification depends in conf setting "send_notification_when_document_added"
* @param array $parentInfo
*
* @return CDocument|false
*/
@ -1398,7 +1399,8 @@ function create_unexisting_directory(
$title = '',
$visibility = '',
$generateNewNameIfExists = false,
$sendNotification = true
$sendNotification = true,
$parentInfo = []
) {
$course_id = $_course['real_id'];
$session_id = (int) $session_id;
@ -1452,6 +1454,12 @@ function create_unexisting_directory(
c_id = $course_id AND
path = '".Database::escape_string($systemFolderName)."'";
$rs = Database::query($sql);
$parentId = 0;
if (!empty($parentInfo) && isset($parentInfo['iid'])) {
$parentId = $parentInfo['iid'];
}
if (Database::num_rows($rs) == 0) {
$document = DocumentManager::addDocument(
$_course,
@ -1465,7 +1473,9 @@ function create_unexisting_directory(
$to_group_id,
$session_id,
$user_id,
$sendNotification
$sendNotification,
'',
$parentId
);
if ($document) {

@ -7,6 +7,8 @@ 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;
@ -72,13 +74,13 @@ class EditorController extends BaseController
*
* @return Response
*/
public function customEditorFileManager($parentId = 0): Response
public function customEditorFileManager($parentId = 0, CDocumentRepository $documentRepository): Response
{
$courseInfo = api_get_course_info();
$params = [
'table' => '',
'parent_id' => 0,
'parent_id' => -1,
'allow_course' => false,
];
@ -88,9 +90,17 @@ class EditorController extends BaseController
$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(
@ -105,7 +115,7 @@ class EditorController extends BaseController
$parentId
);
$url = $this->generateUrl('editor_filemanager', ['parentId' => $parentId]);
$url = $this->generateUrl('editor_filemanager');
$data = DocumentManager::processDocumentAndFolders(
$documentAndFolders,
$courseInfo,
@ -142,7 +152,7 @@ class EditorController extends BaseController
$params = [
'table' => $table->return_table(),
'parent_id' => (int) $parentId,
'parent_id' => (int) $oldParentId,
'allow_course' => true,
];
}

@ -410,7 +410,7 @@ class ResourceController extends BaseController implements CourseControllerInter
{
$file = $request->get('file');
$type = $request->get('type');
$filter = $request->get('filter');
$filter = $request->get('filter'); // see list of filters in config/packages/liip_imagine.yaml
if (empty($type)) {
$type = 'show';
@ -470,11 +470,6 @@ class ResourceController extends BaseController implements CourseControllerInter
return new BinaryFileResponse($filename);
return $this->render('@SonataMedia/Media/view.html.twig', [
'media' => $media,
'formats' => $this->get('sonata.media.pool')->getFormatNamesByContext($media->getContext()),
'format' => $format,
]);
break;
case 'download':
$provider = $this->get('sonata.media.pool')->getProvider($media->getProviderName());

@ -3,6 +3,7 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\Resource\ResourceLink;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CourseBundle\Entity\CDocument;
use Doctrine\ORM\EntityManager;
@ -69,9 +70,7 @@ class CDocumentRepository extends ResourceRepository
{
try {
$document = $this->find($id);
$resourceNode = $document->getResourceNode();
$resourceFile = $resourceNode->getResourceFile();
$media = $resourceFile->getMedia();
$provider = $this->mediaPool->getProvider($media->getProviderName());
@ -88,4 +87,83 @@ class CDocumentRepository extends ResourceRepository
throw new FileNotFound($id);
}
}
/**
* @param CDocument $document
*
* @return CDocument|null
*/
public function getParent(CDocument $document)
{
$resourceParent = $document->getResourceNode()->getParent();
if (!empty($resourceParent)) {
$resourceParentId = $resourceParent->getId();
$criteria = [
'resourceNode' => $resourceParentId,
];
return $this->findOneBy($criteria);
}
return null;
}
/**
* @param int $courseId
* @param string $path
*
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function getFolderSize($courseId, $path)
{
$path = str_replace('_', '\_', $path);
$addedSlash = $path === '/' ? '' : '/';
$repo = $this->repository;
$qb = $repo->createQueryBuilder('d');
$query = $qb
->select('SUM(d.size)')
->innerJoin('d.resourceNode', 'r')
->innerJoin('r.resourceLinks', 'l')
->where('d.path LIKE :path')
->andWhere('d.path NOT LIKE :deleted')
->andWhere('d.path NOT LIKE :extra_path ')
->andWhere('l.visibility <> :visibility')
->andWhere('d.course = :course')
->setParameters([
'path' => $path.$addedSlash.'%',
'extra_path' => $path.$addedSlash.'%/%',
'course' => $courseId,
'deleted' => '%_DELETED_%',
'visibility' => ResourceLink::VISIBILITY_DELETED,
])
->getQuery();
return $query->getSingleScalarResult();
}
public function getTotalSpace($courseId, $groupId = null, $sessionId = null)
{
$repo = $this->repository;
$qb = $repo->createQueryBuilder('d');
$query = $qb
->select('SUM(d.size)')
->innerJoin('d.resourceNode', 'r')
->innerJoin('r.resourceLinks', 'l')
->where('l.course = :course')
->andWhere('l.group = :group')
->andWhere('l.session = :session')
->andWhere('l.visibility <> :visibility')
->setParameters([
'course' => $courseId,
'group' => $groupId,
'session' => $sessionId,
'visibility' => ResourceLink::VISIBILITY_DELETED,
])
->getQuery();
return $query->getSingleScalarResult();
}
}

@ -18,25 +18,25 @@
});
});
</script>
{% if parent_id > 0 %}
<div id="toolbar-document" class="actions">
<a class="btn btn-default" href = "javascript:history.back()">Back</a>
</div>
{% else %}
{% if parent_id == -1 %}
{% if allow_course %}
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a id="home-tab" class="nav-link active" data-toggle="tab" href="#home" role="tab">
Course
{{'Course' | trans}}
</a>
</li>
<li class="nav-item">
<a id="profile-tab" class="nav-link" data-toggle="tab" href="#profile" role="tab" >
My files
{{'My files' | trans}}
</a>
</li>
</ul>
{% endif %}
{% else %}
<div id="toolbar-document" class="actions">
<a class="btn btn-default" href = "{{ url('editor_filemanager', {'parentId' : parent_id}) }}">{{'Back' | trans}}</a>
</div>
{% endif %}
{% if allow_course %}

Loading…
Cancel
Save