/** * @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); }
/** * @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); }