From 6fc54ba54ca873d4be0703abc0519caca0b2022b Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 11 Jan 2023 14:39:39 +0100 Subject: [PATCH] Extend ext storage params to contain default value Extend the external storage configuration parameters definition to allow to specify a default value Signed-off-by: Vincent Petry --- apps/files_external/js/settings.js | 8 +++++ .../lib/Lib/DefinitionParameter.php | 34 ++++++++++++++++--- .../tests/DefinitionParameterTest.php | 2 ++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 5db9fe8fe52..285d4f71118 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -1021,6 +1021,14 @@ MountConfigListView.prototype = _.extend({ newElement = $(''); } + if (placeholder.defaultValue) { + if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { + newElement.find('input').prop('checked', placeholder.defaultValue); + } else { + newElement.val(placeholder.defaultValue); + } + } + if (placeholder.tooltip) { newElement.attr('title', placeholder.tooltip); } diff --git a/apps/files_external/lib/Lib/DefinitionParameter.php b/apps/files_external/lib/Lib/DefinitionParameter.php index fbfbbfd4686..440750faca8 100644 --- a/apps/files_external/lib/Lib/DefinitionParameter.php +++ b/apps/files_external/lib/Lib/DefinitionParameter.php @@ -57,13 +57,18 @@ class DefinitionParameter implements \JsonSerializable { /** @var int flags, see self::FLAG_* constants */ private $flags = self::FLAG_NONE; + /** @var mixed */ + private $defaultValue; + /** - * @param string $name - * @param string $text + * @param string $name parameter name + * @param string $text parameter description + * @param mixed $defaultValue default value */ - public function __construct($name, $text) { + public function __construct($name, $text, $defaultValue = null) { $this->name = $name; $this->text = $text; + $this->defaultValue = $defaultValue; } /** @@ -100,6 +105,22 @@ class DefinitionParameter implements \JsonSerializable { return $this; } + /** + * @return mixed default value + */ + public function getDefaultValue() { + return $this->defaultValue; + } + + /** + * @param mixed $defaultValue default value + * @return self + */ + public function setDefaultValue($defaultValue) { + $this->defaultValue = $defaultValue; + return $this; + } + /** * @return string */ @@ -171,12 +192,17 @@ class DefinitionParameter implements \JsonSerializable { * @return string */ public function jsonSerialize() { - return [ + $result = [ 'value' => $this->getText(), 'flags' => $this->getFlags(), 'type' => $this->getType(), 'tooltip' => $this->getTooltip(), ]; + $defaultValue = $this->getDefaultValue(); + if ($defaultValue) { + $result['defaultValue'] = $defaultValue; + } + return $result; } public function isOptional() { diff --git a/apps/files_external/tests/DefinitionParameterTest.php b/apps/files_external/tests/DefinitionParameterTest.php index 00df3e0aee1..72e8c013730 100644 --- a/apps/files_external/tests/DefinitionParameterTest.php +++ b/apps/files_external/tests/DefinitionParameterTest.php @@ -36,11 +36,13 @@ class DefinitionParameterTest extends \Test\TestCase { ], $param->jsonSerialize()); $param->setType(Param::VALUE_BOOLEAN); + $param->setDefaultValue(true); $this->assertEquals([ 'value' => 'bar', 'flags' => 0, 'type' => Param::VALUE_BOOLEAN, 'tooltip' => '', + 'defaultValue' => true, ], $param->jsonSerialize()); $param->setType(Param::VALUE_PASSWORD);