diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index cd2a3103eb72365656fddc715ecf7edc2883e73f..00793a614c20f5e3be668404cb84b003350e9ebe 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -181,16 +181,21 @@ $(document).ready(function() {
 		$.each(configurations, function(backend, parameters) {
 			if (backend == backendClass) {
 				$.each(parameters['configuration'], function(parameter, placeholder) {
-					if (placeholder.indexOf('*') != -1) {
-						td.append('<input type="password" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
-					} else if (placeholder.indexOf('!') != -1) {
+					var is_optional = false;
+					if (placeholder.indexOf('&') === 0) {
+						is_optional = true;
+						placeholder = placeholder.substring(1);
+					}
+					if (placeholder.indexOf('*') === 0) {
+						var class_string = is_optional ? ' class="optional"' : '';
+						td.append('<input type="password"' + class_string + ' data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
+					} else if (placeholder.indexOf('!') === 0) {
 						td.append('<label><input type="checkbox" data-parameter="'+parameter+'" />'+placeholder.substring(1)+'</label>');
-					} else if (placeholder.indexOf('&') != -1) {
-						td.append('<input type="text" class="optional" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
-					} else if (placeholder.indexOf('#') != -1) {
+					} else if (placeholder.indexOf('#') === 0) {
 						td.append('<input type="hidden" data-parameter="'+parameter+'" />');
 					} else {
-						td.append('<input type="text" data-parameter="'+parameter+'" placeholder="'+placeholder+'" />');
+						var class_string = is_optional ? ' class="optional"' : '';
+						td.append('<input type="text"' + class_string + ' data-parameter="'+parameter+'" placeholder="'+placeholder+'" />');
 					}
 				});
 				if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass.replace(/\\/g, '\\\\')).length == 1) {
diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php
index 5e84fa8a25286969b241ac21c9070564249139d5..802386663764bdacc9fc8f3ae3989ab3abd365fb 100644
--- a/apps/files_external/templates/settings.php
+++ b/apps/files_external/templates/settings.php
@@ -44,29 +44,32 @@
 						<?php if (isset($mount['options'])): ?>
 							<?php foreach ($mount['options'] as $parameter => $value): ?>
 								<?php if (isset($_['backends'][$mount['class']]['configuration'][$parameter])): ?>
-									<?php $placeholder = $_['backends'][$mount['class']]['configuration'][$parameter]; ?>
-									<?php if (strpos($placeholder, '*') !== false): ?>
+									<?php
+										$placeholder = $_['backends'][$mount['class']]['configuration'][$parameter];
+										$is_optional = FALSE;
+										if (strpos($placeholder, '&') === 0) {
+											$is_optional = TRUE;
+											$placeholder = substr($placeholder, 1);
+										}
+									?>
+									<?php if (strpos($placeholder, '*') === 0): ?>
 										<input type="password"
+											   <?php if ($is_optional): ?> class="optional"<?php endif; ?>
 											   data-parameter="<?php p($parameter); ?>"
 											   value="<?php p($value); ?>"
 											   placeholder="<?php p(substr($placeholder, 1)); ?>" />
-									<?php elseif (strpos($placeholder, '!') !== false): ?>
+									<?php elseif (strpos($placeholder, '!') === 0): ?>
 										<label><input type="checkbox"
 													  data-parameter="<?php p($parameter); ?>"
 													  <?php if ($value == 'true'): ?> checked="checked"<?php endif; ?>
 													  /><?php p(substr($placeholder, 1)); ?></label>
-									<?php elseif (strpos($placeholder, '&') !== false): ?>
-										<input type="text"
-											   class="optional"
-											   data-parameter="<?php p($parameter); ?>"
-											   value="<?php p($value); ?>"
-											   placeholder="<?php p(substr($placeholder, 1)); ?>" />
-									<?php elseif (strpos($placeholder, '#') !== false): ?>
+									<?php elseif (strpos($placeholder, '#') === 0): ?>
 										<input type="hidden"
 											   data-parameter="<?php p($parameter); ?>"
 											   value="<?php p($value); ?>" />
 									<?php else: ?>
 										<input type="text"
+											   <?php if ($is_optional): ?> class="optional"<?php endif; ?>
 											   data-parameter="<?php p($parameter); ?>"
 											   value="<?php p($value); ?>"
 											   placeholder="<?php p($placeholder); ?>" />