Пример #1
0
 /**
  * @EXT\Route(
  *     "/shortcut/{parent}/create",
  *     name="claro_resource_create_shortcut",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("creator", options={"authenticatedUser" = true})
  * @EXT\ParamConverter(
  *     "nodes",
  *     class="ClarolineCoreBundle:Resource\ResourceNode",
  *     options={"multipleIds" = true}
  * )
  *
  * Creates (one or several) shortcuts.
  * Takes an array of ids to be functionnal (query string: "ids[]=1&ids[]=2" ...).
  *
  * @param ResourceNode $parent    the new parent
  * @param User         $creator   the shortcut creator
  * @param array        $nodes     the resources going to be linked
  *
  * @return Response
  */
 public function createShortcutAction(ResourceNode $parent, User $creator, array $nodes)
 {
     $collection = new ResourceCollection(array($parent));
     $collection->setAttributes(array('type' => 'resource_shortcut'));
     $this->checkAccess('CREATE', $collection);
     foreach ($nodes as $node) {
         $shortcut = $this->resourceManager->makeShortcut($node, $parent, $creator, new ResourceShortcut());
         $links[] = $this->resourceManager->toArray($shortcut->getResourceNode(), $this->tokenStorage->getToken());
     }
     return new JsonResponse($links);
 }
Пример #2
0
 /**
  * @EXT\Route(
  *     "/tinymce/upload/{parent}",
  *     name="claro_file_upload_with_tinymce",
  *     options={"expose"=true}
  * )
  * @EXT\ParamConverter("user", options={"authenticatedUser" = true})
  *
  * Creates a resource from uploaded file.
  *
  * @param integer $parentId the parent id
  *
  * @throws \Exception
  * @return Response
  */
 public function uploadWithTinyMceAction($parent, User $user)
 {
     $parent = $this->get('claroline.manager.resource_manager')->getById($parent);
     $collection = new ResourceCollection(array($parent));
     $collection->setAttributes(array('type' => 'file'));
     if (!$this->get('security.authorization_checker')->isGranted('CREATE', $collection)) {
         //use different header so we know something went wrong
         $content = $this->get('translator')->trans('resource_creation_denied', array('%path%' => $parent->getPathForDisplay()), 'platform');
         $response = new Response($content, 403);
         $response->headers->add(array('XXX-Claroline' => 'resource-error'));
         return $response;
     }
     //let's create the file !
     $request = $this->getRequest();
     $fileForm = $request->files->get('file_form');
     $file = $fileForm['file'];
     $fileListener = $this->get('claroline.listener.file_listener');
     $ext = strtolower($file->getClientOriginalExtension());
     $mimeType = $this->container->get('claroline.utilities.mime_type_guesser')->guess($ext);
     $file = $fileListener->createFile(new File(), $file, $file->getClientOriginalName(), $mimeType, $parent->getWorkspace());
     $resourceManager = $this->get('claroline.manager.resource_manager');
     $file = $resourceManager->create($file, $resourceManager->getResourceTypeByName('file'), $user, $parent->getWorkspace(), $parent, null, array(), true);
     $nodesArray[0] = $resourceManager->toArray($file->getResourceNode(), $this->get('security.token_storage')->getToken());
     return new JsonResponse($nodesArray);
 }