diff --git a/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs b/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs index 4e897ce685..5181ee68df 100644 --- a/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs +++ b/src/NzbDrone.Core/Annotations/FieldDefinitionAttribute.cs @@ -26,6 +26,7 @@ public enum FieldType Checkbox, Select, Path, + FilePath, Hidden, Tag, Action, diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScriptSettings.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScriptSettings.cs index 4227a10fb2..998fcd1875 100644 --- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScriptSettings.cs +++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScriptSettings.cs @@ -19,7 +19,7 @@ public class CustomScriptSettings : IProviderConfig { private static readonly CustomScriptSettingsValidator Validator = new CustomScriptSettingsValidator(); - [FieldDefinition(0, Label = "Path", Type = FieldType.Path)] + [FieldDefinition(0, Label = "Path", Type = FieldType.FilePath)] public string Path { get; set; } [FieldDefinition(1, Label = "Arguments", HelpText = "Arguments to pass to the script")] diff --git a/src/UI/.idea/misc.xml b/src/UI/.idea/misc.xml index 3e64709c06..e9e9ba1c37 100644 --- a/src/UI/.idea/misc.xml +++ b/src/UI/.idea/misc.xml @@ -3,5 +3,4 @@ - \ No newline at end of file diff --git a/src/UI/Form/FormBuilder.js b/src/UI/Form/FormBuilder.js index 53700b6144..0a47a26b67 100644 --- a/src/UI/Form/FormBuilder.js +++ b/src/UI/Form/FormBuilder.js @@ -37,7 +37,7 @@ var _fieldBuilder = function(field) { return _templateRenderer.call(field, 'Form/HiddenTemplate'); } - if (field.type === 'path') { + if (field.type === 'path' || field.type === 'filepath') { return _templateRenderer.call(field, 'Form/PathTemplate'); } @@ -49,7 +49,6 @@ var _fieldBuilder = function(field) { return _templateRenderer.call(field, 'Form/ActionTemplate'); } - return _templateRenderer.call(field, 'Form/TextboxTemplate'); }; diff --git a/src/UI/Form/PathTemplate.hbs b/src/UI/Form/PathTemplate.hbs index 1bdeba6d47..5a95305e14 100644 --- a/src/UI/Form/PathTemplate.hbs +++ b/src/UI/Form/PathTemplate.hbs @@ -2,7 +2,7 @@
- +
{{> FormHelpPartial}} diff --git a/src/UI/Mixins/AutoComplete.js b/src/UI/Mixins/AutoComplete.js index 4d1a5ad3b0..f0499d3737 100644 --- a/src/UI/Mixins/AutoComplete.js +++ b/src/UI/Mixins/AutoComplete.js @@ -23,7 +23,7 @@ $.fn.autoComplete = function(options) { name : options.resource.replace('/'), displayKey : '', source : function(filter, callback) { - var data = {}; + var data = options.data || {}; data[options.query] = filter; $.ajax({ url : window.NzbDrone.ApiRoot + options.resource, diff --git a/src/UI/Mixins/DirectoryAutoComplete.js b/src/UI/Mixins/DirectoryAutoComplete.js index 9e9d606e7d..f18ed35dec 100644 --- a/src/UI/Mixins/DirectoryAutoComplete.js +++ b/src/UI/Mixins/DirectoryAutoComplete.js @@ -1,16 +1,23 @@ var $ = require('jquery'); require('./AutoComplete'); -$.fn.directoryAutoComplete = function() { +$.fn.directoryAutoComplete = function(options) { + options = options || {}; + var query = 'path'; + var data = { + includeFiles: options.includeFiles || false + }; $(this).autoComplete({ resource : '/filesystem', query : query, + data : data, filter : function(filter, response, callback) { var matches = []; + var results = response.directories.concat(response.files); - $.each(response.directories, function(i, d) { + $.each(results, function(i, d) { if (d[query] && d[query].startsWith(filter)) { matches.push({ value : d[query] }); } diff --git a/src/UI/Mixins/FileBrowser.js b/src/UI/Mixins/FileBrowser.js index d194038f95..ddcbefabf4 100644 --- a/src/UI/Mixins/FileBrowser.js +++ b/src/UI/Mixins/FileBrowser.js @@ -8,7 +8,7 @@ $.fn.fileBrowser = function(options) { inputs.each(function() { var input = $(this); - var inputOptions = $.extend({ input : input }, options); + var inputOptions = $.extend({ input : input, showFiles: input.hasClass('x-filepath') }, options); var inputGroup = $('
'); var inputGroupButton = $(''); @@ -25,7 +25,8 @@ $.fn.fileBrowser = function(options) { button.on('click', function() { vent.trigger(vent.Commands.ShowFileBrowser, inputOptions); }); + + input.directoryAutoComplete({ includeFiles: inputOptions.showFiles }); }); - inputs.directoryAutoComplete(); };