Merge pull request #25377 from nextcloud/bugfix/noid/template-skeleton

Fix initializing the template directory on first login
This commit is contained in:
Roeland Jago Douma 2021-01-29 13:19:05 +01:00 committed by GitHub
commit 13c7a92789
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 4 deletions

View File

@ -28,6 +28,7 @@ namespace OC\Files\Template;
use OC\AppFramework\Bootstrap\Coordinator; use OC\AppFramework\Bootstrap\Coordinator;
use OC\Files\Cache\Scanner; use OC\Files\Cache\Scanner;
use OC\Files\Filesystem;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Folder; use OCP\Files\Folder;
use OCP\Files\File; use OCP\Files\File;
@ -44,6 +45,7 @@ use OCP\Files\Template\TemplateFileCreator;
use OCP\IConfig; use OCP\IConfig;
use OCP\IPreview; use OCP\IPreview;
use OCP\IServerContainer; use OCP\IServerContainer;
use OCP\IUserManager;
use OCP\IUserSession; use OCP\IUserSession;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -58,6 +60,7 @@ class TemplateManager implements ITemplateManager {
private $serverContainer; private $serverContainer;
private $eventDispatcher; private $eventDispatcher;
private $rootFolder; private $rootFolder;
private $userManager;
private $previewManager; private $previewManager;
private $config; private $config;
private $l10n; private $l10n;
@ -73,6 +76,7 @@ class TemplateManager implements ITemplateManager {
Coordinator $coordinator, Coordinator $coordinator,
IRootFolder $rootFolder, IRootFolder $rootFolder,
IUserSession $userSession, IUserSession $userSession,
IUserManager $userManager,
IPreview $previewManager, IPreview $previewManager,
IConfig $config, IConfig $config,
IFactory $l10nFactory, IFactory $l10nFactory,
@ -82,6 +86,7 @@ class TemplateManager implements ITemplateManager {
$this->eventDispatcher = $eventDispatcher; $this->eventDispatcher = $eventDispatcher;
$this->bootstrapCoordinator = $coordinator; $this->bootstrapCoordinator = $coordinator;
$this->rootFolder = $rootFolder; $this->rootFolder = $rootFolder;
$this->userManager = $userManager;
$this->previewManager = $previewManager; $this->previewManager = $previewManager;
$this->config = $config; $this->config = $config;
$this->l10nFactory = $l10nFactory; $this->l10nFactory = $l10nFactory;
@ -258,7 +263,7 @@ class TemplateManager implements ITemplateManager {
$skeletonTemplatePath = $this->config->getSystemValue('templatedirectory', $defaultTemplateDirectory); $skeletonTemplatePath = $this->config->getSystemValue('templatedirectory', $defaultTemplateDirectory);
$isDefaultSkeleton = $skeletonPath === $defaultSkeletonDirectory; $isDefaultSkeleton = $skeletonPath === $defaultSkeletonDirectory;
$isDefaultTemplates = $skeletonTemplatePath === $defaultTemplateDirectory; $isDefaultTemplates = $skeletonTemplatePath === $defaultTemplateDirectory;
$userLang = $this->l10nFactory->getUserLanguage(); $userLang = $this->l10nFactory->getUserLanguage($this->userManager->get($this->userId));
try { try {
$l10n = $this->l10nFactory->get('lib', $userLang); $l10n = $this->l10nFactory->get('lib', $userLang);
@ -272,7 +277,7 @@ class TemplateManager implements ITemplateManager {
if (!$userFolder->nodeExists('Templates')) { if (!$userFolder->nodeExists('Templates')) {
return ''; return '';
} }
$newPath = $userFolder->getPath() . '/' . $userTemplatePath; $newPath = Filesystem::normalizePath($userFolder->getPath() . '/' . $userTemplatePath);
if ($newPath !== $userFolder->get('Templates')->getPath()) { if ($newPath !== $userFolder->get('Templates')->getPath()) {
$userFolder->get('Templates')->move($newPath); $userFolder->get('Templates')->move($newPath);
} }
@ -303,7 +308,7 @@ class TemplateManager implements ITemplateManager {
$localizedSkeletonTemplatePath = $this->getLocalizedTemplatePath($skeletonTemplatePath, $userLang); $localizedSkeletonTemplatePath = $this->getLocalizedTemplatePath($skeletonTemplatePath, $userLang);
if (!empty($localizedSkeletonTemplatePath) && file_exists($localizedSkeletonTemplatePath)) { if (!empty($localizedSkeletonTemplatePath) && file_exists($localizedSkeletonTemplatePath)) {
\OC_Util::copyr($localizedSkeletonTemplatePath, $folder); \OC_Util::copyr($localizedSkeletonTemplatePath, $folder);
$userFolder->getStorage()->getScanner()->scan($userTemplatePath, Scanner::SCAN_RECURSIVE); $userFolder->getStorage()->getScanner()->scan($folder->getInternalPath(), Scanner::SCAN_RECURSIVE);
$this->setTemplatePath($userTemplatePath); $this->setTemplatePath($userTemplatePath);
return $userTemplatePath; return $userTemplatePath;
} }
@ -313,7 +318,7 @@ class TemplateManager implements ITemplateManager {
$localizedSkeletonPath = $this->getLocalizedTemplatePath($skeletonPath . '/Templates', $userLang); $localizedSkeletonPath = $this->getLocalizedTemplatePath($skeletonPath . '/Templates', $userLang);
if (!empty($localizedSkeletonPath) && file_exists($localizedSkeletonPath)) { if (!empty($localizedSkeletonPath) && file_exists($localizedSkeletonPath)) {
\OC_Util::copyr($localizedSkeletonPath, $folder); \OC_Util::copyr($localizedSkeletonPath, $folder);
$userFolder->getStorage()->getScanner()->scan($userTemplatePath, Scanner::SCAN_RECURSIVE); $userFolder->getStorage()->getScanner()->scan($folder->getInternalPath(), Scanner::SCAN_RECURSIVE);
$this->setTemplatePath($userTemplatePath); $this->setTemplatePath($userTemplatePath);
return $userTemplatePath; return $userTemplatePath;
} }