Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ONLYOFFICE/onlyoffice-nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'controller/templatecontroller.php')
-rw-r--r--controller/templatecontroller.php73
1 files changed, 68 insertions, 5 deletions
diff --git a/controller/templatecontroller.php b/controller/templatecontroller.php
index d3d704f..57322f8 100644
--- a/controller/templatecontroller.php
+++ b/controller/templatecontroller.php
@@ -20,8 +20,13 @@
namespace OCA\Onlyoffice\Controller;
use OCP\AppFramework\Controller;
+use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\DataResponse;
+use OCP\AppFramework\Http\FileDisplayResponse;
+use OCP\Files\NotFoundException;
use OCP\IL10N;
use OCP\ILogger;
+use OCP\IPreview;
use OCP\IRequest;
use OCA\Onlyoffice\TemplateManager;
@@ -46,6 +51,13 @@ class TemplateController extends Controller {
private $logger;
/**
+ * Preview manager
+ *
+ * @var IPreview
+ */
+ private $preview;
+
+ /**
* @param string $AppName - application name
* @param ILogger $logger - logger
* @param IL10N $trans - l10n service
@@ -53,25 +65,37 @@ class TemplateController extends Controller {
public function __construct($AppName,
IRequest $request,
IL10N $trans,
- ILogger $logger
+ ILogger $logger,
+ IPreview $preview
) {
parent::__construct($AppName, $request);
$this->trans = $trans;
$this->logger = $logger;
+ $this->preview = $preview;
}
/**
* Get templates
*
- * @param string $type - template format type
- *
* @return array
*
* @NoAdminRequired
*/
- public function GetTemplates($type = null) {
- return TemplateManager::GetGlobalTemplates($type);
+ public function GetTemplates() {
+ $templatesList = TemplateManager::GetGlobalTemplates();
+
+ $templates = [];
+ foreach ($templatesList as $templatesItem) {
+ $template = [
+ "id" => $templatesItem->getId(),
+ "name" => $templatesItem->getName(),
+ "type" => TemplateManager::GetTypeTemplate($templatesItem->getMimeType())
+ ];
+ array_push($templates, $template);
+ }
+
+ return $templates;
}
/**
@@ -150,4 +174,43 @@ class TemplateController extends Controller {
$this->logger->debug("Template: deleted " . $templates[0]->getName(), ["app" => $this->appName]);
return [];
}
+
+ /**
+ * Returns the origin document key for editor
+ *
+ * @param string $fileId - file identifier
+ * @param int $x - x
+ * @param int $y - y
+ * @param bool $crop - crop
+ * @param string $mode - mode
+ *
+ * @return DataResponse|FileDisplayResponse
+ *
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ */
+ public function preview($fileId, $x = 256, $y = 256, $crop = false, $mode = IPreview::MODE_FILL) {
+ if (empty($fileId) || $x === 0 || $y === 0) {
+ return new DataResponse([], Http::STATUS_BAD_REQUEST);
+ }
+
+ $template = TemplateManager::GetTemplate($fileId);
+ if (empty($template)) {
+ $this->logger->error("Template not found: $fileId", ["app" => $this->appName]);
+ return new DataResponse([], Http::STATUS_NOT_FOUND);
+ }
+
+ try {
+ $f = $this->preview->getPreview($template, $x, $y, $crop, $mode);
+ $response = new FileDisplayResponse($f, Http::STATUS_OK, ["Content-Type" => $f->getMimeType()]);
+ $response->cacheFor(3600 * 24);
+
+ return $response;
+ } catch (NotFoundException $e) {
+ return new DataResponse([], Http::STATUS_NOT_FOUND);
+ } catch (\InvalidArgumentException $e) {
+ return new DataResponse([], Http::STATUS_BAD_REQUEST);
+ }
+
+ }
} \ No newline at end of file