Browse Source

fix: Hide "Create templates folder" option if templates are disabled in configuration

When both `skeletondirectory` and `templatedirectory` are set to empty
strings in configuration, templates folder creation should be disabled
and no Create templates folder option should be present
in new folder menu.

Related: https://github.com/nextcloud/server/issues/39266
Related: https://github.com/nextcloud/server/issues/46455
Author-Change-Id: IB#1156403

Signed-off-by: Pawel Boguslawski <pawel.boguslawski@ib.pl>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
pull/50464/head
Pawel Boguslawski 9 months ago
committed by Andy Scherzinger
parent
commit
c7bcfbf864
  1. 1
      apps/files/lib/Controller/ViewController.php
  2. 6
      apps/files/src/newMenu/newTemplatesFolder.ts
  3. 13
      config/config.sample.php

1
apps/files/lib/Controller/ViewController.php

@ -194,6 +194,7 @@ class ViewController extends Controller {
$this->eventDispatcher->dispatchTyped(new LoadViewer());
}
$this->initialState->provideInitialState('templates_enabled', ($this->config->getSystemValueString('skeletondirectory', '') !== '') || ($this->config->getSystemValueString('templatedirectory', '') !== ''));
$this->initialState->provideInitialState('templates_path', $this->templateManager->hasTemplateDirectory() ? $this->templateManager->getTemplatePath() : false);
$this->initialState->provideInitialState('templates', $this->templateManager->listCreators());

6
apps/files/src/newMenu/newTemplatesFolder.ts

@ -17,7 +17,9 @@ import PlusSvg from '@mdi/svg/svg/plus.svg?raw'
import axios from '@nextcloud/axios'
import logger from '../logger.ts'
const templatesEnabled = loadState<boolean>('files', 'templates_enabled', true)
let templatesPath = loadState<string|false>('files', 'templates_path', false)
logger.debug('Templates folder enabled', { templatesEnabled })
logger.debug('Initial templates folder', { templatesPath })
/**
@ -57,8 +59,8 @@ export const entry = {
iconSvgInline: PlusSvg,
order: 30,
enabled(context: Folder): boolean {
// Templates folder already initialized
if (templatesPath) {
// Templates disabled or templates folder already initialized
if (!templatesEnabled || templatesPath) {
return false
}
// Allow creation on your own folders only

13
config/config.sample.php

@ -288,8 +288,9 @@ $CONFIG = [
/**
* The directory where the skeleton files are located. These files will be
* copied to the data directory of new users. Leave empty to not copy any
* skeleton files.
* copied to the data directory of new users. Set empty string to not copy any
* skeleton files. If unset and templatedirectory is empty string, shipped
* templates will be used to create a template directory for the user.
* ``{lang}`` can be used as a placeholder for the language of the user.
* If the directory does not exist, it falls back to non dialect (from ``de_DE``
* to ``de``). If that does not exist either, it falls back to ``default``
@ -298,18 +299,16 @@ $CONFIG = [
*/
'skeletondirectory' => '/path/to/nextcloud/core/skeleton',
/**
* The directory where the template files are located. These files will be
* copied to the template directory of new users. Leave empty to not copy any
* copied to the template directory of new users. Set empty string to not copy any
* template files.
* ``{lang}`` can be used as a placeholder for the language of the user.
* If the directory does not exist, it falls back to non dialect (from ``de_DE``
* to ``de``). If that does not exist either, it falls back to ``default``
*
* If this is not set creating a template directory will only happen if no custom
* ``skeletondirectory`` is defined, otherwise the shipped templates will be used
* to create a template directory for the user.
* To disable creating a template directory, set both skeletondirectory and
* templatedirectory to empty strings.
*/
'templatedirectory' => '/path/to/nextcloud/templates',

Loading…
Cancel
Save